2010-11-18 8 views
1

Voici mon script:PHP - IRC Connexion

$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; 
} 

J'ai problème de l'ajout d'une fonction qui tout le monde Message privé sur le canal IRC. J'ai essayé $ read et d'autres méthodes cela ne fonctionne pas et IRC se bloque.

NOTE: Ceci est pour des buts éducatifs/privés aucun mal n'est fait ou fait.

+1

Je me sens comme tout bot IRC que les messages privés que tout le monde dans un canal est mauvais ours de nouvelles Raymond.: Je pense que vous devriez poster l'utilisation prévue, car cela pourrait être utilisé pour un grand mal – mattbasta

+0

Non, c'est pour un usage privé mon ami – Ray

Répondre

4

J'ai écrit plusieurs robots IRC il y a des années en Perl, et pour être honnête, je ne m'en souviens plus. Quoi qu'il en soit, pour envoyer un message privé à tous les utilisateurs, vous devez d'abord obtenir tous les utilisateurs dans le canal.

Quoi qu'il en soit, la commande pour envoyer un message privé:

PRIVMSG #channel :Sup? 

Ouais, il se fera l'écho "Sup?" au #canal. Il en va de même pour un utilisateur:

PRIVMSG John :Sup? 

Tout ce que vous devez faire est d'obtenir tous les utilisateurs. Pour faire ceci:

NAMES #channel 

Le code vous appartient. Bonne chance.

EDIT: Pour obtenir un pourcentage des utilisateurs, les charger simplement dans un tableau, puis utilisez shuffle()shuffle($array); si vous voulez randomiser leurs positions. Ensuite, utilisez count()$size = count($array); pour la taille du tableau, multipliez la taille par le pourcentage. $target = $size * 0.10; pour 10%. Ensuite, utilisez round() pour obtenir le nombre arrondi.

Maintenant, bouclez le tableau d'utilisateurs et définissez la limite sur $target. Voilà.

EDIT: Voici un exemple de code (le reste du code est à vous 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

Nice, comment aurais-je attraper au hasard un pourcentage d'utilisateurs sur le canal et message privé eux ? (PHP Form) – Ray

+0

a édité ma réponse pour votre question de suivi – Ruel

+0

Ruel, je pense que vous avez mal compris. préciser. J'ai besoin du script PHP pour sélectionner aléatoirement un% d'utilisateurs sur le canal IRC et les envoyer par messagerie privée "Hello". – Ray