Underc0de

Programación Scripting => Python => Mensaje iniciado por: Polsaker en Junio 03, 2015, 07:09:51 PM

Título: Librería para parsear de forma correcta los mensajes del IRC
Publicado por: Polsaker en Junio 03, 2015, 07:09:51 PM
Casi siempre, al hacer un bot o cliente IRC desde cero uno suele tener problemas al parsear los mensajes del IRC de forma correcta y rápida (Teniendo en cuenta las nuevas características del IRCv3.2 (http://ircv3.net) que se están viniendo, la velocidad, ya que el 90% de las alternativas utilizan expresiones regulares, etc).

Ircreactor parsea los mensajes en crudo del IRC a un objeto intermedio (un diccionario de Python), facilitando la programación de bots y clientes.

Un ejemplo de su uso:
Código (python) [Seleccionar]
from ircreactor.envelope import RFC1459Message
mensaje = ":[email protected] PRIVMSG #underc0de :Hola a todos"  # Un mensaje cualquiera recibido desde el IRC, de un socket o de lo que sea
print(RFC1459Message.from_message(mensaje).serialize())

Da como resultado:
{'params': ['#underc0de', 'Hola a todos'], 'verb': 'PRIVMSG', 'source': '[email protected]', 'tags': {}}
Lo cual es mucho mas fácil de interpretar.

Además, esta librería funciona con los nuevos tags del IRCv3.2 (http://ircv3.net/specs/core/message-tags-3.2.html):
Código (python) [Seleccionar]
from ircreactor.envelope import RFC1459Message
mensaje = "@esto=aquello;otro=foo :[email protected] PRIVMSG #underc0de :Hola a todos"  # Un mensaje cualquiera recibido desde el IRC, de un socket o de lo que sea
print(RFC1459Message.from_message(mensaje).serialize())

Da como resultado:
{'params': ['#underc0de', 'Hola a todos'], 'verb': 'PRIVMSG', 'source': '[email protected]', 'tags': {'esto': 'aquello', 'otro': 'foo'}}

La librería se puede conseguir en en su repositorio de Github (https://github.com/mammon-ircd/ircmatch)