diff --git a/config.json.example b/config.json.example index f5b4363..56e712f 100644 --- a/config.json.example +++ b/config.json.example @@ -151,7 +151,8 @@ "commands": ["plus"], "aliases": { "plus": "more" - } + }, + "shortcut": "+" }, "randomchoice": { "commands": ["choose"], diff --git a/edmond/plugins/plus.py b/edmond/plugins/plus.py index df6f37c..d74628e 100644 --- a/edmond/plugins/plus.py +++ b/edmond/plugins/plus.py @@ -4,29 +4,38 @@ from edmond.plugin import Plugin class PlusPlugin(Plugin): """Plugin to store additional content from other plugins. - This plugin does not do much on its own, it lets other plugins register additional - content to compute on the fly when asked, e.g. the Wikipedia plugin can store the - Web page of the definition they just gave so users wanting to know more about a - definition can use the "plus" function to get the URL to the Web page. - - There can be only one handle registered at one time by target (so by channel, user, - etc). External plugins use the `add_handler` to set the current handler for a - target. + This plugin does not do much on its own, it lets other plugins register + additional content to compute on the fly when asked, e.g. the Wikipedia + plugin can store the Web page of the definition they just gave so users + wanting to know more about a definition can use the "plus" function to get + the URL to the Web page. + + There can be only one handle registered at one time by target (so by + channel, user, etc). External plugins use the `add_handler` to set the + current handler for a target. """ + REQUIRED_CONFIGS = ["commands"] + def __init__(self, bot): super().__init__(bot) self.handlers = {} + self.shortcut = self.config.get("shortcut") def on_pubmsg(self, event): - if not self.should_handle_command(event.arguments[0], no_content=True): - return False - + if ( + (self.shortcut and event.arguments[0].strip() == self.shortcut) + or self.should_handle_command(event.arguments[0], no_content=True) + ): + self.process_handler(event) + return True + return False + + def process_handler(self, event): if handler := self.handlers.pop(event.target, None): handler(event) else: self.signal_failure(event.target) - return True def add_handler(self, target: str, handler): self.handlers[target] = handler