1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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()
|