3

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 !

Jeflopo
  • 2,192
  • 4
  • 34
  • 46

2 Answers2

9

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! :)

Community
  • 1
  • 1
Madara's Ghost
  • 172,118
  • 50
  • 264
  • 308
  • Thx, I know how to create the connection, but how I can send this IRC specific commands to this connection ? – Jeflopo Mar 03 '13 at 20:19
  • Really useful answer. Ty !! Just to complete: http://www.d3scene.com/forum/operating-systems/16929-creating-irc-bot-php.html and http://php.net/manual/es/function.fsockopen.php and http://www.php.net/manual/es/function.fwrite.php – Jeflopo Mar 03 '13 at 20:33
  • Found http://www.wildphp.com/simple-irc-bot and https://github.com/phergie/phergie-irc-generator Too !! :D – Jeflopo Mar 03 '13 at 20:36
  • `fwrite()` to the connection handler usually does the job. – Madara's Ghost Mar 03 '13 at 20:46
2

You need to read the RFC for IRC so you can build your own client.

See http://www.irchelp.org/protocol/rfc/

zessx
  • 68,042
  • 28
  • 135
  • 158
Anonymous
  • 575
  • 1
  • 4
  • 11