La mayoria de los ejemplos si no es que todos los que encontramos en la red sobre node.js son acerca de aplicaciones web. Asi que esta ocasion prepare este 'post' sobre como crear un Bot de IRC (Si, aun se sigue usando y mucho :P) usando conexiones TCP con node.js.
La idea es que podemos ver que hay mas formas de sacarle provecho a node.js utilizando el poder de los Eventos, Javascript y V8.
Comenzaremos con diseñar nuestro bot, asi que de entrada necesitaremos crear la conexion, identificarnos con el servidor de IRC y procesar los datos para responder a ciertas situaciones, asi que creamos la siguiente estructura de archivos.
- parser.js (Procesa la informacion recibida del canal para responder a comandos)
- identify.js (Se indentificara con el servidor para establecer la conexion)
- app.js (Creara la conexion tcp al servidor de irc y manejara los eventos de entrada de datos y cierre de la conexion)
Escribiremos el modulo de procesamiento en un archivo llamado parser.js, lo que necesitamos son los datos para procesar y la conexion para enviar las respuestas, una vez que tenemos los datos los partimos en base a los espacios y podremos obtener un stack de aproximadamente 4 elementos info, head, command, msg y un ultimo que es el nick que obtendremos a partir de procesar el encabezado en ciertas ocasiones.
Para mantener la conexion con el servidor cuando nos diga PING le responderemos PONG, cuando detectemos que el servidor nos ha validado la identificacion entraremos al canal #devs, y por ultimo cuando detectemos @ping en los mensajes responderemos con un @pong, tomando como referencia que podemos utilizar el caracter @ para detectar comandos para nuestro bot

Lo siguiente es escribir el modulo de identificacion en un archivo llamado indetify.js, para realizar la identificacion necesitamos la conexion para poder enviar los comandos de identificacion al servidor de IRC

Por ultimo y mas importante crearemos la conexion al servidor de irc en este caso haremos uso de freenode.net, asi que usaremos el modulo de 'net' y al crear la conexion especificaremos el host y puerto, una vez conectados, nos identificamos usando nuestro modulo identify y nos suscribimos al evento 'data' para procesar los datos recibidos y mostrarlos en la consola, por ultimo, nos suscribimos al evento close para cuando se pierda la conexion con el host.

Como notaron con escasas 56 lineas de codigo pudimos crear una conexion tcp que sera un IRC Bot que claro no hace mucho pero nos da una idea de lo que podemos hacer con node.js desde procesar archivos, crear servidores (tcp, udp), clientes (tcp, udp), automatizar tareas, etc.. podemos hacer muchas cosas con node.js utilizando nuestros conocimientos de Javascript.
Y aqui nuestro bot entrando al IRC

Y aqui pueden descargar al IRC Bot Botiik.zip
Si desean hacer un Bot de verdad les recomiendo el paquete de de IRC para Node.js
Pueden dejar sus comentarios, mejoras o errores detectados en el 'post'
jacobo
saludos! estoy investigando un poco este tema de node.js e irc...
a mi me interesaria crear una aplicacion que desde la web pudiera comunicarme con el bot y recibir datos en tiempo real del irc
¿ves factible alguna forma de servir info del irc desde el bot a la web?
2012-03-20 11:40 pm