PHP - IRC悄悄话功能说明

出于某种原因,我的机器人惯于悄悄话人对IRC频道的百分比。 这里是我的脚本:

<?php $ircServer = "///"; $ircPort = "6667"; $ircChannel = "#bots"; set_time_limit(0); $msg = $_POST['message']; $pr = $_POST['percentage']; $pr /= 100; $ircSocket = fsockopen($ircServer, $ircPort, $eN, $eS); if ($ircSocket) { fwrite($ircSocket, "USER Lost rawr.test lol :code\n"); fwrite($ircSocket, "NICK Rawr" . rand() . "\n"); fwrite($ircSocket, "JOIN " . $ircChannel . "\n"); while(1) { while($data = fgets($ircSocket, 128)) { echo nl2br($data); flush(); // Separate all data $exData = explode(' ', $data); // Send PONG back to the server if($exData[0] == "PING") { fwrite($ircSocket, "PONG ".$exData[1]."\n"); } } echo $eS . ": " . $eN; } shuffle($users); $size = count($users); $target = $size * $pr; $target = $round($target); for ($i = 0; $i <= $target; $i++) { fwrite($ircSocket, "PRIVMSG " . $users[$i] . " :" . $msg . "\n"); } } ?>

这里是日志什么我收到:

:[email protected] PRIVMSG Rawr30566 :VERSION

我甚至尝试删除后的数据以及与此更换这一部分:

$msg = $_POST['message'];

随着

$msg = hello;

在其他人的频道上没有得到悄悄话。

--------------解决方案-------------

这是您的整个脚本$users没有设置任何东西; 你可能打算将它设置为用户名的数组$round也没有设置; 你可能意味着只需要调用内置round()函数。 如果在添加一个调试行for循环,你至少可以知道哪些用户(如果有的话)应该得到消息:

for ($i = 0; $i <= $target; $i++) {
echo "Sending message to ${users[$i]}\n";
fwrite($ircSocket, "PRIVMSG " . $users[$i] . " :" . $msg . "\n");
}

IRC协议的东西看起来正确。 接收日志,你担心也没有什么用它做; StatServ IRC服务器上发送您的机器人一CTCP版本请求。 通常情况下客户响应与他们的名称和版本,以及StatServ可能会记录它,OPERS可以看到哪些客户是共同在网络上

分类:php 时间:2012-10-22 人气:0
本文关键词: PHP,IRC
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.242 (s). 9 q(s)