Mendel
Гуру форума
- Регистрация
- 27 Янв 2008
- Сообщения
- 215
- Реакции
- 65
- Автор темы
- #1
Есть много классов, библиотек для создания icq-ботов. но как правило для их освоения требуется какоето время. А так хочется сделать HelloWorld за пять минут. Для этих целей я написам маленький врапер над одной из больших и толстых библиотек.
Итак бот своими руками:
1 - идем на Для просмотра ссылки Войдиили Зарегистрируйся и регистрируем себе аську.
2 - качаем файл inc.php из вложения в этом сообщении.
3 - создаем скрипт hello.php (см. листинг ниже)
4 - заливаем оба файла на хостинг или в папку где они будут лежать и запускаем скрипт hello.php на исполнение. я это делаю командой "php5 hello.php &" но у вас может быть иначе. Напомню что & означает вызов в фоновом режиме. Также вдруг ктото не помнит - выходя из SSH не забудьте закрыть сессию logout-ом, ибо иначе ваша фоновая задача может погибнуть.
Листинг №1:
Описанный бот в ответ на любое сообщение пишет "Hello World!".
Как это рааботает:
1 - константами объявляем UIN бота и пароль, вызываем библиотечку.
2 - в библиотеке прописаны все команды необходимые для логина, удаление всех офлайн-сообщений и тп. также в библиотеке выполняется цикл проверяющий не пришло ли сообщение, и если пришло то вызывает функцию icq($from,$text) где $from - это UIN написавшего нам сообщение, а $text это собственно то что он нам написал.
Цикл заканчивается в случае если была выполнена функция icq_stop() ну или при принудительном окончании скрипта. (например CTR-C, kill, killall и тп).
Также есть функция icq_say($to,$text) при вызове которой на UIN $to посылается сообщение $text.
3 - в нашем скрипте объявляется функция icq($from,$text) которая собственно является "сердцем" скрипта потому что здесь то мы и описываем всю логику. В нашем простейщем случае мы просто отправляем тому кто написал нам сообщение "Hello World!".
Листинг №2:
Этот скрипт просто "отзеркаливает" то что ему написали. Но если сообщение пришло от админа, и это сообщение "die" то работа скрипта прекращается.
Ну и в заключение приведу "заготовку" для более реального бота. Я думаю достаточно очевидно что он делает и как.
Листинг №3:
Итак бот своими руками:
1 - идем на Для просмотра ссылки Войди
2 - качаем файл inc.php из вложения в этом сообщении.
3 - создаем скрипт hello.php (см. листинг ниже)
4 - заливаем оба файла на хостинг или в папку где они будут лежать и запускаем скрипт hello.php на исполнение. я это делаю командой "php5 hello.php &" но у вас может быть иначе. Напомню что & означает вызов в фоновом режиме. Также вдруг ктото не помнит - выходя из SSH не забудьте закрыть сессию logout-ом, ибо иначе ваша фоновая задача может погибнуть.
Листинг №1:
PHP:
<?
// ******************************************************
// объявим UIN и пароль нашего бота. ***
// ******************************************************
DEFINE('ICQ_UIN','123456789'); // Номер ICQ бота *
DEFINE('ICQ_PASS','пароль'); // Пароль от уина ICQ бота *
// ******************************************************
require_once('inc.php'); // вызовем библиотеку ****
// ******************************************************
// ******************************************************
// основная функция - вызывается если пришло сообщение **
// ******************************************************
function icq($from,$req)
{
icq_say($from,'Hello world!');
}
?>
Описанный бот в ответ на любое сообщение пишет "Hello World!".
Как это рааботает:
1 - константами объявляем UIN бота и пароль, вызываем библиотечку.
2 - в библиотеке прописаны все команды необходимые для логина, удаление всех офлайн-сообщений и тп. также в библиотеке выполняется цикл проверяющий не пришло ли сообщение, и если пришло то вызывает функцию icq($from,$text) где $from - это UIN написавшего нам сообщение, а $text это собственно то что он нам написал.
Цикл заканчивается в случае если была выполнена функция icq_stop() ну или при принудительном окончании скрипта. (например CTR-C, kill, killall и тп).
Также есть функция icq_say($to,$text) при вызове которой на UIN $to посылается сообщение $text.
3 - в нашем скрипте объявляется функция icq($from,$text) которая собственно является "сердцем" скрипта потому что здесь то мы и описываем всю логику. В нашем простейщем случае мы просто отправляем тому кто написал нам сообщение "Hello World!".
Листинг №2:
PHP:
<?
// ******************************************************
// объявим UIN и пароль нашего бота. ***
// ******************************************************
DEFINE('ICQ_UIN','123456789'); // Номер ICQ бота *
DEFINE('ICQ_PASS','пароль'); // Пароль от уина ICQ бота *
DEFINE('ADMIN','400480124'); // UIN админа ***
// ******************************************************
require_once('inc.php'); // вызовем библиотеку ****
// ******************************************************
// ******************************************************
// основная функция - вызывается если пришло сообщение **
// ******************************************************
function icq($from,$req)
{
if($from==ADMIN AND $req=='die')
{
icq_say($from,'Чао!');
icq_stop();
}
else
{
icq_say($from,$req);
}
}
?>
Этот скрипт просто "отзеркаливает" то что ему написали. Но если сообщение пришло от админа, и это сообщение "die" то работа скрипта прекращается.
Ну и в заключение приведу "заготовку" для более реального бота. Я думаю достаточно очевидно что он делает и как.
Листинг №3:
PHP:
<?
// ******************************************************
// объявим UIN и пароль нашего бота. ***
// ******************************************************
DEFINE('ICQ_UIN','123456789'); // Номер ICQ бота *
DEFINE('ICQ_PASS','пароль'); // Пароль от уина ICQ бота *
DEFINE('ADMIN','400480124'); // UIN админа ***
// ******************************************************
require_once('inc.php'); // вызовем библиотеку ****
// ******************************************************
// ******************************************************
// основная функция - вызывается если пришло сообщение **
// ******************************************************
function icq($from,$req)
{
switch($req)
{
case 'help':
{
icq_say($from,'допустимые команды это one, two, bye и help');
}
break;
case 'one':
{
icq_say($from,'один');
}
break;
case 'two':
{
icq_say($from,'два');
}
break;
case 'bye':
{
if($from==ADMIN)
{
icq_say($from,'Чао!');
icq_stop();
}
else
{
icq_say($from,'у вас нет прав меня отключить');
}
}
break;
default:
{
icq_say($from,'извините, но я не знаю такой команты. для помощи напишите help');
}
break;
}
}
?>