diff --git a/sopel_modules/SpiceBot/Prerun.py b/sopel_modules/SpiceBot/Prerun.py index 48fd2a8..ff1b1ea 100644 --- a/sopel_modules/SpiceBot/Prerun.py +++ b/sopel_modules/SpiceBot/Prerun.py @@ -23,11 +23,7 @@ class BotPrerun(): def prerun(self, trigger_command_type='module'): def actual_decorator(function): @functools.wraps(function) - def internal_prerun(bot, trigger, *args, **kwargs): - - # Bots can't run commands - if Identifier(trigger.nick) == bot.nick: - return + def prerun_gen(bot, trigger, *args, **kwargs): # Primary command used for trigger, and a list of all words trigger_args, trigger_command = self.trigger_args(trigger.args[1], trigger_command_type) @@ -45,22 +41,23 @@ class BotPrerun(): # Create dict listings for trigger.sb argsdict_list = self.trigger_argsdict_list(argsdict_default, and_split) + return argsdict_list - # Run the function for all splits - for argsdict in argsdict_list: + argsdictlist = prerun_gen + # Run the function for all splits + for argsdict in argsdictlist: + + @functools.wraps(function) + def internal_prerun(bot, trigger, *args, **kwargs): trigger.sb = copy.deepcopy(argsdict) trigger.sb["args"], trigger.sb["hyphen_arg"] = self.trigger_hyphen_args(trigger.sb["args"]) - - def newfunc(bot, trigger, *args, **kwargs): - if not trigger.sb["hyphen_arg"]: - # check if anything prohibits the nick from running the command - if self.trigger_runstatus(bot, trigger): - function(bot, trigger, *args, **kwargs) - else: - self.trigger_hyphen_arg_handler(bot, trigger) - functools.partial(newfunc)(bot, trigger, *args, **kwargs) - - return internal_prerun + if not trigger.sb["hyphen_arg"]: + # check if anything prohibits the nick from running the command + if self.trigger_runstatus(bot, trigger): + function(bot, trigger, *args, **kwargs) + else: + self.trigger_hyphen_arg_handler(bot, trigger) + internal_prerun return actual_decorator def trigger_args(self, triggerargs_one, trigger_command_type='module'): @@ -158,6 +155,10 @@ class BotPrerun(): def trigger_runstatus(self, bot, trigger): + # Bots can't run commands + if Identifier(trigger.nick) == bot.nick: + return False + # don't run commands that are disabled in channels if not trigger.is_privmsg: disabled_list = spicedb.get_channel_value(bot, trigger.sender, 'disabled_commands', 'commands') or {}