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