IRC Python Bot: la mejor manera

Quiero construir un bot que básicamente haga lo siguiente:

  1. Escucha la sala e interactúa con los usuarios y los alienta a PM el bot.
  2. Una vez que un usuario ha enviado un PM, el bot se involucra con el cliente utilizando varias técnicas de inteligencia artificial.

¿Debería usar la biblioteca IRC o Sockets en python o necesito más de un marco de bot?

¿Qué harías?

¡Gracias!

Aquí está el código que estoy usando actualmente, sin embargo, no lo he hecho funcionar.

#!/usr/bin/python import socket network = 'holmes.freenet.net' port = 6667 irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM ) irc.connect ( ( network, port ) ) irc.send ( 'NICK PyIRC\r\n' ) irc.send ( 'USER PyIRC PyIRC PyIRC :Python IRC\r\n' ) irc.send ( 'JOIN #pyirc\r\n' ) irc.send ( 'PRIVMSG #pyirc :Can you hear me?\r\n' ) irc.send ( 'PART #pyirc\r\n' ) irc.send ( 'QUIT\r\n' ) irc.close() 

Usa Twisted o Asynchat si quieres tener un diseño sano. Es posible hacerlo solo con sockets, pero ¿por qué molestarse en hacerlo desde cero?

Si desea involucrar técnicas de inteligencia artificial, le sugiero que mire el paquete AIML para Python. Es la misma tecnología con la que se realizan los bots de ALICE.

Si lo que desea es crear la parte de AI, ¿por qué molestarse en escribir todo el código necesario para la conexión IRC?

Sugiero usar SupyBot y simplemente escriba su código AI como un complemento para él. Hay documentación razonablemente comprensible y muchos códigos de ejemplo para encontrar. Además, viene con una cantidad decente de complementos para todo tipo de usos que podrían complementar su IA.

Mientras respondo ~ 2 años después, escribo esto solo para Googlers 😛

Simplemente intente mi ‘Yet Another Ineless IRC Bot’ aquí https://github.com/julienpalard/yauib que le permite codificar cada función de su bot usando el idioma que desee.

Hice un bot IRC (muy malo, y durante mucho tiempo siendo refactorizado) usando irclib . La documentación es prácticamente nula, pero elimina la necesidad de hacer que todos los sockets se conecten, y eso es algo con lo que realmente no quiero lidiar. A cada cual, lo suyo.

Utilice una biblioteca IRC existente en lugar de implementar el protocolo usted mismo.