From e9b4130fb4e5f5f1c1aed2f52ce97453dadbc2df Mon Sep 17 00:00:00 2001 From: Alex Xu Date: Wed, 8 Jan 2014 14:05:40 -0500 Subject: Initial commit --- irc_iface.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 irc_iface.py (limited to 'irc_iface.py') diff --git a/irc_iface.py b/irc_iface.py new file mode 100644 index 0000000..c70866c --- /dev/null +++ b/irc_iface.py @@ -0,0 +1,43 @@ +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() -- cgit v1.2.3-54-g00ecf