curs.close()
+ def log(self, *args, **kwargs):
+ self.parent.log(self.nick, *args, **kwargs)
+
def connect(self):
if self.conn.connect():
self.parent.newfd(self, self.conn.socket.fileno())
self.conn.send("NICK %s" % (self.permnick))
def parse(self, line):
+ self.log('I', line)
pieces = line.split()
# dispatch dict
if int(self.parent.cfg.get('debug', 'cbexc', default=0)) == 1:
self.conn.send("PRIVMSG %s :%09.3f ^C4^B!!!^B^C CBEXC %s" % (self.parent.cfg.get('debug', 'owner'), time.time() % 100000, source))
__import__('traceback').print_exc()
- print "%09.3f %s [!] CBEXC %s %r %r" % (time.time() % 100000, self.nick, source, args, kwargs)
+ self.log('!', "CBEXC %s %r %r" % (source, args, kwargs))
+# print "%09.3f %s [!] CBEXC %s %r %r" % (time.time() % 100000, self.nick, source, args, kwargs)
def parsemsg(self, user, target, msg):
def __debug_nomsg(self, target, msg):
if int(self.parent.cfg.get('debug', 'nomsg', default=0)) == 1:
self.conn.send("PRIVMSG %s :%09.3f \ 34\ 2!!!\ 2\ 3 NOMSG %r, %r" % (self.parent.cfg.get('debug', 'owner'), time.time() % 100000, target, msg))
- print "%09.3f %s [!] %s" % (time.time() % 100000, self.nick, "!!! NOMSG")
+ self.log('!', "!!! NOMSG")
+# print "%09.3f %s [!] %s" % (time.time() % 100000, self.nick, "!!! NOMSG")
__import__('traceback').print_stack()
def msg(self, target, msg):
return self.state == 2
def send(self, line):
- print "%09.3f %s [O] %s" % (time.time() % 100000, self.parent.nick, line)
+ self.parent.log('O', line)
+# print "%09.3f %s [O] %s" % (time.time() % 100000, self.parent.nick, line)
self._write(line)
def _write(self, line):
while "\r\n" in self.buffer:
pieces = self.buffer.split("\r\n", 1)
- print "%09.3f %s [I] %s" % (time.time() % 100000, self.parent.nick, pieces[0])
-# print (time.time() % 1460000000), self.parent.nick, '[I]', pieces[0]
+# self.parent.log('I', pieces[0]) # replaced by statement in Bot.parse()
+# print "%09.3f %s [I] %s" % (time.time() % 100000, self.parent.nick, pieces[0])
lines.append(pieces[0])
self.buffer = pieces[1]
modules = {}
dependents = {}
+#dependents[modname] = [list of modules which depend on modname]
def isloaded(modname): return modname in modules
def modhas(modname, attname): return getattr(modules[modname], attname, None) is not None
def load(parent, modname, dependent=False):
#wrapper to call _load and print return
if dependent:
- print "Loading dependency %s..." % (modname),
+ print "(Loading dependency %s..." % (modname),
else:
- print "%09.3f [MOD] [#] Loading %s... " % (time.time() % 100000, modname),
+ print "%09.3f [MOD] [?] Loading %s..." % (time.time() % 100000, modname),
modstatus = _load(parent, modname, dependent)
if not modstatus:
print str(modstatus)
elif modstatus == True:
if dependent:
- print "OK. ",
+ print "OK)",
else:
print "OK."
else:
for dep in mod.modinfo['depends']:
if dep not in modules:
depret = load(parent, dep, dependent=True)
- if not depret:
- return
+ if depret is not None and not depret:
+ return depret #TODO FIXME
dependents[dep].append(modname)
if isloaded(modname):
for dependent in dependents[modname]:
unload(parent, dependent)
- for dep in dependents[modname]:
+ for dep in modules[modname].modinfo['depends']:
dependents[dep].remove(modname)
ret = modules[modname].modstop(parent)
del modules[modname]
import os, sys, select, MySQLdb, MySQLdb.cursors, time, random
import bot, config, ctlmod
-class Erebus(object):
+class Erebus(object): #singleton to pass around
APIVERSION = 1
RELEASE = 0
def module(self, name):
return ctlmod.modules[name]
+ def log(self, source, level, message):
+ print "%09.3f %s [%s] %s" % (time.time() % 100000, source, level, message)
+
#bind functions
def hook(self, word, handler):
try:
class MyCursor(MySQLdb.cursors.DictCursor):
def execute(self, *args, **kwargs):
- print "%09.3f [SQL] [#] MyCursor.execute(self, %s, %s)" % (time.time() % 100000, ', '.join([repr(i) for i in args]), ', '.join([str(key)+"="+repr(kwargs[key]) for key in kwargs]))
+ main.log("[SQL]", "?", "MyCursor.execute(self, %s, %s)" % (', '.join([repr(i) for i in args]), ', '.join([str(key)+"="+repr(kwargs[key]) for key in kwargs])))
+# print "%09.3f [SQL] [#] MyCursor.execute(self, %s, %s)" % (time.time() % 100000, ', '.join([repr(i) for i in args]), ', '.join([str(key)+"="+repr(kwargs[key]) for key in kwargs]))
try:
- super(self.__class__, self).execute(*args, **kwargs)
+ return super(self.__class__, self).execute(*args, **kwargs)
except MySQLdb.MySQLError as e:
- print "%09.3f [SQL] [!] MySQL error! %r" % (time.time() % 100000, e)
+ main.log("[SQL]", "!", "MySQL error! %r" % (e))
+# print "%09.3f [SQL] [!] MySQL error! %r" % (time.time() % 100000, e)
dbsetup()
return False
return True
self.helps = []
self.parent = None
- self.name = (name.split(".", 1))[1]
+ self.name = (name.split("."))[-1]
def modstart(self, parent):
self.parent = parent