1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#--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()])
elif require_mode.lower() == "admin":
previous = None
for mode, _ in event["server"].prefix_modes:
if mode == "o":
return previous or mone
previous = mode
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)
|