from plugins import Plugin class Service(Plugin): def __init__(self, conn): self.conn = conn def login(self): pass class SimpleService(Service): """ A service that registers and responds to only one nick. Subclasses must change nick and description attributes. """ nick = None initialMode = "+o" description = "Generic Service" def login(self): if not self.nick: raise NotImplementedError, "subclasses of SimpleService must define a 'nick' attribute" self.conn.registerNick(self.nick, self.initialMode, self.description) def irc_PRIVMSG(self, args, prefix, data): if args: to = args[0].split('@', 1)[0] if to.lower() == self.nick.lower(): frm = prefix if data[0] == '\x01': # XXX todo ctcp pass else: data = data.split(' ', 1) cmd = data.pop(0).upper() method = getattr(self, 'cmd_%s' % cmd, None) if method: if data: text = data[0] else: text = None method(frm, text) else: self.notice(frm, "Unknown command '%s'" % cmd) def notice(self, to, text): self.conn.notice(self.nick, to, text)