diff options
Diffstat (limited to 'src/core_modules/check_mode.py')
| -rw-r--r-- | src/core_modules/check_mode.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/core_modules/check_mode.py b/src/core_modules/check_mode.py new file mode 100644 index 00000000..9fe3f464 --- /dev/null +++ b/src/core_modules/check_mode.py @@ -0,0 +1,43 @@ +#--depends-on commands + +from src import ModuleManager, utils + +LOWHIGH = { + "low": "v", + "high": "o" +} + +@utils.export("channelset", utils.Setting("mode-low", + "Set which channel mode is considered to be 'low' access", example="v")) +@utils.export("channelset", utils.Setting("mode-high", + "Set which channel mode is considered to be 'high' access", example="o")) +class Module(ModuleManager.BaseModule): + def _check_command(self, event, channel, require_mode): + if event["is_channel"] and require_mode: + if require_mode.lower() in LOWHIGH: + require_mode = event["target"].get_setting( + "mode-%s" % require_mode.lower(), + LOWHIGH[require_mode.lower()]) + + if not event["target"].mode_or_above(event["user"], + require_mode): + return (utils.consts.PERMISSION_ERROR, + "You do not have permission to do this") + else: + return utils.consts.PERMISSION_FORCE_SUCCESS, None + + @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, event["target"], require_mode) + + @utils.hook("check.command.channel-mode") + def check_command(self, event): + target = event["target"] + mode = event["request_args"][0] + if len(event["request_args"]) > 1: + target = event["request_args"][0] + mode = event["request_args"][1] + + return self._check_command(event, target, mode) |
