ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

13.11.2006, 18:33
|
|
Новичок
Регистрация: 12.11.2006
Сообщений: 8
Провел на форуме: 14921
Репутация:
10
|
|
Я усе выложил здесь (все что нуно заменить или добавить для того чтобы бот реагировал):
форум Bit-Team
http://forum.bit-team.com/index.php?act=ST&f=9&t=166&st=0
Естесно открываем бесконечный цикл
while (true == true){ // бесконечный цикл
usleep(100000);
$response = fgets($sock); // читать ответ
...
}
usleep - это задержка в микросекундах... тут 100 миллисек.... она нужна, чтобы винда не повесилась =))
дальше читаем ответ (сервер построчно передает инфу)
... ну и все в этом духе
Последний раз редактировалось Hrumtik; 13.11.2006 в 23:10..
|
|
|

13.11.2006, 21:52
|
|
Познавший АНТИЧАТ
Регистрация: 21.11.2004
Сообщений: 1,137
Провел на форуме: 2487541
Репутация:
761
|
|
Авторизацию делаю в 2 захода: - Авторизация на mail.ru (а не на чат, ). Выдераем кук
- Заходу в комнату, с кукой от майла + выдерание куки от чата
Ну и дальше собсвенно читаем сам чат. (подставляюю куку майла+чата)
>(сервер построчно передает инфу)
Я давно уже не смотрел, но в момент написание бота мной, сервер передавал все комманды без \n, сталобыть приходилось считывать посимвольно.
А вот самое главное - парсер дейсвий (вырезка из моего кода)
PHP код:
// Получение сообщения
$parent1="#<script>ms\('(.+?)',(.+?),'',0,'(.+?)',(.+?),0,0\);</script>#ie";
preg_replace($parent1,"\$this->message=array('nick'=>'\\1','nickcolor'=>'\\2','msg'=>'\\3','textcolor'=>'\\4')",$msg);
//кто-то выходит с канала (запоминаем тока ник аутсайдера)
$parent2="#top.du\('(.+?)', [0-1], ''\);</script>#ie";
preg_replace($parent2,"\$this->outsider='\\1'",$msg);
//кто-то приходит на канал
$parent3="#top.pu\('(.+?)',(.+?),(.+?),(.+?),(.+?),(.+?),'(.+?)',#ie";
preg_replace($parent3,"\$this->insider=array('nick'=>'\\1','email'=>'\\7','moder'=>'\\5','color'=>'\\2')",$msg);
//кого-то выкинули или забанили, зависит от цыфры type
$parent4="#<script>top.du\('(.+?)', ([2-6]+), '(.+?)'\);</script>#ie";
preg_replace($parent4,"\$this->kicked=array('kicked'=>'\\1','type'=>'\\2','kicker'=>'\\3')",$msg);
//вам пишут в приват
$parent="#<script>ms\('(.+?)',(.+?),'(.+?)',(.+?),'(.+?)',(.+?)\);</script>#ie";
preg_replace($parent,"\$this->private=array('from'=>'\\1',msg=>'\\5')",$msg);
При написании функции выкида пользователей поэксперементируйте с передаваемыми данными т.к. есть один прикол, который нашёл ботописец OverClocker, что можно сделать такой финт ушами, когда все будут видить что пользователя просто кикнули, ну а на самом деле забанили
Делитесь секретами, кто чего интересного нашёл 
Настройки бота (фильтры мата и тд)
http://mailovka.ru/files/cmr/normalnoe/options.xml
Не советую делать, обычный массив из матов и проверят т.к. реакция на слова: бляха, раслаблятся, застра*** и тд будет весьма обидна, для ваших юзеров 
Кому интересно, мой бот работает в канале "Нормальное_общение", под никому Нормобик.
Последний раз редактировалось fucker"ok; 13.11.2006 в 21:58..
|
|
|

13.11.2006, 22:40
|
|
Новичок
Регистрация: 12.11.2006
Сообщений: 8
Провел на форуме: 14921
Репутация:
10
|
|
fucker"ok
Интересно....
...да дела, я как то думал что не стоит использовать класс... хотя вроде нагляднее и удобнее кажется...
небось оптимизировал уже все по самое немагу
А как ты решал проблему ответов, не изобретать же ИИ  ... вот я пытался как-то составить базу вопросов и ответов на них... при получении мессаги соорудить вроде поиска в яндексе.. т.е. по количеству слов, по проценту встречаемости их и прочее... как -то максимально приблить заданный вопрос к вопросу в базе... но это оказалось трудновато.. точнее трудно реализовать не загрузив машину на смерть 
Последний раз редактировалось Hrumtik; 13.11.2006 в 23:09..
|
|
|

13.11.2006, 23:12
|
|
Новичок
Регистрация: 11.10.2006
Сообщений: 11
Провел на форуме: 59474
Репутация:
28
|
|
А кто знает верный способ, штоб скрипт не отваливался по тайм-ауту??
|
|
|

14.11.2006, 00:20
|
|
Познавший АНТИЧАТ
Регистрация: 21.11.2004
Сообщений: 1,137
Провел на форуме: 2487541
Репутация:
761
|
|
А как ты решал проблему ответов, не изобретать же ИИ
А мой бот с народом не общается, я его как модератора делал. Разве что шутки игра в загадки, так базу загадок и шуток можно от eggdrop'а взять. Да и чтобы он реагировал на приветы и тд... хз... Зафлудят бота, он и помрет
Чтобы не уходил в away /cgi-xml/away?away=0 или мессагу каждые 15 мин кидать хотя бы (я вот рекламу кидаю на сайт той комнаты) Удобно повесить сие на cron (чтобы каждый 15 мин запускался скрипт) В винде правда крона нет, но наверняка есть что-то похожее
Чтобы скрипт не отрубался - set_time_limit(0);
|
|
|

17.11.2006, 18:03
|
|
Познающий
Регистрация: 05.07.2006
Сообщений: 30
Провел на форуме: 151298
Репутация:
18
|
|
Сообщение от Hrumtik
while (true == true){ // бесконечный цикл
Можно использовать exit или die для остановки...
Сообщение от Hrumtik
usleep - это задержка в микросекундах... тут 100 миллисек.... она нужна, чтобы винда не повесилась =))
дальше читаем ответ (сервер построчно передает инфу)
php.ru:
Код:
Примечание: эта функция не работает в системах Windows.
)))
|
|
|

17.11.2006, 18:12
|
|
Постоянный
Регистрация: 28.02.2005
Сообщений: 853
Провел на форуме: 3369632
Репутация:
749
|
|
usleep для Windows
function wusleep($microseconds) {
@fsockopen("127.0.0.1", 22333, $errno, $errstr, $microseconds/1000000);
}
// 22333 - закрытый порт на вашем компутере
|
|
|

18.11.2006, 11:55
|
|
Новичок
Регистрация: 12.11.2006
Сообщений: 8
Провел на форуме: 14921
Репутация:
10
|
|
баги
Коечно usleep не работает под Windows, просто у меня винда не в курсе. Там есть баги и я давно их у себя пофиксил и переписал всего бота.... неужели я не знаю как выходить из бесконечного цикла и прочую хню... в паблике пример... дорабатывайте сами, если нужно =)
По крайней мере я скачал PHP 5.2.0 c IDE и никаких проблем с usleep у меня не было никогда 
Последний раз редактировалось Hrumtik; 14.12.2006 в 12:00..
|
|
|

14.12.2006, 11:59
|
|
Новичок
Регистрация: 12.11.2006
Сообщений: 8
Провел на форуме: 14921
Репутация:
10
|
|
Да и патом причем тут винда, когда гоняться все это будет у хостера
Кстати забыл сказать, что я то юзаю вот такую конструкцию:
PHP код:
$cycle = true;
// прием данных от сервера
while ($cycle){
if (!is_resource($chat->socket) or feof($chat->socket))
$cycle = false; // уходим
$response = fgets($chat->socket);
if (!$response) sleep(1); // задержка при отсутствии данных
// ### ДЕЙСТВИЯ В ЧАТЕ ###
}
че вы там обсуждаете хз
Последний раз редактировалось Hrumtik; 14.12.2006 в 12:11..
|
|
|

17.03.2007, 19:49
|
|
Новичок
Регистрация: 05.03.2007
Сообщений: 3
Провел на форуме: 66211
Репутация:
35
|
|
А тут кто та сказал что у него бот-модератор.. так вот, как добавить модерские опции, чтобы он там выкидывал блокировал и тп??
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|