Added arguments command and label to all command executor functions,
hopefully for massive performance increase.
This is due to the following mess in PythonLoader:
``` Java
@Override
public boolean onCommand(CommandSender sender, Command command, String
label, String[] args) {
boolean result;
if (argcount == -1) {
try {
result = call(4, sender, command, label, args);
argcount = 4;
} catch (PyException e) {
//this could goof up someone ... they'll probably yell at us and
eventually read this code ... fuck them
if (e.type == Py.TypeError && (e.value.toString().endsWith("takes
exactly 3 arguments (4 given)") || e.value.toString().endsWith("takes
exactly 4 arguments (5 given)"))) {
result = call(3, sender, command, label, args);
argcount = 3;
} else if (e.type == Py.TypeError && (e.value.toString().endsWith("takes
exactly 2 arguments (4 given)") || e.value.toString().endsWith("takes
exactly 3 arguments (5 given)"))) {
result = call(2, sender, command, label, args);
argcount = 2;
} else {
throw e;
}
}
} else {
result = call(argcount, sender, command, label, args);
}
return result;
}
```
Note: Still WIP on reports - I'm working on making it keep solved
reports to fix issue 10
63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
from helpers import *
|
|
from re import compile as reg_compile
|
|
|
|
answers = []
|
|
|
|
|
|
def load_answers():
|
|
global answers
|
|
answers = open_json_file("abot", [])
|
|
|
|
# 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 on_abot_command(sender, command, label, args):
|
|
plugin_header(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)
|
|
else:
|
|
noperm(sender)
|
|
return True
|
|
|
|
|
|
@hook.event("player.AsyncPlayerChatEvent", "low")
|
|
def on_chat(event):
|
|
sender = event.getPlayer()
|
|
message = event.getMessage().lower()
|
|
for answer in answers:
|
|
for regex in answer["regex"]:
|
|
if regex.search(message):
|
|
if not answer["hide-perm"] or not sender.hasPermission(answer["hide-perm"]):
|
|
plugin_header(sender, "AnswerBot")
|
|
msg(sender, answer["message"] + "\n ")
|
|
event.setCancelled(True)
|
|
info("(hidden) %s: '%s'" % (sender.getName(), message))
|
|
break
|
|
|
|
|
|
load_answers() |