Главная > PHP > ICQ бот на PHP? Легко!

ICQ бот на PHP? Легко!

Привет. Вот всегда была интересна мне тема создания ICQ-ботов на PHP, и сегодня решил рассмотреть ее подробнее и поделиться с вами найденной информацией. Итак, задача: написать ICQ-бот на PHP. Что б реализовать запланированное, нам не нужно изучать протокол ICQ, а достаточно просто воспользоваться готовым РНР-классом для работы с протоколом аськи. Когда класс WebIcqLite.class.php скачан, можно приступать к первым попыткам его использовать.
Вот что дают разработчики в качестве примера использования класса:


<?php

include('WebIcqLite.class.php');

define('UIN', 111111111);

define('PASSWORD', 'password');

$icq = new WebIcqLite();

if($icq->connect(UIN, PASSWORD))
{

if(!$icq->send_message('123456789', 'Hello from php!!!'))
{
echo $icq->error;
}
else
{
echo 'Message sent';
}
$icq->disconnect();
}
else
{
echo $icq->error;
}

?>

Код довольно простой. Сначала мы определяем UIN, под которым будет работать наш Бот, а потом отправляем методом send_message сообщение на указанный номер.
Какие я заметил проблемы:
1. Версия PHP должна быть не ниже 5.2.0
2. Socket Support должен быть включен (из-за этого не смог запустить скрипт на локалхосте)
3. Если версия РНР больше 5.2.0 и Сокеты поддерживаются, а скрипт не работает, попробуйте изменить в WebIcqLite.class.php на 391 строке порт на 80, у меня заработало именно с 80 портом.
4. В ICQ6 проблема с кодировками
Если скрипт так и не заработал - почитайте форум на сайте разработчиков этого скрипта.
А те, кто все-таки заставил скрипт работать, могут наслаждаться работой Бота, хотя сейчас это просто скрипт, который отправляет на один и тот же номер аси сообщение. Предлагаю сделать его более интерактивным. Добавим нашему боту возможность реагировать на отправленные ему сообщения:

<?php

include('WebIcqLite.class.php');
define('UIN', 1111111);
define('PASSWORD', '222222');
$icq = new WebIcqLite();

if(!$icq->connect(UIN, PASSWORD))
{
echo $icq->error;
exit();
}
while($icq->is_connected())
{
$msg = $icq->read_message();
if($msg)
{
if($msg['message'] == “#code”)
{
$icq->send_message($msg['from'], “It’s command!”);
}
else
{
$icq->send_message($msg['from'], strrev($msg['message']));
}
}
flush();
sleep(1);
}
?>

Вот и все, пока наш бот в сети, мы ловим сообщения методом read_message, а дальше для примера я показал 2 варианта: если нам прислали “#code”, то отправляем “It’s command!” (пример просто комманды, которую можно реализовать), а если это простой текст - то применяем к нему функцию strrev (просто для шутки) и возвращаем отправителю.
Пример с командой я показал не просто так, потому что для бота можно реализовать очень много полезных функций. Где-то встречал бота, который управлял БД MySQL посредством определенных сообщений. Кроме того, на многих мобильных телефонах можно сейчас установить ICQ и получать готовую обработанную Ботом информацию, а не лазить по страницам и искать ее.
Кстати интересный факт заметил. На форуме разработчиков скрипта, большинство пользователей применяют его для создания Ботов, которые будут скидывать анекдоты, пытаться общаться с пользователями, у меня сразу возникли почему-то другие взгляды на применение данного Бота. Например ICQ бот на PHP может стать гибким инструментом настройки и мониторинга сервера. Ладно, это уже дело каждого, как применять данный инструмент. Потому, удачи с экспериментами!

admin PHP , , ,

  1. 15 Апрель 2008 в 19:25 | #1

    Да действительно полезная статейка спасибо.Буду пробовать!

  2. 15 Апрель 2008 в 19:46 | #2

    Спасибо! Надеюсь, информация freeware?))

  3. 16 Апрель 2008 в 02:58 | #3

    много букф спасибо было интересно)

  4. 17 Апрель 2008 в 00:30 | #4

    Как практическое решение врятли подойдет, но чисто из интереса можно. Есть же куча виндовых ботов уже…

  5. 17 Апрель 2008 в 17:59 | #5

    Чисто из интереса интересная вещь :)

    Для реальности просто функций желательно бы побольше, но хотя бот на РНР это уже что-то.

    За наводку спасибо, посмотрим.

  6. 18 Апрель 2008 в 21:51 | #6

    Думаю этот скрипт будет использован многими не в благих целях..

  7. 28 Апрель 2008 в 20:41 | #7

    это ж его на крон нужно вешать?

  8. 28 Апрель 2008 в 23:51 | #8

    Можно на крон, иначе он будет работать только на протяжении max_execution_time, которое указано в php.ini. Хотя на постоянную работу скрипт можно запустить используя SSH.

  9. 18 Май 2008 в 05:25 | #9

    иначе он будет работать только на протяжении max_execution_time

    set_time_limit(0) поможет

    Хотя на постоянную работу скрипт можно запустить используя SSH.

    Можно попробовать и так (в зависимости о того, как был собран PHP):

    system(’/path/to/php /path/to/script.php &’).

    А вообще WebIcqLite довольно глючное поделие (извиняюсь за жаргон). Очень быстрым и простым решением оказалось поставить Jabber-сервер и настроить соответствующие транспорты (PyICQt, PyMSNt, PyYIMt, PyAIMt), и далее по протоколу XMPP можно было слать сообщения в любую сеть, для которой настроен шлюз. Просто, быстро и удобно :-)

  10. 24 Июль 2008 в 21:03 | #10

    А по мне лучше BASICQ юзать, если надо тупо чтото ответить на какой-то строгий запрос. А если чтото помощьнее, то это не пойдет…

  11. 23 Август 2008 в 15:49 | #11

    Привет!
    Спасибо за инфу. Штука интересня с командами!!!
    Напишите пжл подробней о времени работы робота. Как сделать его неограниченым?

  12. 30 Ноябрь 2008 в 17:27 | #12

    А я вот своего бота создал! хачу представить на вид зрителей так сказать! номер 7508475

    все предложения писать на 4609319

  13. 10 Январь 2009 в 13:34 | #13

    А я вот еще подумал, его ведь можно использовать как ботов на сайтах, где есть общение… Вот пишешь ты кому-то сообщение, а он отвечает.. А это бот :((

    Статья хорошая, и возможности хорошие открываются в использовании. Как по мне - лучше в сервисе его использовать.

    P.S. Спасибо за статью! Молодец.

  14. Konstantine
    4 Февраль 2009 в 07:12 | #14

    На ICQ серверах произошли некоторые изменения. Пострадали многие ICQ-клиенты и эта версия бота тоже не работает. Кто-нибудь знает как заставить его работать?

  15. 4 Февраль 2009 в 11:02 | #15

    AOL сейчас творит с протоколом странные вещи. Хотя говорят что протокол не трогают, а просто прикрывают доступ альтернативным клиентам со стран СНГ и прокси решает все вопросы. Хотя надо проверять.

  16. 4 Февраль 2009 в 22:00 | #16

    Вот мой бот 702080 оцените,
    кроме этих возможностей он предоставляет инфу о сервере на котором запущен (нагрузка, свободное пространство, состояние БД, используемая память, там еще куча…) и может выполнять шелл команды, но это для строго ограниченного набора админ-уинов и после того как авторизируешься )))
    короче заморочка еще та… но зато онлайн форевер )))

  17. Konstantine
    10 Февраль 2009 в 13:08 | #17

    Так может кто-нибудь подскажет как сделать работающего бота. А то, все варианты, доступные для скачивания и инете не работают.

  18. Роман
    18 Февраль 2009 в 22:09 | #18

    У меня щас работает всё, кроме WebIcqPro

  19. Артур
    19 Февраль 2009 в 16:40 | #19

    привет всем!я никак не могу понять!как же запустить бота??? ну есть у меня php с настройками.а как включить то бота?чтоб он был онлайн…чем надо запускать? ну то есть у меня файл бот.php (как например бот.exe) а что делать дальше? :(

  20. 25 Июль 2009 в 04:34 | #20

    Вообще класс icq интересная фишка. Я планирую заняться её сразу же после того как закончу переход на другую кмс на сайте))) В остальном ничего не скажу, планирую сделать его таким какой мне подойдет под сайт, так чтобы был плюс с поситителей)))

  21. Single
    30 Июль 2009 в 14:22 | #21

    да люди блин, протоко обновился, всю инфо читайте WebIcqPro тут

  22. 6 Август 2009 в 16:16 | #22

    Ну не знаю, у меня как-то работал, еще в 2008, щас вообще все заглохло

  23. 22 Декабрь 2009 в 23:13 | #23

    Кому интересно, еще тут про ботов много чего есть:
    http://www.nakodim.ru/index.php?page=bots

  1. Пока что нет уведомлений.