From c8c54f2e3765960e1c7b740860d071b662818916 Mon Sep 17 00:00:00 2001 From: dece Date: Tue, 29 Nov 2022 12:56:56 +0100 Subject: [PATCH] clean --- edmond/plugin.py | 39 +++++++++++++++++++------------- edmond/plugins/translate.py | 10 ++++---- edmond/plugins/youtube_parser.py | 10 ++++---- 3 files changed, 32 insertions(+), 27 deletions(-) diff --git a/edmond/plugin.py b/edmond/plugin.py index 50b6ffa..16f1665 100644 --- a/edmond/plugin.py +++ b/edmond/plugin.py @@ -177,7 +177,7 @@ class Plugin: self, key: str, value: Any, - ns: str = None, + ns: Optional[str] = None, skip_save: bool = False, ) -> None: """Append a value to a list in the plugin persistent storage.""" @@ -253,7 +253,7 @@ class Plugin: return False # Is it a question I can answer? - question = message[len(words[0]) :].strip() + question = message[len(words[0]):].strip() for preamble in self.config.get("questions", []): aliases = self.config.get("aliases", {}).get(preamble, []) for q in (preamble, *aliases): @@ -263,7 +263,7 @@ class Plugin: return False def __save_question(self, question: str, matched: str, preamble: str): - content = question[len(matched) :].strip() + content = question[len(matched):].strip() content = content.rstrip("?").rstrip() self.question = Question(preamble, content) self.bot.log_i(f"Answering from plugin {self.name}: {self.question}") @@ -300,19 +300,8 @@ class Plugin: available_commands = self.config.get("commands", []) aliases = self.config.get("aliases", {}) for ident in available_commands: - # Match commands differently according to no_content. If no_content - # is True, check the parsed command (pc) raw data as a string that - # may contain the available identifier (ai) at its beginning. - # If no_content is False (default), simply compare the parsed - # identifier with available identifiers. - if no_content: - matches = lambda pc, ai: ( - pc.raw == ai or pc.raw.startswith(ai + " ") - ) - else: - matches = lambda pc, ai: pc.ident == ai # First case: the command identifier has been used. - if matches(parsed_command, ident): + if self.__command_matches(parsed_command, ident, no_content): parsed_command.ident = ident parsed_command.matched = ident self.__save_command(parsed_command) @@ -320,13 +309,31 @@ class Plugin: # Second case: an alias of the identifier has been used. ident_aliases = aliases.get(ident, []) for alias in ident_aliases: - if matches(parsed_command, alias): + if self.__command_matches(parsed_command, alias, no_content): parsed_command.ident = ident parsed_command.matched = alias self.__save_command(parsed_command) return True return False + @staticmethod + def __command_matches( + command: Command, + ident: str, + no_content: bool + ) -> bool: + """Return True if this command matches this command identifier. + + Match commands differently according to no_content. If no_content is + True, check the parsed command raw data as a string that + may contain the available identifier at its beginning. + If no_content is False (default), simply compare the parsed + identifier with available identifiers. + """ + if no_content: + return command.raw == ident or command.raw.startswith(ident + " ") + return command.ident == ident + def __parse_command( self, message: str, no_content: bool = False ) -> Optional[Command]: diff --git a/edmond/plugins/translate.py b/edmond/plugins/translate.py index cb4acb6..bb8bd44 100644 --- a/edmond/plugins/translate.py +++ b/edmond/plugins/translate.py @@ -6,11 +6,11 @@ from edmond.plugin import Plugin class TranslatePlugin(Plugin): """Translate text using the `translate` package. - The translate package can use a bunch of translation interfaces but the default is - MyMemory which is fine for our purposes. There are two ways to ask for a - translation: - - Without any additional params, the source language is autodetected and the target - language is specified in the config file; + The translate package can use a bunch of translation interfaces but the + default is MyMemory which is fine for our purposes. There are two ways to + ask for a translation: + - Without any additional params, the source language is autodetected and + the target language is specified in the config file; - With BOTH source and target languages. """ diff --git a/edmond/plugins/youtube_parser.py b/edmond/plugins/youtube_parser.py index 2c57b86..6ab44a9 100644 --- a/edmond/plugins/youtube_parser.py +++ b/edmond/plugins/youtube_parser.py @@ -19,9 +19,7 @@ class YoutubeParserPlugin(Plugin): super().__init__(bot) self.priority = -3 self._youtube_plugin: Optional[YoutubePlugin] = None - self._playlist_of_the_day_plugin: Optional[ - PlaylistOfTheDayPlugin - ] = None + self._potd_plugin: Optional[PlaylistOfTheDayPlugin] = None @property def youtube_plugin(self) -> Optional[YoutubePlugin]: @@ -34,12 +32,12 @@ class YoutubeParserPlugin(Plugin): @property def playlist_of_the_day_plugin(self) -> Optional[PlaylistOfTheDayPlugin]: - if self._playlist_of_the_day_plugin is None: - self._playlist_of_the_day_plugin = cast( + if self._potd_plugin is None: + self._potd_plugin = cast( PlaylistOfTheDayPlugin, self.bot.get_plugin("playlistoftheday"), ) - return self._playlist_of_the_day_plugin + return self._potd_plugin def on_welcome(self, _): if not (self.youtube_plugin and self.youtube_plugin.is_ready):