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挂起。

注意:这是教育/私人用途没有伤害已完成或作出。

+1

我觉得任何IRC bot的私人讯息大家在一个通道是一个坏消息熊雷蒙德:我觉得你应该发布预期的用途,因为这可以用于伟大的邪恶。 – mattbasta 2010-11-18 00:17:52

+0

不,它的私人使用我的朋友。 – Ray 2010-11-18 00:20:49

我几年前在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") 
} 

... 
+0

不错,我将如何随机抓取频道和私人消息的百分比的用户?(PHP表格)。 – Ray 2010-11-18 00:40:35

+0

编辑我的答案为你的后续问题。 – Ruel 2010-11-18 00:51:13

+0

Ruel,我想你误会了。 讲清楚。我需要PHP脚本随机选择IRC频道上的用户百分比,并通过私人消息传递给他们“你好”。 – Ray 2010-11-18 00:53:10