summaryrefslogtreecommitdiff
path: root/abot.py
blob: 348aed171c2ed31ef2b5a4c9bc12e850cf503633 (plain)
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
65
import json
from helpers import *
from re import compile as reg_compile

answers_filename = "plugins/redstoner-utils.py.dir/files/abot.json"
answers = []


def load_answers():
  global answers
  try:
    answers = json.loads(open(answers_filename).read())
  except Exception, e:
    error("Failed to load answers: %s" % e)

  # compile answers
  for answer in answers:
    answer["regex"] = [reg_compile(reg.lower()) for reg in answer["regex"]]


def list_answers(sender):
  for answer in answers:
    msg(sender, "&e{")
    msg(sender, "  &eregex:")
    for regex in answer["regex"]:
      msg(sender, "    " + regex.pattern, basecolor="&a", usecolor=False)
    msg(sender, "  &epermission:")
    msg(sender, "    " + str(answer["hide-perm"]), basecolor="&a", usecolor=False)
    msg(sender, "  &emessage:")
    msg(sender, "    " + "\n    ".join(answer["message"].split("\n")))
    msg(sender, "&e}")


@hook.command("abot")
def onAbotCommand(sender, args):
  plugHeader(sender, "AnswerBot")
  if sender.hasPermission("utils.abot.admin"):
    if not args:
      msg(sender, "&2/abot list    &eList all answers and their regex")
      msg(sender, "&2/abot reload  &eReload the config file")
    elif args[0] == "list":
      list_answers(sender)
    elif args[0] == "reload":
      load_answers()
      msg(sender, "&2Reloaded!")
    else:
      msg(sender)


@hook.event("player.AsyncPlayerChatEvent", "low")
def onChat(event):
  sender  = event.getPlayer()
  message = event.getMessage().lower()
  for answer in answers:
    for regex in answer["regex"]:
      if regex.search(message):
        if answer["hide-perm"] and not sender.hasPermission(answer["hide-perm"]):
          plugHeader(sender, "AnswerBot")
          msg(sender, answer["message"] + "\n ")
          event.setCancelled(True)
          log("(hidden) %s: '%s'" % (sender.getName(), message))
          break


load_answers()