-
Notifications
You must be signed in to change notification settings - Fork 0
/
HelpBot.py
64 lines (54 loc) · 2.02 KB
/
HelpBot.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python
from .AbstractScript import AbstractScript
import ts3
import json
import importlib
class HelpBot(AbstractScript):
name = "HelpBot"
trigger = ".help"
helpstring = """
[b]HelpBot[/b]
\tShows information about running scripts.
[b]Examples:[/b]
\t.help [i]<script>[/i]
\t.help helpbot
\t.help
"""
def __init__(self):
self.hstrings = dict()
self.scripts = list()
with open("settings.json") as f:
data = json.load(f)
self.scripts = data["scripts"]
for s in self.scripts:
try:
r_module = importlib.import_module("lib." + s)
r_class = getattr(r_module, s)
self.hstrings[r_class.name.lower()] = r_class.helpstring
except (ImportError, ValueError, AttributeError):
print("Failed to get help string for " + s)
def react(self, event, conn, settings):
""" Act. True if there is a message to send,
False otherwise, followed by the actual string. """
if "msg" in event:
if event["invokername"] == settings["name"]:
return False
m = event["msg"].strip().lower()
m = ' '.join(m.split())
if m[0:6] == self.trigger + " ":
botname = m[6:]
if botname in self.hstrings:
conn.sendtextmessage(targetmode=2,
target=1,
msg=self.hstrings[botname])
return True
elif m == self.trigger:
result = ("""
[b]Running scripts:[/b] """ + ", ".join(self.scripts) + """.
[b]Administrative commands:[/b] .mute, .unmute, .kick.
""")
conn.sendtextmessage(targetmode=2,
target=1,
msg=result)
return True
return False