from __future__ import unicode_literals import irc.client import logging logger = logging.getLogger('rschat.' + __name__) class IRCInterface(irc.client.SimpleIRCClient): def __init__(self, server, port, nick, channel): logger.debug("Initializing IRCInterface") super(self.__class__, self).__init__() self.server = server self.port = port self.nick = nick self.channel = channel self.queue = [] def __enter__(self): logger.info("Connecting to %s:%s as %s" % (self.server, self.port, self.nick)) self.connect(self.server, self.port, self.nick) return self def on_welcome(self, connection, _): logger.info("Connected, joining %s" % self.channel) connection.join(self.channel) def send(self, line): self.connection.privmsg(self.channel, line) def on_pubmsg(self, _, event): source = event.source self.queue.append((source[:source.index('!')], event.arguments[0])) def poll(self): self.ircobj.process_once() queue = self.queue self.queue = [] return queue def send_raw(self, *args, **kwargs): return self.connection.send_raw(*args, **kwargs) def __exit__(self, *_): self.connection.quit()