ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 13.11.2006, 18:33
Hrumtik
Новичок
Регистрация: 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..
 

  #12  
Старый 13.11.2006, 21:52
fucker"ok
Познавший АНТИЧАТ
Регистрация: 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  
Старый 13.11.2006, 22:40
Hrumtik
Новичок
Регистрация: 12.11.2006
Сообщений: 8
Провел на форуме:
14921

Репутация: 10
По умолчанию

fucker"ok

Интересно....

...да дела, я как то думал что не стоит использовать класс... хотя вроде нагляднее и удобнее кажется...

небось оптимизировал уже все по самое немагу

А как ты решал проблему ответов, не изобретать же ИИ ... вот я пытался как-то составить базу вопросов и ответов на них... при получении мессаги соорудить вроде поиска в яндексе.. т.е. по количеству слов, по проценту встречаемости их и прочее... как -то максимально приблить заданный вопрос к вопросу в базе... но это оказалось трудновато.. точнее трудно реализовать не загрузив машину на смерть

Последний раз редактировалось Hrumtik; 13.11.2006 в 23:09..
 

  #14  
Старый 13.11.2006, 23:12
SMERSH
Новичок
Регистрация: 11.10.2006
Сообщений: 11
Провел на форуме:
59474

Репутация: 28
По умолчанию

А кто знает верный способ, штоб скрипт не отваливался по тайм-ауту??
 

  #15  
Старый 14.11.2006, 00:20
fucker"ok
Познавший АНТИЧАТ
Регистрация: 21.11.2004
Сообщений: 1,137
Провел на форуме:
2487541

Репутация: 761


По умолчанию

Цитата:
А как ты решал проблему ответов, не изобретать же ИИ
А мой бот с народом не общается, я его как модератора делал. Разве что шутки игра в загадки, так базу загадок и шуток можно от eggdrop'а взять. Да и чтобы он реагировал на приветы и тд... хз... Зафлудят бота, он и помрет

Чтобы не уходил в away /cgi-xml/away?away=0 или мессагу каждые 15 мин кидать хотя бы (я вот рекламу кидаю на сайт той комнаты) Удобно повесить сие на cron (чтобы каждый 15 мин запускался скрипт) В винде правда крона нет, но наверняка есть что-то похожее

Чтобы скрипт не отрубался - set_time_limit(0);
 

  #16  
Старый 17.11.2006, 18:03
St__one
Познающий
Регистрация: 05.07.2006
Сообщений: 30
Провел на форуме:
151298

Репутация: 18
По умолчанию

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

  #17  
Старый 17.11.2006, 18:12
Zadoxlik
Постоянный
Регистрация: 28.02.2005
Сообщений: 853
Провел на форуме:
3369632

Репутация: 749


По умолчанию

usleep для Windows

function wusleep($microseconds) {
@fsockopen("127.0.0.1", 22333, $errno, $errstr, $microseconds/1000000);
}

// 22333 - закрытый порт на вашем компутере
 

баги
  #18  
Старый 18.11.2006, 11:55
Hrumtik
Новичок
Регистрация: 12.11.2006
Сообщений: 8
Провел на форуме:
14921

Репутация: 10
Exclamation баги

Коечно usleep не работает под Windows, просто у меня винда не в курсе. Там есть баги и я давно их у себя пофиксил и переписал всего бота.... неужели я не знаю как выходить из бесконечного цикла и прочую хню... в паблике пример... дорабатывайте сами, если нужно =)

По крайней мере я скачал PHP 5.2.0 c IDE и никаких проблем с usleep у меня не было никогда

Последний раз редактировалось Hrumtik; 14.12.2006 в 12:00..
 

  #19  
Старый 14.12.2006, 11:59
Hrumtik
Новичок
Регистрация: 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 (!
$responsesleep(1); // задержка при отсутствии данных

// ### ДЕЙСТВИЯ В ЧАТЕ ###

че вы там обсуждаете хз

Последний раз редактировалось Hrumtik; 14.12.2006 в 12:11..
 

  #20  
Старый 17.03.2007, 19:49
ISkateL!
Новичок
Регистрация: 05.03.2007
Сообщений: 3
Провел на форуме:
66211

Репутация: 35
По умолчанию

А тут кто та сказал что у него бот-модератор.. так вот, как добавить модерские опции, чтобы он там выкидывал блокировал и тп??
 
 





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


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




ANTICHAT.XYZ