From d7fa2cfa24439e86483139f2823e819c67321aaf Mon Sep 17 00:00:00 2001 From: jesopo Date: Fri, 14 Jun 2019 11:42:12 +0100 Subject: Catch `yield`s in command callbacks for e.g. permission checks --- modules/check_mode.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'modules/check_mode.py') diff --git a/modules/check_mode.py b/modules/check_mode.py index d31f836e..add90cc8 100644 --- a/modules/check_mode.py +++ b/modules/check_mode.py @@ -13,9 +13,7 @@ LOWHIGH = { "help": "Set which channel mode is considered to be 'high' access", "example": "o"}) class Module(ModuleManager.BaseModule): - @utils.hook("preprocess.command") - def preprocess_command(self, event): - require_mode = event["hook"].get_kwarg("require_mode") + def _check_command(self, event, require_mode): if event["is_channel"] and require_mode: if require_mode.lower() in LOWHIGH: require_mode = event["target"].get_setting( @@ -27,3 +25,13 @@ class Module(ModuleManager.BaseModule): return "You do not have permission to do this" else: return utils.consts.PERMISSION_FORCE_SUCCESS + + @utils.hook("preprocess.command") + def preprocess_command(self, event): + require_mode = event["hook"].get_kwarg("require_mode") + if not require_mode == None: + return self._check_command(event, require_mode) + + @utils.hook("check.command.channel-mode") + def check_command(self, event): + return self._check_command(event, event["check_args"][0]) -- cgit v1.3.1-10-gc9f91