Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Помогите разобраться с irc botом (https://forum.antichat.xyz/showthread.php?t=70079)

AdReNa1!Ne 12.05.2008 18:57

Помогите разобраться с irc botом
 
Взял готовый скрипт отсюда.
PHP код:

<?php


set_time_limit
(0);


$socket fsockopen("irc.***.com"6667);





fputs($socket,"NICK megabotinok\n");
fputs($socket,"USER megabotinok 8 * :lamobot\n");
fputs($socket,"quote pong 2B8C8B2D\n");
fputs($socket,"JOIN #bash.org\n");


while(
1) {

   
    while(
$data fgets($socket128)) {

        echo 
nl2br($data);

        
flush();
     
        
$ex explode(' '$data);

     
        if(
$ex[0] == "PING"){

            
fputs($socket"PONG ".$ex[1]."\n");

        }

        
$command str_replace(array(chr(10), chr(13)), ''$ex[3]);

        if (
$command == ":!say") {

fputs($socket"PRIVMSG ".$ex[2]." :ПОНИ ТОЖЕ КОНИ!!!!!!!!!\n");
        }

    }



}



?>

Вопрос в следующем:
Так как я новичок в пхп, я не могу понять, почему он отсылает строку PRIVMSG <nick> :ПОНИ ТОЖЕ КОНИ!!!!!!!!! сам себе...

groundhog 12.05.2008 19:01

Смотри что у тебя в $ex[2]. Я так понял что там ничего нету, поэтому и появляются на сцене твои пони. Твой бот полученную строку сплитит по пробелу, покажи формат пакета, который он получает... Сначала должна идти команда, потом пробел, потом ник...

AdReNa1!Ne 12.05.2008 19:05

Фрагмент лога:
:Dj!admin@it.is.my.fucking.IP PRIVMSG megabotinok :!say
:megabotinok!megabotino@it.is.my.fucking.IP PRIVMSG megabotinok :ПОНИ ТОЖЕ КОНИ!!!!!!!!!

Пожалуйста, перепишите фрагмент скрипта правильно. Сам не допираю как и что...

groundhog 12.05.2008 19:08

Ну ясен буй:

Цитата:

PRIVMSG megabotinok :ПОНИ ТОЖЕ КОНИ!!!!!!!!!
Эта команда и говорит, что отправить самому себе...

AdReNa1!Ne 12.05.2008 19:09

Это фрагмент из лога. Я не настолько тупой, чтоб не понять этого) Видимо он не распознает ник, что шлёт ему команду. Часть кода пропущена мб...

groundhog 12.05.2008 19:16

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

AdReNa1!Ne 12.05.2008 19:17

fputs($socket, "PRIVMSG ".$ex[2]." :ПОНИ ТОЖЕ КОНИ!!!!!!!!!\n");
Весь трабл в этом ".$ex[2]."
Только хз как исправить это.

LolFEm 12.05.2008 19:40

$ex = explode(' ', $data);

разделение строки в массив по пробелу

у тебя строка: j!admin@it.is.my.fucking.IP PRIVMSG megabotinok :!say

массив $ex из 4 элементов

$ex[0] = j!admin@it.is.my.fucking.IP
...
$ex[3] = :!say


что именно тебе нужно отправлять?

groundhog 12.05.2008 19:46

AdReNa1!Ne, ты прав как никогда, но дело в том, что $ex[2] принимает значение исходя того, что посылается... Если послать:

Цитата:

PRIVMSG megabotinok :ПОНИ ТОЖЕ КОНИ!!!!!!!!!
то $ex[2] - примет значение megabotinok.

а если

Цитата:

PRIVMSG bbbb :ПОНИ ТОЖЕ КОНИ!!!!!!!!!
то $ex[2] - примет значение bbb.

З.Ы. А поменяй строку

Цитата:

fputs($socket, "PRIVMSG ".$ex[2]." :ПОНИ ТОЖЕ КОНИ!!!!!!!!!\n");
на

Цитата:

fputs($socket, "PRIVMSG ".$ex[1]." :ПОНИ ТОЖЕ КОНИ!!!!!!!!!\n");

AdReNa1!Ne 12.05.2008 20:32

Фрагмент из лога:
Dj!admin@it.is.my.fucking.IP PRIVMSG megabotinok :!say
irc.vltele.com 401 megabotinok PRIVMSG :No such nick/channel


Время: 21:52