2010-11-18 86 views
1

由於某種原因,我的機器人無法通過私人信息通知IRC頻道上的人。這裏是我的腳本:PHP - 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']; 

With

$msg = hello; 

其他頻道上的人沒有收到私人訊息。

+0

「$一輪」可能是一個問題:) – lheurt 2010-11-18 22:24:24

+0

如何先生?請告訴我確切的。 – Ray 2010-11-18 22:39:09

回答

1

這是你的整個劇本嗎? $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協議的東西看起來正確。你擔心的接收日誌與它沒有任何關係; IRC服務器上的StatServ正在向您的機器人發送CTCP VERSION請求。通常客戶提供他們的名字和版本來做出響應,並StatServ可能會記錄它,以便OPERS可以看到客戶是共同在網絡上

+0

它仍然無法正常工作。我的任務是向機器人寫入命令,例如我輸入命令「Hello Get me」,它應該發送給IRC機器人,以便將消息發送給IRC頻道上的許多其他用戶。 (使用百分比系統)。 – Ray 2010-11-18 22:20:45

+0

@Raymond你缺少計算出用戶的列表在房間裏的代碼(你可能要發送[NAMES消息](http://www.irchelp.org/irchelp/rfc/chapter4.html#c4_2_5 )),並且你錯過了一些處理傳入消息的東西 - 想想它,你實際上從來沒有擺脫while(1)'循環,你只是坐在它接收消息永遠不處理它們 – 2010-11-18 22:25:23

+0

我卡爾頓似乎弄明白了,我嘗試了很多方法。也許我的PHP技能不是bril。請給我看看。 – Ray 2010-11-18 22:26:43