Бот PHP API

Форум без пользователей, как машина без колес. Данный подфорум призван помочь ответить вам на вопросы - форум? Чем привлечь пользователей ? Как продвинуть свой ресурс в поисковиках ?
Обсуждаем все, что с этим связано, делимся секретами и решаем вместе проблемы раскрутки.

Модераторы: Vl@d1m1r, Lorem Ipsum, Atlas

Правила форума
----
Ответить
AleksandrSaz
Заглянул на огонек
Заглянул на огонек
Сообщения: 1
Стаж: 6 лет 4 месяца

Бот PHP API

Сообщение AleksandrSaz »

Здравствуйте!!! С уважением к вам Александр Сазанов!
Помогите создать бота, а то знакомый разработчик, начал мне помогать, и забросил, по семейным обстоятельствам. если можно то сделать три в одном так например скажем, т.у. говорун, музыка, ютуб, ну и как ниже указано анекдоты, заранее благодарю!

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
#1
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Бот PHP API

Сообщение DeaDRoMeO »

Вы уж извините, но тут обычная поддержка форумов, а такие специфичные задачи мало кто решит
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#2
Ответить