From 1f6c44e9030d1b860688860fbb925caafb9d02ab Mon Sep 17 00:00:00 2001 From: hikariatama Date: Sat, 16 Jul 2022 21:56:43 +0000 Subject: [PATCH] Part of v1.2.11 update Check changelogs for more info --- CHANGELOG.md | 2 ++ hikka/loader.py | 19 +++++++------------ hikka/log.py | 14 ++++++++++---- hikka/modules/hikka_backup.py | 2 +- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11d1e84..0148261 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,8 @@ - Fix back button in `.config ` - New `.e` error format - Ignore folder creation error +- Fix unload error in module without commands +- Rework aiogram media processing on edit ## 🌑 Hikka 1.2.10 diff --git a/hikka/loader.py b/hikka/loader.py index 3830ed4..5d7e29a 100644 --- a/hikka/loader.py +++ b/hikka/loader.py @@ -910,11 +910,7 @@ class Modules: for mod in self.modules: self.send_config_one(mod, skip_hook) - def send_config_one( - self, - mod: "Module", - skip_hook: bool = False - ): + def send_config_one(self, mod: "Module", skip_hook: bool = False): """Send config to single instance""" with contextlib.suppress(AttributeError): _hikka_client_id_logging_tag = copy.copy(self.client.tg_id) @@ -974,12 +970,7 @@ class Modules: self.inline = inline_manager try: - await asyncio.gather( - *[ - self.send_ready_one(mod) - for mod in self.modules - ] - ) + await asyncio.gather(*[self.send_ready_one(mod) for mod in self.modules]) except Exception as e: logger.exception(f"Failed to send mod init complete signal due to {e}") @@ -1139,7 +1130,11 @@ class Modules: getattr(module, method).stop() logger.debug(f"Stopped loop in {module=}, {method=}") - to_remove += module.commands.values() + to_remove += ( + module.commands + if isinstance(getattr(module, "commands", None), dict) + else {} + ).values() if hasattr(module, "watcher"): to_remove += [module.watcher] diff --git a/hikka/log.py b/hikka/log.py index 3667322..8f0b99b 100755 --- a/hikka/log.py +++ b/hikka/log.py @@ -55,6 +55,7 @@ class HikkaException: tb: traceback.TracebackException, ) -> "HikkaException": def to_hashable(dictionary: dict) -> dict: + dictionary = dictionary.copy() for key, value in dictionary.items(): if isinstance(value, dict): if ( @@ -92,11 +93,16 @@ class HikkaException: ) filename, lineno, name = next( - re.search(line_regex, line).groups() - for line in full_stack.splitlines() - if re.search(line_regex, line) + ( + re.search(line_regex, line).groups() + for line in full_stack.splitlines() + if re.search(line_regex, line) + ), + (None, None, None), + ) + line = next( + (line for line in full_stack.splitlines() if line.startswith(" ")), "" ) - line = next(line for line in full_stack.splitlines() if line.startswith(" ")) full_stack = "\n".join( [ diff --git a/hikka/modules/hikka_backup.py b/hikka/modules/hikka_backup.py index 221faa9..2a6415c 100644 --- a/hikka/modules/hikka_backup.py +++ b/hikka/modules/hikka_backup.py @@ -114,7 +114,7 @@ class HikkaBackupMod(loader.Module): await call.delete() return - self.set("period", value) + self.set("period", value * 60 * 60) self.set("last_backup", round(time.time())) await call.answer(self.strings("saved"), show_alert=True)