1
|
|
|
from event import Event |
2
|
|
|
import ast |
3
|
|
|
try: |
4
|
|
|
from basemodule import BaseModule |
5
|
|
|
except ImportError: |
6
|
|
|
from modules.basemodule import BaseModule |
7
|
|
|
class Debugger(BaseModule): |
8
|
|
|
def post_init(self): |
9
|
|
|
debug_event = Event("__.debug__") |
10
|
|
|
debug_event.define(msg_definition="^\.debug") |
11
|
|
|
debug_event.subscribe(self) |
12
|
|
|
|
13
|
|
|
delete_event = Event("__.delete__") |
14
|
|
|
delete_event.define(msg_definition="^\.delete") |
15
|
|
|
delete_event.subscribe(self) |
16
|
|
|
|
17
|
|
|
# register ourself to our new debug_event event |
18
|
|
|
self.bot.register_event(debug_event, self) |
19
|
|
|
self.bot.register_event(delete_event, self) |
20
|
|
|
|
21
|
|
|
def recurse(self, obj): |
22
|
|
|
if type(obj) is not dict: |
23
|
|
|
print obj |
24
|
|
|
else: |
25
|
|
|
for k in obj: |
26
|
|
|
self.recurse(k) |
27
|
|
|
|
28
|
|
|
def mem_store_delete(self, mem_store_key): |
29
|
|
|
if not mem_store_key: |
30
|
|
|
return False |
31
|
|
|
if mem_store_key in self.bot.mem_store: |
32
|
|
|
del(self.bot.mem_store[mem_store_key]) |
33
|
|
|
return True |
34
|
|
|
|
35
|
|
|
def pretty(self, d, event, indent=0): |
36
|
|
|
for key, value in d.iteritems(): |
37
|
|
|
self.say(event.user, '\t' * indent + key.encode('utf-8','ignore')) |
38
|
|
|
if isinstance(value, dict): |
39
|
|
|
pretty(value, event, indent+1) |
40
|
|
|
else: |
41
|
|
|
try: |
42
|
|
|
self.say(event.user, '\t' * (indent+1) + str(value)) |
43
|
|
|
except: |
44
|
|
|
self.say(event.user,'\t' * (indent+1) + value.encode('utf-8','ignore')) |
45
|
|
|
|
46
|
|
|
def handle(self, event): |
47
|
|
|
if not self.bot.brain._isAdmin(event.user): |
48
|
|
|
return |
49
|
|
|
if event.msg.startswith(".delete"): |
50
|
|
|
target = event.msg.split()[-1] |
51
|
|
|
if self.mem_store_delete(target): |
52
|
|
|
self.say(event.user, "deleted " + target + " from mem_store") |
53
|
|
|
return |
54
|
|
|
try: |
55
|
|
|
key = event.msg.split()[1] |
56
|
|
|
keyslist = [] |
57
|
|
|
for thing in event.msg.split()[1:]: |
58
|
|
|
keyslist.append(thing) |
59
|
|
|
# print self.bot.mem_store[thing] |
60
|
|
|
|
61
|
|
|
if len(keyslist) > 1: |
62
|
|
|
neststring = "" |
63
|
|
|
for k in keyslist: |
64
|
|
|
neststring = neststring+'[\''+k+'\']' |
65
|
|
|
# print neststring |
66
|
|
|
|
67
|
|
|
try: |
68
|
|
|
self.pretty(self.bot.mem_store[key], event) |
69
|
|
|
except KeyError: |
70
|
|
|
self.say(event.user, "no key by name " + key) |
71
|
|
|
# HIGHLY insecure; TODO |
72
|
|
|
#self.pretty(self.bot.mem_store[eval(neststring)]) |
73
|
|
|
|
74
|
|
|
#print self.bot.mem_store['qdb']['#fg'] |
75
|
|
|
# outstr = ", ".join(self.bot.mem_store[key]) |
76
|
|
|
# self.say(event.user, outstr) |
77
|
|
|
except IndexError: |
78
|
|
|
print "ERROR: " |
79
|
|
|
print event.msg |
80
|
|
|
|