""" Example of asynchronous IRC bots """ __author__ = 'Rodrigo Aliste P (raliste@googlemail.com)' import asyncore import asynchat import socket class BaseChat(asynchat.async_chat): master_server = None def __init__(self, server, **kwargs): asynchat.async_chat.__init__(self) self.set_terminator("\r\n") self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.connect(server) if kwargs: # do something... pass def handle_connect(self): pass def handle_expt(self): self.close() def collect_incoming_data(self, data): pass def found_terminator(self): pass def set_master_server(self, server_class): self.master_server = server_class def talk(self, chan, msg): self.push("PRIVMSG %s :%s\r\n" % (chan, msg)) NICK1 = 'rod1' NICK2 = 'rod2' IDENT = 'ol' BOTHOST = 'il' REALNAME = 'BotServer' class IrcServer1(BaseChat): def handle_connect(self): self.push("NICK %s\r\nUSER %s %s bla :%s\r\n" % (NICK1, IDENT, BOTHOST, REALNAME)) class IrcServer2(BaseChat): def handle_connect(self): self.push("NICK %s\r\nUSER %s %s bla :%s\r\n" % (NICK2, IDENT, BOTHOST, REALNAME)) def collect_incoming_data(self, data): if 'hola' in data: print "Talking to master server..." self.master_server.talk('#valkfire', 'Recibiendo desde rod2') self.master_server.talk('#valkfire', data.split(':')[-1].upper()) def main(): irc1 = IrcServer1(('irc.valkfire.net', 6667)) irc2 = IrcServer2(('irc.valkfire.net', 6667)) irc2.set_master_server(irc1) asyncore.loop() if __name__ == '__main__': main()