Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP IRC Bot-等待001_Php_Join_Command_Irc_Bots - Fatal编程技术网

PHP IRC Bot-等待001

PHP IRC Bot-等待001,php,join,command,irc,bots,Php,Join,Command,Irc,Bots,好的。我知道这个问题,我会尽力描述它,但我一辈子都找不到这个问题的答案 好的,我的机器人会很好地连接到服务器。但您必须等待此特定服务器: :vervet.foonetic.net 001 Eve :Welcome to the Foonetic IRC Network Eve!~Eve@*-*-*-*.*.*.*.net<br /> :vervet.foonetic.net 002 Eve :Your host is vervet.foonetic.net, running vers

好的。我知道这个问题,我会尽力描述它,但我一辈子都找不到这个问题的答案

好的,我的机器人会很好地连接到服务器。但您必须等待此特定服务器:

:vervet.foonetic.net 001 Eve :Welcome to the Foonetic IRC Network Eve!~Eve@*-*-*-*.*.*.*.net<br />
:vervet.foonetic.net 002 Eve :Your host is vervet.foonetic.net, running version Unreal3.2.8.1<br />
:vervet.foonetic.net 003 Eve :This server was created Thu Feb 24 2011 at 00:34:28 EST<br />
:vervet.foonetic.net 001 Eve:欢迎来到foonetic IRC网络Eve~Eve@*-*-*-*.*.net
:vervet.foonetic.net 002 Eve:您的主机是vervet.foonetic.net,运行版本为Unreal3.2.8.1
:vervet.foonetic.net 003 Eve:此服务器创建于2011年2月24日星期四东部时间00:34:28
注意第一行。"001". 我的机器人需要等待该行显示,然后才能运行JOIN命令。它不会: 在while(1){}之前,我尝试了生成一个while(){},我尝试了一个do{}while()和一个简单的if()

这是我的密码

<?php
    set_time_limit(0);

    $conf = array('server' => 'irc.foonetic.net', 'port' => '6667', 'channel' => '#lingubender', 'nick' => 'Eve', 'name' => 'EveBot_1.0', 'description' => 'An IRC bot created by PHP scripter Kinz');
    $replies = array('ver' => 'Eve 1.0', 'part' => 'Good-bye!', 'quit' => 'Shutting down. Talk to you all later!', 'regUsername' => 'example@yahoo.com', 'regPassword' => 'Example');   

    $socket = fsockopen($conf['server'], $conf['port']);
    fputs($socket, "USER ".$conf['nick'].' '.$conf['description'].' '.$conf['nick'].' :'.$conf['name']."\n");
    fputs($socket, "NICK ".$conf['nick']."\n");
    fputs($socket, "JOIN ".$conf['channel']."\n");

    while(1) {
        while($data = fgets($socket, 128)) {
            echo nl2br($data);
            flush();

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



            if ($grip[0] == "PING") {
                fputs($socket, "PONG ".$grip[1]."\n");
            }

            $chan = $grip[2];
            $command = str_replace(array(chr(10), chr(13)), '', $grip[3]);
            strtolower($command);

            if ($command == ":eve" || $command == ":eve,") {
                fputs($socket, "PRIVMSG ".$chan." :Name recognition acknowledged.\n");

                $ex = $grip[4];
                strtolower($ex);

                switch($ex) {
                    case "shutdown":
                        fputs($socket, "QUIT ".$replies['quit']."\n");
                        break;
                    case "version":
                        fputs($socket, "PRIVMSG ".$chan[2]." :".$replies['ver'].' : '.$conf['description']." \n");
                        break;
                }
            } else {
                NULL;
            }
        }
    }
?>

在这个特定的例子中,测试
$grip[1]=“001”


另外,不要在(1)时循环
,因为它永远不会结束。在(!feof($socket))
时循环
,这将在链接断开时终止循环。

在这个特定示例中,测试
$grip[1]==“001”


另外,不要在(1)
时循环
,因为它永远不会结束。当(!feof($socket))
时,
的循环,这将在链接断开时终止循环。

您可以使用
fgets
执行while循环,直到连接后立即从套接字获取所需数据。您可以使用
fgets
执行while循环,直到连接后立即从套接字获取所需数据。@ZavDom:没问题,不要忘记接受正确答案以结束问题。@ZavDom:没问题,不要忘记接受正确答案以结束问题。