Source code for modules.debugger

import sys
from event import Event

if sys.version_info > (3, 0, 0):
    try:
        from .basemodule import BaseModule
    except (ImportError, SystemError):
        from modules.basemodule import BaseModule
else:
    try:
        from basemodule import BaseModule
    except (ImportError, SystemError):
        from modules.basemodule import BaseModule


[docs]class Debugger(BaseModule):
[docs] def post_init(self): debug_event = Event("__.debug__") debug_event.define(msg_definition="^\\.debug") debug_event.subscribe(self) delete_event = Event("__.delete__") delete_event.define(msg_definition="^\\.delete") delete_event.subscribe(self) # register ourself to our new debug_event event self.bot.register_event(debug_event, self) self.bot.register_event(delete_event, self)
[docs] def recurse(self, obj): if not isinstance(obj, dict): print(obj) else: for k in obj: self.recurse(k)
[docs] def mem_store_delete(self, mem_store_key): if not mem_store_key: return False if mem_store_key in self.bot.mem_store: del(self.bot.mem_store[mem_store_key]) return True
[docs] def pretty(self, d, event, indent=0): for key, value in d.items(): if sys.version_info > (3, 0, 0): self.say(event.user, '\t' * indent + key) else: self.say( event.user, '\t' * indent + key.encode( 'utf-8', 'ignore')) if isinstance(value, dict): self.pretty(value, event, indent + 1) else: try: self.say(event.user, '\t' * (indent + 1) + str(value)) except BaseException: self.say(event.user, '\t' * (indent + 1) + value.encode('utf-8', 'ignore'))
[docs] def handle(self, event): if not self.bot.brain._isAdmin(event.user): return if event.msg.startswith(".delete"): target = event.msg.split()[-1] if self.mem_store_delete(target): self.say(event.user, "deleted " + target + " from mem_store") return try: key = event.msg.split()[1] keyslist = [] for thing in event.msg.split()[1:]: keyslist.append(thing) # print self.bot.mem_store[thing] if len(keyslist) > 1: neststring = "" for k in keyslist: neststring = neststring + '[\'' + k + '\']' # print neststring try: self.pretty(self.bot.mem_store[key], event) except KeyError: self.say(event.user, "no key by name " + key) # HIGHLY insecure; TODO # self.pretty(self.bot.mem_store[eval(neststring)]) # print self.bot.mem_store['qdb']['#fg'] # outstr = ", ".join(self.bot.mem_store[key]) # self.say(event.user, outstr) except IndexError: print("ERROR: ") print(event.msg)