2010-11-18 10 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ボットのように感じるレイモンド: – mattbasta

+0

いいえ、その私的な使用のために私の友だち – Ray

答えて

4

私は数年前にPerlで数回IRCボットを書いてきましたが、正直言って私はもはやそれらを思い出すことができません。とにかく、すべてのユーザーにプライベートメッセージを送信するには、まずチャネル内のすべてのユーザーを取得する必要があります。

とにかく、プライベートメッセージを送信するためのコマンドは次のとおりです。

PRIVMSG #channel :Sup? 

うん、それはエコーされます「燮の?」 #チャネルでそれでは、同じユーザーに行く:

PRIVMSG John :Sup? 

すべてのユーザーを取得する必要があります。これを行うには:

NAMES #channel 

コードはあなた次第です。がんばろう。

EDIT:あなたは自分の位置をランダム化したい場合はshuffle()shuffle($array);を使用し、その後、単純に配列にそれらをロード、ユーザーの割合を取得します。次に、アレイサイズにcount()$size = count($array);を使用し、サイズにパーセンテージを掛けます。 $target = $size * 0.10; 10%。次に、round()を使用して、切り捨て番号を取得します。

ここで、ユーザーの配列をループし、制限を$targetに設定します。あなたはそれを持っています。

EDIT:ここでは、サンプルコードがあります(コードの残りはあなた次第です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

+0

あなたのフォローアップの質問に私の答えを編集 – Ruel

+0

ルエル、私はあなたが誤解していると思います。それを明らかにする。私はランダムにIRCチャネル上のユーザーの%を選択し、プライベートメッセージングを "Hello"にするPHPスクリプトが必要です。 – Ray