下面是我的脚本:
$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挂起。
注意:这是出于教育/私人目的,不会造成任何伤害。
发布于 2010-11-18 08:36:13
几年前,我用Perl编写了几个IRC机器人,老实说,我已经记不住它们了。无论如何,要向所有用户发送私人消息,首先需要获取通道中的所有用户。
无论如何,发送私人消息的命令是:
PRIVMSG #channel :Sup?是啊,它会回响"Sup?“在#频道。用户也是如此:
PRIVMSG John :Sup?你所需要做的就是获得所有的用户。为此,请执行以下操作:
NAMES #channel代码由您决定。祝好运。
:要获得一定百分比的用户,只需将他们加载到一个数组中,然后使用shuffle() shuffle($array);来随机化他们的位置。然后使用count() $size = count($array);作为数组大小,将大小乘以百分比。$target = $size * 0.10;为10%。然后使用round()获取四舍五入的数字。
现在,循环用户数组并将限制设置为$target。这就对了。
编辑:下面是一个示例代码(剩下的代码由您决定:
...
$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")
}
...https://stackoverflow.com/questions/4210511
复制相似问题