X-Git-Url: https://jfr.im/git/erebus.git/blobdiff_plain/c695f740c380a2e8dd575d3aa0b8bee8c3d6af93..b5390e89a9c21798d006f9189169a83ef8961f7e:/erebus.py diff --git a/erebus.py b/erebus.py index 2ce5e18..c1ac5d0 100644 --- a/erebus.py +++ b/erebus.py @@ -5,13 +5,15 @@ #TODO: tons -import os, sys, select, MySQLdb, MySQLdb.cursors, time +import os, sys, select, MySQLdb, MySQLdb.cursors, time, random import bot, config, ctlmod class Erebus(object): + APIVERSION = 1 + RELEASE = 0 + bots = {} fds = {} - mods = {} numhandlers = {} msghandlers = {} chanhandlers = {} @@ -79,6 +81,8 @@ class Erebus(object): def levelof(self, auth): + if auth is None: + return 0 auth = auth.lower() if auth in self.levels: return self.levels[auth] @@ -116,8 +120,9 @@ class Erebus(object): def __str__(self): return self.name def __repr__(self): return "" % (self.name) - def __init__(self, trigger): - self.trigger = trigger + def __init__(self, cfg): + self.cfg = cfg + self.trigger = cfg.trigger if os.name == "posix": self.potype = "poll" self.po = select.poll() @@ -142,7 +147,7 @@ class Erebus(object): def fd(self, fileno): #get Bot() by fd/fileno return self.fds[fileno] def randbot(self): #get Bot() randomly - for b in self.bots.itervalues(): return b #TODO + return self.bots[random.choice(self.bots.keys())] def user(self, _nick, justjoined=False): nick = _nick.lower() @@ -153,7 +158,7 @@ class Erebus(object): 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 @@ -178,6 +183,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: @@ -239,7 +247,7 @@ def setup(): global cfg, main cfg = config.Config('bot.config') - main = Erebus(cfg.trigger) + main = Erebus(cfg) autoloads = [mod for mod, yes in cfg.items('autoloads') if int(yes) == 1] for mod in autoloads: