diff options
Diffstat (limited to 'src/core_modules/aliases.py')
| -rw-r--r-- | src/core_modules/aliases.py | 38 |
1 files changed, 15 insertions, 23 deletions
diff --git a/src/core_modules/aliases.py b/src/core_modules/aliases.py index f1648fea..277a4922 100644 --- a/src/core_modules/aliases.py +++ b/src/core_modules/aliases.py @@ -1,30 +1,17 @@ #--depends-on commands -import re from src import EventManager, ModuleManager, utils -REGEX_ARG_NUMBER = re.compile(r"\$(?:(\d+)(-?)|(-))") SETTING_PREFIX = "command-alias-" class Module(ModuleManager.BaseModule): - def _arg_replace(self, s, args_split): - parts = s.split("$$") - for i, part in enumerate(parts): - for match in REGEX_ARG_NUMBER.finditer(s): - if match.group(1): - index = int(match.group(1)) - continuous = match.group(2) == "-" - if index >= len(args_split): - raise IndexError("Unknown alias arg index") - else: - index = 0 - continuous = True - - if continuous: - replace = " ".join(args_split[index:]) - else: - replace = args_split[index] - parts[i] = part.replace(match.group(0), replace) - return "$".join(parts) + def _arg_replace(self, s, args_split, kwargs): + vars = {} + for i in range(len(args_split)): + vars[str(i)] = args_split[i] + vars["%d-" % i] = " ".join(args_split[i:]) + vars["-"] = " ".join(args_split) + vars.update(kwargs) + return utils.parse.format_token_replace(s, vars) def _get_alias(self, server, target, command): setting = "%s%s" % (SETTING_PREFIX, command) @@ -54,9 +41,14 @@ class Module(ModuleManager.BaseModule): event["command"].command) if not alias == None: alias, alias_args = alias + + given_args = [] + if event["command"].args: + given_args = event["command"].args.split(" ") + event["command"].command = alias - event["command"].args = self._arg_replace(alias_args, - event["command"].args.split(" ")) + event["command"].args = self._arg_replace(alias_args, given_args, + {"NICK": event["user"].nickname}) @utils.hook("received.command.alias") @utils.hook("received.command.balias") |
