2010-11-18 78 views
1

這裏是我的腳本: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

回答

4

我幾年前在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