X-Git-Url: https://jfr.im/git/erebus.git/blobdiff_plain/4fa1118bf7ba25a74d1443c562b98c11675d2c7c..b297b1ca78a11b28bf6403fcb93f6b769033d49c:/erebus.py diff --git a/erebus.py b/erebus.py index d96ae0b..2d4cc1c 100644 --- a/erebus.py +++ b/erebus.py @@ -11,9 +11,9 @@ import bot, config, ctlmod class Erebus(object): bots = {} fds = {} - mods = {} numhandlers = {} msghandlers = {} + chanhandlers = {} users = {} chans = {} @@ -52,6 +52,9 @@ class Erebus(object): self.chans.append(chan) def part(self, chan): self.chans.remove(chan) + def quit(self): + for chan in self.chans: + self.chans.remove(chan) def __str__(self): return self.nick def __repr__(self): return "" % (self.nick,self.glevel) @@ -140,16 +143,16 @@ class Erebus(object): def randbot(self): #get Bot() randomly for b in self.bots.itervalues(): return b #TODO - def user(self, nick, justjoined=False): - nick = nick.lower() + def user(self, _nick, justjoined=False): + nick = _nick.lower() if nick in self.users: return self.users[nick] else: - user = self.User(nick) + user = self.User(_nick) self.users[nick] = user if justjoined: - self.randbot().conn.send("WHO %s %%ant,2" % (nick)) + self.randbot().conn.send("WHO %s n%%ant,2" % (nick)) return user def channel(self, name): #get Channel() by name @@ -174,6 +177,9 @@ class Erebus(object): if bot.conn.state == 0: bot.connect() + def module(self, name): + return ctlmod.modules[name] + #bind functions def hook(self, word, handler): try: @@ -201,6 +207,18 @@ class Erebus(object): def getnumhook(self, word): return self.numhandlers[word] + def hookchan(self, chan, handler): + try: + self.chanhandlers[chan].append(handler) + except: + self.chanhandlers[chan] = [handler] + def unhookchan(self, chan, handler): + if chan in self.chanhandlers and handler in self.chanhandlers[chan]: + self.chanhandlers[chan].remove(handler) + def haschanhook(self, chan): + return chan in self.chanhandlers and len(self.chanhandlers[chan]) != 0 + def getchanhook(self, chan): + return self.chanhandlers[chan] class MyCursor(MySQLdb.cursors.DictCursor):