PHP IRC机器人程序连接


PHP IRC bot connect?

我需要一些关于我正在创建的IRC机器人的帮助(非常简单)。

<?php
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$yonk = socket_connect($sock, "127.0.0.1", 6667);
$wut = socket_read($sock, 1024);
socket_write($sock, "NICK FikesPHPThingy'r'n");
socket_write($sock, "USER fikeh fikeh fikeh :Fike's PHP thang.'r'n");
socket_write($sock, "JOIN #LightSpike'r'n");
echo $wut;
while (True) {
}
?>

它连接并读取

:de.blank.net NOTICE Auth :*** Looking up your hostname...
:de.blank.net NOTICE 00AAAAAZ4 :*** Skipping host resolution (disabled by server administrator)

但在那之后它什么也没做。我在没有任何教程的情况下创建了这个,只是自己一个人。但我似乎无法让它发挥作用。有什么想法吗?

PS:很抱歉变量名称有点奇怪。

您必须将(阻塞)读取放入您的无限循环中,如下所示:

while (True) {
$wut = socket_read($sock, 1024, PHP_NORMAL_READ); // $wut will now be a single line sent by the server
echo $wut; // Do anything with the line
}

这样,您的客户端将继续等待和处理响应消息,直到套接字失去连接或您手动中断循环。我添加了PHP_NORMAL_READ参数,这样客户端一次只读取一行,这可能更适合处理。

与此相关的是,您不应该立即加入通道,而应该等待001响应代码。这样可以确保服务器已接受您的标识并准备好接收命令。按照您现在的做法,JOIN可能(也可能)会被服务器拒绝。