[Python-es] Bot irc modular

chakalinux chakalinux en gmail.com
Vie Feb 4 17:33:58 CET 2011


Hola de nuevo :)

Miren, me estoy comiendo la,cabeza para hacer un bot/cliente IRC modular, me
explico. Quiero partir de una librería irc que ya la tengo pero no se como
implementarlo para que la aplicación se pueda extender fácilmente, en xchat
el programa esta conectado al IRC y para cargar una extensión por ejemplo de
python se usa:

/py load modulo.py

modulo.py tiene en su cabezera entre otras:

import xchat


En mi caso no se como hacerlo, estoy encaminado por algo así:

##############################################
botlib.py
##############################################

class Bot():
    def __init__(self):
        self.nick = "pepito"
        self.nickpassword = ""
        self.username = os.getenv("USERNAME")
        self.hostname = os.getenv("HOSTNAME")
        self.realname = os.getenv("USERNAME")
        self.server = "irc-hispano.org"
        self.port = 6667
        [...]

    def run(self):
        self.s = socket.socket()
        [...]

    dev RecvMsg(self):
        # Aqui cojo nick, canal, mensaje, ...
        return nick, channel, message

##############################################

y ahora si quiero hacer un modulo para que haga "algo" el bot la cosa sería:

import bot

class Seen(bot.Bot):
    def __init__(self):
        self.nick = "yo"
        [...]

    def run(self):
        datos = self.recv(self.nick, self.name, self.data)
        print datos

seen = Seen()
seen.run()


Total, no se como cogerlo :), la idea es fácil en principio, cargar la
librería y la usas pero no se como enlazar en el caso anterior el evento
RecvMsg() con un modulo externo y es un poco coñazo hacerlo con clases, no
se si hay alguna manera mejor y mas limpia.

EL problema que tiene el anterior ejemplo sin duda es que al instanciar la
clase Bot() se ejecutan 2 conexiones simultaneas y claro ... no es lo que se
quiere, un ejemplo para este caso es xchat, carga los plugins si se
encuentran en X directorio y si instancio o llama a una librería que solo
contiene funciones no se como hacer en el modulo para que cuando le diga:
"Darme datos si los recibes" me los de ... jajajja perdonad si me explico
mal, si supiera explicar el problema no lo preguntaría.

Un saludo
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110204/7cc27917/attachment.html>


Más información sobre la lista de distribución Python-es