Здравствуйте!!! С уважением к вам Александр Сазанов!
Помогите создать бота, а то знакомый разработчик, начал мне помогать, и забросил, по семейным обстоятельствам. если можно то сделать три в одном так например скажем, т.у. говорун, музыка, ютуб, ну и как ниже указано анекдоты, заранее благодарю!
API внешнего бота
Реализовать внешнего бота можно на любом удобном языке программирования, необходимо только получить данные от сервера Сервиса. Данные на внешний сервер передаются методом POST через следующие переменные:
event — событие, которое произвел пользователь;
chatid — ID чата в системе August4u;
userid — ID сессии пользователя;
profile — номер профайла пользователя, если он зарегистрирован;
nick — ник пользователя;
mess — сообщение пользователя;
param — битовый набор флагов, определяющих свойства пользователя (пол, личка, невидимость и т.д.)
используется переменная param, в которой содержатся свойства пользователя.
Всего внешний бот реагирует на три события от пользователя и на одно событие для запуска заданий по расписанию, соответственно, переменная event может принимать одно из значений:
enter — пользователь вошел в чат;
quit — пользователь покинул чат;
mess — пользователь отправил сообщение;
cmd — запуск задания по расписанию.
Для событий enter и quit не передаются сообщения, а для события quit также еще не передается и ник пользователя. Для события cmd имя команды передается в переменной mess.
Т.к. событие cmd инициируется не пользователем, то переменные profile, nick и param не содержат никаких значений, а переменная userid используется особым образом — в ней передается битовый набор комнат, в которых должно отображаться сообщение бота.
Результатом работы внешнего бота должна быть строка в кодировке windows-1251, которая будет выведена в окно чата от имени бота.
Шаблон внешнего бота на PHP
<?
define ('USER_SEX', 0x03);
define ('USER_BIRTHDAY', 0x04);
define ('USER_NEWBIE', 0x08);
define ('USER_PRIVATE', 0x10);
define ('USER_INVISIBLE', 0x20);
define ('USER_ADMIN', 0x40);
$Event = $_POST ['event'];
$ChatID = intVal ($_POST ['chatid']);
$UserID = intVal ($_POST ['userid']);
$Profile = intVal ($_POST ['profile']);
$Nick = $_POST ['nick'];
$Mess = $_POST ['mess'];
$Param = intVal ($_POST ['param']);
$Sex = $Param & USER_SEX; // получить пол пользователя: 0 = не определено, 1 = мужской, 2 = женский
$Birthday = $Param & USER_BIRTHDAY; // у пользователя день рождения
$Newbie = $Param & USER_NEWBIE; // пользователь зашел в чат с регистрацией первый раз
$Private = $Param & USER_PRIVATE; // пользователь отправил сообщение в личку
$Invisible = $Param & USER_INVISIBLE; // пользователь находится в невидимках
$Admin = $Param & USER_ADMIN; // пользователь является администратором
switch ($Event) {
case 'enter':
// обработчик входа пользователя в чат
...
break;
case 'quit':
// обработчик выхода пользователя из чата
...
break;
case 'mess':
// обработчик сообщения от пользователя
...
break;
}
?>
Пример использования задания по расписанию для вывода анекдота
<?
define ('USER_SEX', 0x03);
define ('USER_BIRTHDAY', 0x04);
define ('USER_NEWBIE', 0x08);
define ('USER_PRIVATE', 0x10);
define ('USER_INVISIBLE', 0x20);
define ('USER_ADMIN', 0x40);
$Event = $_POST ['event'];
$ChatID = intVal ($_POST ['chatid']);
$UserID = intVal ($_POST ['userid']);
$Profile = intVal ($_POST ['profile']);
$Nick = $_POST ['nick'];
$Mess = $_POST ['mess'];
$Param = intVal ($_POST ['param']);
switch ($Event) {
case 'enter':
break;
case 'quit':
break;
case 'mess':
break;
case 'cmd':
// имя задания в настройках бота anekdot
if ($_POST ['mess'] == 'anekdot') {
include "include/anekdot.inc.php";
$a = get_anekdot ();
print "$a";
exit;
}
break;
}
?>
Примерно пытался что то добавить ко второму скрипту ВОТ ПРИМЕР
<?php
$ARTICLE = array (
'http://lolanekdot.ru/anekdoty-pro-muzha/
'http://lolanekdot.ru/anekdoty-pro-muzhikov-parney/
'http://lolanekdot.ru/anekdoty-pro-zhenu/
'http://lolanekdot.ru/anekdoty-pro-zhenschin-devushek/
'http://lolanekdot.ru/anekdoty-pro-seks-pro-eto/
'http://lolanekdot.ru/milye-anekdoty/
'http://lolanekdot.ru/anekdoty-pro-papu-mamu/
'http://lolanekdot.ru/anekdoty-pro-syna-dochku/
'http://lolanekdot.ru/anekdoty-pro-ohotu-i-rybalku/
'http://lolanekdot.ru/anekdoty-pro-armiyu-soldat-voynu/
'http://lolanekdot.ru/anekdoty-pro-politiku/
'http://lolanekdot.ru/anekdoty-pro-rabotu/
'http://lolanekdot.ru/anekdoty-pro-sport/
'http://lolanekdot.ru/anekdoty-pro-poruchika-rzhevskogo/
'http://lolanekdot.ru/anekdoty-pro-vovochku/
'http://lolanekdot.ru/anekdoty-pro-shtirlica-myullera/
'http://lolanekdot.ru/anekdot-pro-sherlo ... a-vatsona/
'http://lolanekdot.ru/anekdoty-pro-zolot ... ku-dzhina/
'http://lolanekdot.ru/anekdoty-pro-petku ... vanovicha/
'http://lolanekdot.ru/anekdoty-pro-vinni ... pyatachka/
'http://lolanekdot.ru/anekdoty-gospod-bog/
'http://lolanekdot.ru/anekdoty-pro-teschu/
'http://lolanekdot.ru/anekdoty-pro-babok/
'http://lolanekdot.ru/anekdoty-pro-policiyu-i-miliciyu/
'http://lolanekdot.ru/anekdoty-otkroyte/
'http://lolanekdot.ru/anekdoty-pro-gai-i-gibdd/
'http://lolanekdot.ru/anekdoty-pro-narkomanov/
'http://lolanekdot.ru/anekdoty-pro-vrachey/
'http://lolanekdot.ru/anekdoty-pro-uchiteley/
'http://lolanekdot.ru/anekdoty-pro-shkolu/
'http://lolanekdot.ru/anekdoty-pro-uchenyh/
'http://lolanekdot.ru/anekdoty-pro-studentov/
'http://lolanekdot.ru/anekdoty-pro-sessiyu-i-ekzameny/
'http://lolanekdot.ru/anekdoty-pro-chukchu/
'http://lolanekdot.ru/anekdoty-pro-evreev/
'http://lolanekdot.ru/anekdoty-pro-estoncev/
'http://lolanekdot.ru/anekdoty-pro-moldavan/
'http://lolanekdot.ru/anekdoty-pro-progr ... isadminov/
'http://lolanekdot.ru/anekdoty-pro-kompyuter/
'http://lolanekdot.ru/anekdoty-pro-internet/
'http://lolanekdot.ru/anekdoty-pro-windows/
'http://lolanekdot.ru/anekdoty-pro-futbo ... ne-pahnet/
'http://lolanekdot.ru/anekdoty-pro-apteku/
'http://lolanekdot.ru/anekdoty-neizvestno-pro-chto/
);
function get_anekdot () {
global $ARTICLE;
$a = mt_rand (0, count ($ARTICLE) - 1);
$c = get_html ($ARTICLE [$a]);
$n = preg_match ("`.+?(\d+)`sm", $c, $r);
if ($n) {
$p = mt_rand (1, +$r [1]);
if ($p > 1)
$c = get_html ($ARTICLE [$a], $p);
}
$n = preg_match_all ("`\s*(.+?)`sm", $c, $r);
if ($n) {
$an = $r [1];
$an = $an [mt_rand (0, count ($an) - 1)];
$an = preg_replace ("``", "\n", $an);
$an = str_replace (" ", " ", $an);
return str_replace ("\n", "", preg_replace ("`\n\b`sm", " ", trim (strip_tags ($an))));
}
return null;
}
function get_html ( $URL, $p = 0 ) {
$curl = curl_init ($p ? "$URL/page/$p/" : $URL);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
$r = curl_exec ($curl);
curl_close ($curl);
return $r;
}
?>
С уважением,
Александр Сазанов
aleksandrsaz@mail.ru
Бот PHP API
Модераторы: Vl@d1m1r, Lorem Ipsum, Atlas
Правила форума
----
----
- DeaDRoMeO
- Старожил Форума
- Сообщения: 16763
- Стаж: 13 лет 2 месяца
- Откуда: Витебск
- Контактная информация:
Бот PHP API
Вы уж извините, но тут обычная поддержка форумов, а такие специфичные задачи мало кто решит
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!