title: Send a private message to an IRC bot
body: <p>I have a php script to join a channel on this IRC server: irc.worldnet.net
  Thanks to the server response I can say that I joined the channel successfully, and that the bot is in the users list. However, this command:</p>
  
  <pre><code>MSG bot_nickname hello my friend !
  </code></pre>
  
  <p>issues an 'msg: unknown command' response.
  An when I send this line:</p>
  
  <pre><code>PRIVMSG bot_nickname : hello my friend !
  </code></pre>
  
  <p>There is no response from the bot (I don't have any error message anyway).
  Is there something wrong with the commands I send ?</p>
  
  <p>Here is the php code that I use:</p>
  
  <pre><code>&lt;?php
  
  $channel_sent = false;
  $channel_joined = false;
  $msg_sent = false;
  set_time_limit(0);
  ini_set('display_errors', 'on');
  
  $config = array(
      'server' =&gt; 'irc.worldnet.net',
      'port' =&gt; 6667,
      'nick' =&gt; 'cesame'.rand(),
      'channel' =&gt; '#nc-irc-challs'
  );
  
  $server = array();
  $server['SOCKET'] = @fsockopen($config['server'], $config['port'], $errno, $errstr, 2); 
  
  if($server['SOCKET'])
  {
      SendCommand("PASS NOPASS\n\r");
      SendCommand("NICK " . $config['nick'] . "\n\r"); 
      SendCommand("USER " . $config['nick'] . " USING PHP IRC\n\r");    
      SendCommand("JOIN " . $config['channel'] . "\n\r");
  
      while(!feof($server['SOCKET'])) {
              ReadServer();
              flush();
              sleep(1);
      }
  }
  
  function ReadServer(){
      global $server;
      global $config;
      global $channel_joined;
      global $channel_sent;
      global $msg_sent;
      $server['READ_BUFFER'] = fgets($server['SOCKET'], 1024);
      echo "[RECEIVE] ".$server['READ_BUFFER']."&lt;br&gt;\n\r";  
  
      if(substr($server['READ_BUFFER'], 0, 6) == "PING :") { 
          SendCommand("PONG :".substr($server['READ_BUFFER'], 6)."\n\r"); 
      }
      if(strpos($server['READ_BUFFER'], "#nc-irc-challs :End of /NAMES list")){
          $channel_joined = true;
      }
      if(trim($server['READ_BUFFER']) == "" &amp;&amp; $channel_joined &amp;&amp;!$msg_sent) {
          SendCommand('PRIVMSG Daneel : .challenge_caesar start' . "\n\r");
          $msg_sent = true;
      }
  }
  
  function SendCommand ($cmd)
  {
      global $server; //Extends our $server array to this function
      @fwrite($server['SOCKET'], $cmd, strlen($cmd)); //sends the command to the server
      echo "[SEND] $cmd &lt;br&gt;"; //displays it on the screen
  } 
  
  ?&gt;
  </code></pre>
  
  <hr>
  
  <p>So I followed you advices. This is the logs that I Get:</p>
  
  <pre><code>[RECEIVE] :cesame1582!~cesame158@Wnet-59540.41.55.213.rev.sfr.net JOIN :#nc-irc-challs 
  [RECEIVE] :Vidar.IRC.Worldnet.Net 332 cesame1582 #nc-irc-challs :NewbieContest -- http://www.newbiecontest.org/ (channel officiel : #newbiecontest) -- Rappel : aucune Ã©preuve ne peut se rÃ©soudre en bruteforce. 
  [RECEIVE] :Vidar.IRC.Worldnet.Net 333 cesame1582 #nc-irc-challs zours 1195848644 
  [RECEIVE] :Vidar.IRC.Worldnet.Net 353 cesame1582 = #nc-irc-challs :cesame1582 \o_ @Eole +Daneel 
  [RECEIVE] :Vidar.IRC.Worldnet.Net 366 cesame1582 #nc-irc-challs :End of /NAMES list. 
  [SEND] PRIVMSG Daneel : .challenge_caesar start 
  [RECEIVE] :Global!Services@Worldnet.Net NOTICE cesame1582 :[Logon News - Apr 07 2004] Use irc.worldnet.net to join our network, thanks | Dorenavant, utilisez irc.worldnet.net pour joindre notre reseau, merci. 
  [RECEIVE] :Global!Services@Worldnet.Net NOTICE cesame1582 :[Logon News - Jan 07 2007] If you see a connection on port 23, 1080, 3128 or 8080 from 194.117.194.78 this is NOT an attack! It's our insecure proxy detector. 
  [RECEIVE] :Global!Services@Worldnet.Net NOTICE cesame1582 :[Logon News - Feb 07 2007] Vous pouvez utiliser le port 7000 pour une connexion en SSL. You can use port 7000 with a secure SSL connection. 
  [RECEIVE] :Global!Services@Worldnet.Net NOTICE cesame1582 :[Logon News - Oct 14 2009] Salons officiels du reseau Worldnet : #worldnet - #help pour de l'aide sur IRC et l'informatique en general. - ##opers pour les problemes réseau spécifiques à Worldnet. 
  [RECEIVE] :Global!Services@Worldnet.Net NOTICE cesame1582 :[Random News - Apr 24 2004] Pour avoir de l'aide sur les commandes des services, visitez http://help.irc.worldnet.net 
  [RECEIVE] :NickServ!Services@Worldnet.Net NOTICE cesame1582 :Your nick isn't registered. 
  [RECEIVE] 
  [RECEIVE] PING :Vidar.IRC.Worldnet.Net 
  [SEND] PONG :Vidar.IRC.Worldnet.Net 
  [RECEIVE] 
  [RECEIVE] PING :Vidar.IRC.Worldnet.Net 
  [SEND] PONG :Vidar.IRC.Worldnet.Net 
  </code></pre>