summaryrefslogtreecommitdiff
path: root/irc_iface.py
diff options
context:
space:
mode:
authorAlex Xu <alex_y_xu@yahoo.ca>2014-01-08 14:05:40 -0500
committerAlex Xu <alex_y_xu@yahoo.ca>2014-01-08 14:05:40 -0500
commite9b4130fb4e5f5f1c1aed2f52ce97453dadbc2df (patch)
tree6fb7aa7e5d4517d97290f415cf92b83da63af654 /irc_iface.py
downloadrschat-master.tar.xz
rschat-master.zip
Initial commitHEADmaster
Diffstat (limited to 'irc_iface.py')
-rw-r--r--irc_iface.py43
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()