diff options
author | Alex Xu <alex_y_xu@yahoo.ca> | 2014-01-08 14:05:40 -0500 |
---|---|---|
committer | Alex Xu <alex_y_xu@yahoo.ca> | 2014-01-08 14:05:40 -0500 |
commit | e9b4130fb4e5f5f1c1aed2f52ce97453dadbc2df (patch) | |
tree | 6fb7aa7e5d4517d97290f415cf92b83da63af654 /irc_iface.py | |
download | rschat-master.tar.xz rschat-master.zip |
Diffstat (limited to 'irc_iface.py')
-rw-r--r-- | irc_iface.py | 43 |
1 files changed, 43 insertions, 0 deletions
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() |