Search code examples
phpbotsirc

How to programatically send messages to IRC channel


Does anyone know how to programatically:

  • Send messages to an specific IRC (Internet Relay Chat) channel ? or
  • Send a message to all users in a channel ? or
  • Send an automatic message as a reply ?

I'm accustomed to use PHP, but doesn't really matter the language.

Thank you !


Solution

  • You basically need to:

    1. Connect to the server.
    2. Join the channel.
    3. Send the message to the channel.

    Connecting

    You need to open a connection to the IRC server. It's usually done with the fsockopen() function.

    The server expects two commands, NICK and USER. Note that the sever expects \r\n as a line-ending (if you don't send it, the server won't accept your commands).

    After those two commands are sent, the server will send you a ping.

    :irc.servername.com PING :RANDOM-STRING
    

    You must reply it with PONG :RANDOM-STRING (Same string). The server will periodically send those if you are not active. If you fail to reply, the server will assume you died, and close the connection.

    Joining the channel

    After connection phase is over (You can tell it because you'll get a 001 command from the server when you do), you join the channel. Send the following command:

    JOIN #channel-name
    

    The server will join you to the channel, send you the TOPIC and the NAMES list. Once that's over, you've joined the channel.

    Sending the message

    If all of the above went correctly, all you need is

    PRIVMSG #channel-name :YOUR MESSAGE HERE
    

    Anything after the colon is the message.


    Good luck! :)