diff --git a/.gitignore b/.gitignore index 6f174b9..6d01ab2 100755 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,9 @@ *.pyc *.class *sublime* - +*.bat* secrets.py +excluded.txt # these are player/ingame specific files/ diff --git a/abot.py b/abot.py index aa9c27b..cec6e8f 100644 --- a/abot.py +++ b/abot.py @@ -45,10 +45,8 @@ def on_abot_command(sender, command, label, args): return True -@hook.event("player.AsyncPlayerChatEvent", "low") -def on_chat(event): +def check_msg(event, message): sender = event.getPlayer() - message = event.getMessage().lower() for answer in answers: for regex in answer["regex"]: if regex.search(message): @@ -60,4 +58,16 @@ def on_chat(event): break +@hook.event("player.AsyncPlayerChatEvent", "low") +def on_chat(event): + check_msg(event, event.getMessage().lower()) + +@hook.event("player.PlayerCommandPreprocessEvent", "low") +def on_any_cmd(event): + words = event.getMessage().lower().split(" ") + cmd = words[0][1:] + if cmd in ["msg", "m", "t", "pm", "mail", "r", "reply"]: + info(" ".join(words[1:])) + check_msg(event, " ".join(words[1:])) + load_answers() \ No newline at end of file diff --git a/basecommands.py b/basecommands.py index 46cb86d..9ead977 100644 --- a/basecommands.py +++ b/basecommands.py @@ -1,4 +1,5 @@ from helpers import * +import inspect, new to_see_permission = "utils.showpermission" # See cmd permission in help @@ -15,6 +16,8 @@ def simplecommand(cmd, permission = "utils." + cmd if not description: description = "Handles " + cmd + if not usage: + usage = "/%s " % cmd def getHelp(sender): return helpMsg(sender, cmd, description, usage, aliases, permission) @@ -45,12 +48,11 @@ def simplecommand(cmd, return decorator - - - +""" def advancedcommand(cmd, aliases = [], description = None, + usage = None, senderLimit = -1, subCommands = []): cmd = cmd.lower() @@ -102,9 +104,7 @@ def advancedcommand(cmd, return called.call(sender, command, label, args) def decorator(function): - - functions = [func for func in function.__dict__.itervalues() if inspect.isfunction(func)] - + functions = [new.function(c, globals()) for c in function.func_code.co_consts if inspect.iscode(c)] for sub in subCommands: sub.setParent(cmd) for func in functions: @@ -118,7 +118,13 @@ def advancedcommand(cmd, class subcommand(): - def __init__(self, cmd, aliases = [], amin = 0, amax = -1, description = None, usage = "[args...]", senderLimit = -1): + def __init__(self, cmd, + aliases = [], + amin = 0, + amax = -1, + description = None, + usage = "[args...]", + senderLimit = -1): cmd = cmd.lower() self.description = description self.cmd = cmd @@ -132,24 +138,24 @@ class subcommand(): def getHelp(sender): return helpMsg(sender, "%s %s" % (parent, cmd), description, usage, aliases, permission) - def setParent(parent): + def setParent(self, parent): self.parent = parent - self.permission = "utils.%s.%s" % (parent, cmd) - self.description = description if description else "Handles /" + parent + self.permission = "utils.%s.%s" % (parent, self.cmd) + self.description = self.description if self.description else "Handles /" + parent - def setCalledFunction(function): + def setCalledFunction(self, function): self.call = function - def isCalled(subcmd): - alias = cmd + def isCalled(self, subcmd): + alias = self.cmd i = 0 - while (i <= len(aliases)): + while (i <= len(self.aliases)): if alias == subcmd: return True - alias = aliases[i] + alias = self.aliases[i] i += 1 return False - +""" def isSenderValid(senderLimit, isPlayer): return True if senderLimit == -1 else senderLimit != isPlayer diff --git a/misc.py b/misc.py index d44caf3..5bace4a 100644 --- a/misc.py +++ b/misc.py @@ -8,6 +8,24 @@ import org.bukkit.Bukkit as Bukkit import org.bukkit.event.player.PlayerChatEvent as PlayerChatEvent from basecommands import simplecommand +""" +@advancedcommand("hi", aliases = ["hu"], description = "Says hi!", subCommands = [ + subcommand("server", aliases = ["serv"], amin = 1, amax = 4, usage = "[msg..]", senderLimit = 0), + subcommand("me", aliases = ["meu"], amin = 2, amax = 5, usage = "[MESSAGE]") + ]) +def on_hi_command(): + + def server(sender, command, label, args): + server.dispatchCommand(server.getConsoleSender(), "say " + " ".join(args[1:])) + return "Success!" + def me(sender, command, label, args): + target = server.getPlayer(args[1]) + if target: + target.chat(" ".join(args[2:])) + return None + return "No target found" +""" + @hook.event("player.PlayerJoinEvent", "monitor") def on_join(event):