PHP - IRC连接
问题描述:
这里是我的脚本:PHP - IRC连接
$ircServer = "";
$ircPort = "6667";
$ircChannel = "#";
set_time_limit(0);
$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");
}
}
}
} else {
echo $eS . ": " . $eN;
}
我有问题的添加功能
是将私人消息大家都在IRC频道。我尝试了$ read和其他方法,它不起作用,IRC挂起。
注意:这是教育/私人用途没有伤害已完成或作出。
答
我几年前在Perl中写过几个IRC机器人,说实话,我不记得他们了。无论如何,要向所有用户发送私人消息,首先需要获取该频道中的所有用户。
总之,要发送私人消息的命令是:
PRIVMSG #channel :Sup?
是的,这将回声 “燮?”在#频道。然后对用户也是如此:
PRIVMSG John :Sup?
所有您需要做的就是获取所有用户。要做到这一点:
NAMES #channel
代码取决于你。祝你好运。
编辑:要获得用户的百分比,只需加载它们放入数组,然后使用shuffle()
shuffle($array);
,如果你想随机他们的位置。然后使用count()
$size = count($array);
作为数组大小,将大小乘以百分比。 $target = $size * 0.10;
10%。然后使用round()
来获得四舍五入的数字。
现在,循环用户数组并设置限制为$target
。你有它。
编辑:下面是一个示例代码(代码的其余部分是由你OFC:
...
$msg = $_POST['message'];
$pr = $_POST['percentage'];
$pr /= $100; // if the input is already 0.10 or something, no need to do this.
...
shuffle($users);
$size = count($users);
$target = $size * $pr;
$target = $round($target);
for ($i = 0; $i <= $target; $i++) {
fwrite($ircSocket, "PRIVMSG " . $users[$i] . " :" . $msg . "\n")
}
...
我觉得任何IRC bot的私人讯息大家在一个通道是一个坏消息熊雷蒙德:我觉得你应该发布预期的用途,因为这可以用于伟大的邪恶。 – mattbasta 2010-11-18 00:17:52
不,它的私人使用我的朋友。 – Ray 2010-11-18 00:20:49