Вот отличный бот
Это копипаст, желающие могут по гуглить, а я люблю чтобы всё в одной теме было.
Пишем ICQ бота на РНР и компилируем в ЕХЕ !
ICQ bot
Всем привет!
Сначала идём сюда:
Для просмотра ссылки Войди или Зарегистрируйся и качаем эту прогу. Это - компилятор РНР в ЕХЕ.
1) Копируем её в папку C:\compile\ (не обязательно сюда, но так удобнее)
2) Создаём в этой папке файл compile.bat и пишем в нём:
bamcompile bot.bcp
Потом создаём файл bot.bcp и пишем в нём:
mainfile main.php
embed main.php
embed clas.php
icon icq.ico
extension php_sockets.dll
windowed
compress
3) Кидаем любой значёк с названием icq.ico в эту папку
4) Находим в примерах в архиве с прогой файлик php_sockets.dll и копируем его тоже в эту папку
Подготовка эта вся. Теперь сам скрипт (автор не - я ). Создаём сначала файл config.ini - в нём конфигурация бота. Пишем в нём:
PHP:
<?
/*----------------------------------------*\
Конфигурация EUGEN's ICQ BOT
\*----------------------------------------*/
$admins = "xxxxxxxx,xxxxxxxxx"; //Номера админов через запятую (без пробелов!!!).
$icq_number = "xxxxxxxxx"; //Номер бота
$icq_pass = "PaSsWoRd"; //Пароль
$icq_std_status = "ONLINE"; //Статус. Доступно: ONLINE,AWAY,NA,INVISIBLE,FREE4CHAT
$cfg = "words.dat"; //Файл БД с фразами
$sep = "="; //Разделитель строк в файле БД (запрос-ответ)
$reconnect = "1"; //Переподключаться при разрыве связи
$times = "30"; //...сколько раз?
$botname = "TEM ICQ Bot"; //Имя бота
?>
Потом - func.ini - дополнительные функции бота. Как стандартные - предлагаю !ping и !traceroute. Прошу обратить внимание, что в этом файле писать не надо. Он не инклудом вставляется.
Функции:
PHP код:
PHP:
/*----------------------------------------*\
Дополнительные функции или
произвольный РНР код (В ЦИКЛЕ!)
\*----------------------------------------*/
/*-------------------------------------------------------------*\
ПЕРЕМЕННЫЕ И ФУНКЦИИ:
$uin - номер, с которого пришло сообщение
$text - текст сообщения
$cmd - массив со всеми частями сообщения,
разделёнными пробелом. Пример:
Сообщение "Привет! Как дела?"
будет выглядеть так:
array("Привет!","Как","дела?")
Полезно для добавления команд боту
+ все переменные файла config.ini
$ad - массив с номерами админов
функция admin(uin) - имеет значение true, если uin равен
одному из номеров в списке администраторов.
Функция $icq->message_send(uin, message) отправляет сообщение.
ДОБАВЛЯТЬ НЕ НАДО!!!
\*-------------------------------------------------------------*/
//ping
if (strtolower($cmd[0]) == "!ping" && isset($cmd[1])) {
$ping=shell_exec("ping ".$cmd[1]);
$ping=convert_cyr_string ($ping, "a", "w");
$icq->message_send($uin, $ping);
}
//traceroute
if (strtolower($cmd[0]) == "!traceroute" && isset($cmd[1])) {
$tracert=shell_exec("tracert ".$cmd[1]);
$tracert=convert_cyr_string ($tracert, "a", "w");
$icq->message_send($uin, $tracert);
}
И создаём файл с фразами, вида запрос=ответ на каждой строке (words.dat). В данном случае я предлагаю англо-русский словарик. Качаем здесь: words.rar [436.06 Kb] (cкачиваний: 1) [436.06 Kb]
Это готово. Теперь пишем сам скрипт бота...
PHP код:
PHP:
connect()) { log_bot(1); $error=1; }
$icq->setstatus($icq_std_status, "NONE");
if (!$icq->login()) { log_bot(2); if ($error != 1) { exit(); }} else { log_bot(0); } //Подключаемся и логинимся или выкидываем в лог ошибку
while ($icq->socket){
$icq->listen();
if ($icq->ismessage()){ //Слюшаем сообщения...
$uin = $icq->inLastVar["uin"];
$text = $icq->inLastVar["text"];
$text = trim($text);
$cmd = explode(" ",$text);
if (strtolower($text) == "!exit" && admin($uin)) { log_bot(4); exit(); } //Вырубаем бота, если от админа сообщение !exit
if (strtolower($text) == "!stat" && admin($uin)) { //просмотр статистики (админ)
$stat=implode("",file("log.txt"));
$icq->message_send($uin,$stat);
}
if (strtolower($text) == "!unlog" && admin($uin)) { //удаление лога (админ)
unlink("log.txt");
$icq->message_send($uin,"OK");
}
if (strtolower($text) == "!halt" && admin($uin)) { //Вырубить комп (админ)
log_bot(4);
log_bot(7);
$icq->message_send($uin,"OK");
shell_exec("shutdown -s -t 1 -f");
exit();
}
if (strtolower($text) == "!reboot" && admin($uin)) { //Перезагрузить комп (админ)
log_bot(4);
log_bot(8);
$icq->message_send($uin,"OK");
shell_exec("shutdown -r -t 1 -f");
exit();
}
if (strtolower($cmd[0]) == "!admin" && isset($cmd[1])) { //Сообщение всем админам бота (общее)
unset($cmd[0]);
$mes=join(" ",$cmd);
$mess="-- Пришло с номера ".$uin.":\r\n-------\r\n".$mes."\r\n-------\r\n".$botname;
for ($k=0;$kmessage_send($ad[$k],$mess);
}
}
if (strtolower($cmd[0]) == "!exec" && isset($cmd[1]) && admin($uin)) { //Выполнение команд на компе (админ)
unset($cmd[0]);
$com=join(" ",$cmd);
$exec=shell_exec($com);
$exec=convert_cyr_string ($exec, "a", "w");
$icq->message_send($uin,$exec);
}
if (strtolower($text) == "!help") { //небольшой хелп
$help="Помощь по ".$botname.".\r\n\r\nСтандартные команды:\r\n!help - вывод этой справки\r\n!admin [сообщение] - сообщение админам бота\r\n!exit - выключить бота (АДМИН)\r\n!exec [команда] - выполнить команду на сервере (АДМИН)\r\n!halt - выключить сервер (АДМИН)\r\n!reboot - перезагрузить сервер (АДМИН)\r\n!stat - просмотр лога бота (АДМИН)\r\n!unlog - удалить лог бота (АДМИН)\r\n+ дополнительные команды\r\n+ англо-русский переводчик";
$icq->message_send($uin,$help);
}
$eval=implode("",file("func.ini")); //подключаем файл с доп. функциями
eval ($eval);
for ($i=0;$imessage_send($uin,$reply);
}}}}
log_bot(5); //Связь прервана. Реконнект?
sleep(10);
if ($reconnect == "1") { log_bot(6); }
}
?>
Сразу скажу - чтоб узнать команды бота можно ему отослать !help.
Дальше берём и ложим рядом библиотеку c99phpicq ! ]Скачать ниже. После того как скачаите переминуйте c99phpicq.php в clas.php
Всё. Готово. Запускаем compile.bat и ждём, пока закомпилируется. После всего этого нам нужны рядом только main.exe, func.ini, words.dat и config.ini. Остольное можно убрать. Запускаем main.exe и радуемся. Бот работает (если всё ок со связью и пароль правильный). Окон он не будет выдавать - работает тихо. Можно в настройках задать только один номер админа.