SP[SMF2.0] - бот для чата

Автор recived, 13 сентября 2011, 22:19:25

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

recived

Здравствуй дорогой друг!!!(с). Вообщим дошли руки все таки накатать пост, как очень просто добавить бота в чат на Simple Portal, который будет тупо отвечать когда к нему пойдет обращение.  Многие из вас наверно знают что такое ирц сети и частенько тусовались канал-боты, выполняющие различные функции. Например расказывали анекдоты, говорили погоду, проводили викторины.  Базу я вам дам, а вы уже наверняка сами сможете придумать как его использовать и в каких целях. 
И так приступим.  За обработку и залив в бд сообщений в чате отвечает функция (function sportal_create_shout($shoutbox, $shout)) в файле Sources/Subs-Portal.php. Нам ли достаточно перехватить некий текст сообщения и выполнить условие.

В свой чат я поселил бота под ником Йожык. а именно если пользователь пишет в чат йожык превед, йожык ему отвечает, превед медведко! Либо если писать в чате просто йожык, то бот отвечает случайно фразой из файла.

Случайная фраза -  Как это сделано:


if($shout == 'йожык') { //Если в чате кто то написал одно слово йожык
$num_of_mes = 1;
$messages_array = file("iozhik.txt");  //текст со случайными фразами
srand ((double) microtime() * 10000000);
$rand_keys = array_rand($messages_array,$num_of_mes);
$messages_array[$rand_keys] = trim($messages_array[$rand_keys]);
    $shout = $messages_array[$rand_keys];
             $smcFunc['db_insert']('',
'{db_prefix}sp_shouts',
array(
'id_shoutbox' => 'int',
'id_member' => 'int',
'member_name' => 'string',
'log_time' => 'int',
'body' => 'string',
),
array(
$shoutbox['id'],
0,
'йожык',
time(),
$shout,
),
array('id_shout')
);
}


Йожык привет:


if($shout == 'йожык привет') {
    $shout = 'Превед медведко!!!';
             $smcFunc['db_insert']('',
      '{db_prefix}sp_shouts',
array(
'id_shoutbox' => 'int',
'id_member' => 'int',
'member_name' => 'string',
'log_time' => 'int',
'body' => 'string',
),
array(
$shoutbox['id'],
0,
'йожык',
time(),
$shout,
),
array('id_shout')
);
}


Ну и все это добавляется после функции
$smcFunc['db_insert']('',

'{db_prefix}sp_shouts',

array(

'id_shoutbox' => 'int',

'id_member' => 'int',

'member_name' => 'string',

'log_time' => 'int',

'body' => 'string',

),

array(

$shoutbox['id'],

$user_info['id'],

$user_info['name'],

time(),

$shout,

),

array('id_shout')

);


Вообщим ни чего сложного как вы видите.  Буду рад кто кинет сюда для бота интересные вещи и решения, самому пока его доработать некогда. Вообщим кому помог и понравилося апаем карму  ;)

Jacket

Слушай, а ты мог бы потом сделать эту фишку под первую линейку?

Ну и как интересную фичу
В аське есть бот такой, пишешь ему слово, он это слово вставляет в заранее готовое предложение

Например пишешь ему Пельмень, а он в ответ тебе - Лучше унитазов нет, чем наш лучший друг Пельмень. Ну и в таком духе

recived

Под первой линейкой не смотрел что к чему, но думаю не особо отличается.  Я ток под 2.0 делаю на своем. Про аськин бот думаю он реализован на регулярках, чесно пока времени нет заниматься ими, но в планах стоить использовать их.