ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Оффтоп > Болталка
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Пишем ICQ бота на PHP
  #1  
Старый 30.04.2010, 09:09
Аватар для MDxaker
MDxaker
Banned
Регистрация: 17.03.2009
Сообщений: 90
Провел на форуме:
231109

Репутация: 29
По умолчанию Пишем ICQ бота на PHP



Статья посвященная созданию ICQ бота на PHP языке!
Автор статьи я! Потому все связаные с ней вопросы ко мне!

Арсенал:

1) Хостинг или дедик
2) Знание PHP
3) Клас ICQ
4) ICQ номер бота
5) Руки

---Шаг первый---

Начнем с того что найдем клас для создания бота.
Этот клас сам разберется со всеми проблемами протокола ICQ и позволит нам подлючится к ICQ за несколько комманд.

Я выбрал mlCQ library v0.4 (Скачать все PHP скрипты сможете вконце темы)
Называем его lib.php и на время забываем.

---Шаг второй---

Создадим файл конфига conf.php!
В нем будут хранится разного рода настройки скрипта и бота.
Например ICQ и пароль бота, его статус и будет ли скрипт вести логи.


conf.php
Цитата:
<?php
DEFINE('UIN_ADMIN','ваша ася'); // Номер ICQ админа

// Уин бота
DEFINE('UIN_BOT','тут аська бота'); // Номер ICQ бота
DEFINE('PASS_BOT','тут пароль'); // Пароль от уина ICQ бота

// Настройки бота
DEFINE('BOT_STATUS','Статус бота X-Traz'); // X-Traz статус бота
DEFINE('BOT_BIRTHDAY','1'); // Шарик день-рождения

// Настройка логирования
DEFINE('LOG_SET','0'); // Если нужны логи поставте 1
DEFINE('LOG_FILE','huge.log'); // Файл логов
?>
Сохраняем в папке с lib.php и забываем!

---Шаг третий---

Перейдем к оболочке бота и скрипте что будет управлять всем функционалом!
Тут будет хранится скрипт входа в on-line, скрипт обработки и еще много чего!

Начнем с того что подключим lib.php и conf.php!

bot.php
Цитата:
<?php
require_once 'lib.php';
require_once 'conf.php';
Теперь определим параметр ICQ birthday, логов и запустим бота
Цитата:
//Birthday
if(BOT_BIRTHDAY=='1') { $BD='BIRTHDAY'; } // Разбираемся с параметром Днюхи бота

//Прочее
set_time_limit(0); // На же не надо чтобы бот постоянно выходил из она?
ignore_user_abort(true); // Игнор аборта

//Подключение
$mlCQ=new mlCQ(); // Создаем клас
$mlCQ->create_identity("me",UIN_BOT,PASS_BOT); //Вводим параметры входа
$mlCQ->connect(); //Создаем подключение
$mlCQ->login(); // Логинимся

// Файл логирования
if(LOG_SET=='1') { $mlCQ->start_logging(LOG_FILE); } // Если нужно, наш клас будет вести логи

//X-Traz
$mlCQ->set_status(BOT_STATUS, $BD); //Статус бота

//Удаляем не нужные офлайн сообщения
$mlCQ->request_offline_messages();
$mlCQ->delete_offline_messages();

$still_there=true; $code='';
Ну а сейчас займёмся списком команд
Цитата:
$list = "Набирите команды что описаны ниже:

person admin - О админе
person you - О Вас
";
$personallist = array(
"admin" => "Админу вчера выполнилось 150 лет. Он живет в г.Черновцы и жрет пиццу",
"you" => "Вы видимо дядя что шяс сидит в асике"
);

$help='Вас приветствует ICQ Info BOT

Команды бота:

help - Вывод справки (её Вы сейчас читаете)
admin ваше_сообщение - Связь с админом
list - Список персонала
person чел - Инфа о нем *
';
Вот теперь самая сложная часть которая разместит в себе весь остаток кода!
Цитата:
while($still_there) {

if(!is_resource($mlCQ->sock) || feof($mlCQ->sock)) $still_there=false; // Проверка
if(!$code) sleep(1); // Спим
$code=$mlCQ->dance_for('me');

switch($code) { //Распознаем ответы
case 7:

$msg=$mlCQ->id['in_messages']['last']; //Получаем последнее сообщение
$from=$msg['uin']; // Аська с которой пришло сообщение
$cmd = explode(' ',$msg['text']); //С помощю explode разделяем сообщение на оболочку
switch($cmd[0]) { //Разбираем сообщение

// Функция вывода хелпа
case 'help':
$mlCQ->send_message($from,$help); // Шлем сообщение с хелпом
break;

// Общение с админом
case 'admin':
$mlCQ->send_message('UIN_ADMIN','Вам пришло сообщение от: '.$from.
'
Текст: '.$cmd.

'
Ответить: send '.$from.' ответ');
break;

// Общение с юзерами
case 'send':
$mlCQ->send_message($cmd[1],'От админа: '.$cmd);
break;



// Отправка листа с командами
case 'list':
$mlCQ->send_message($from,$list);

break;


// Отправка ответа с данными о персоне
case 'person':
$messa = $personallist[$cmd[1]];
if (isset($messa)) {
$mlCQ->send_message($from,"$messa");
} else {
$mlCQ->send_message($from,"Такой персоны не найдено");
}
break;


// Функция остановки работы бота
case 'stop':
if($from==UIN_ADMIN) {
$mlCQ->send_message($from,'Работа бота завершена');
$mlCQ->close(); //Закрываем соединение
}
break;
//Если ни одна из команд не найдена, пишем дефолт сообщение
default:
$mlCQ->send_message($from,"Для вывода справки по командам наберите \"help\" (без кавычек)");
break;
}
}
}

?>
Сохраняем как bot.php, и идем на хостинг

---Шаг четвертый---

Нам нужен хостинг под бота!
Я своего держу на bravohost.ru. Почему там?
Там можно редактировать настройку о том сколько может исполнятся скрипт + есть cron который будет перезапускать скрипт каждые 10 мин.

Если хотите делать на дедике, то устанавливайте любую сборку сервера и в настройках укажите любое нужное Время исполнения, через которое Ваш скрипт остановится (Т.е. Вам надо будет его запускать снова)

Выбрали? Идем на хост и заливаем скрипты.
На папку с скриптом (Если нужны логи) кладем права 777.

Теперь запускаем bot.php и скрипт не должен открыватся (Т.е. Зависнуть)
Добавляйте бота и общайтесь с ним.

Если же ошибка, значит где-то в коде проблема или с хостингом лажа.


Вот пак из скриптов, которые собраны по этой статье!
Там находится клас mlCQ. Конфиг и оболочка бота!
Скачать upwap.ru: Архив с скриптами


---F.A.Q.---
Бот почему-то сам выходит из онлайна, надо его заново запускать
Нужно изменить тайм-лимит на исполнение скрипта.

Пишет ошибку при выполнении скрипта
Куча причин возможно.
Может быть аська и пароль бота не правильны или хостинг лажет, а может и в скрипте проблемма

Не входит в он-лайн
Пароль с асей могут быть не правильные. Или хостинг не позволяет

Очень долго отвечает бот
Хостинг возможно тупит, или Ваш бот очень загружен
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Продажа ICQ-уинов от alkos'a alkos ICQ - Покупка, продажа 10 14.06.2010 14:20
Куплю Icq бота который, 9822 Разное - Покупка, продажа, обмен 5 15.10.2006 04:23



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ