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:没问题,不要忘记接受正确答案以结束问题。