From 703fe941745174d206386579e45d0f75a9dba990 Mon Sep 17 00:00:00 2001 From: teknium1 <127238744+teknium1@users.noreply.github.com> Date: Wed, 29 Jul 2026 10:57:55 -0700 Subject: [PATCH] fix(gateway): keep no-patterns early return in mention compilation The compile_mention_patterns promotion moved the 'patterns is None -> return []' short-circuit into the shared helper, which meant the telegram/dingtalk wrappers now evaluated self.name (via log_prefix=) even on the no-patterns path. On main that path returned before touching any adapter attributes; tests construct bare adapters via object.__new__ that lack .platform, so TestTelegramGuestMentionGating failed with AttributeError. Restore the early return in both wrappers for exact behavior parity with main. --- plugins/platforms/dingtalk/adapter.py | 6 ++++++ plugins/platforms/telegram/adapter.py | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/plugins/platforms/dingtalk/adapter.py b/plugins/platforms/dingtalk/adapter.py index ccfdd0b73933e..a564c08e690a0 100644 --- a/plugins/platforms/dingtalk/adapter.py +++ b/plugins/platforms/dingtalk/adapter.py @@ -458,6 +458,12 @@ class DingTalkAdapter(BasePlatformAdapter): loaded = [part.strip() for part in raw.split(",") if part.strip()] patterns = loaded + if patterns is None: + # Parity with the historical inline implementation: return before + # evaluating ``self.name`` (avoids touching adapter attributes on + # the no-patterns path). + return [] + return compile_mention_patterns( patterns, log_prefix=self.name, diff --git a/plugins/platforms/telegram/adapter.py b/plugins/platforms/telegram/adapter.py index 686519c45da26..2b10a6ec4c613 100644 --- a/plugins/platforms/telegram/adapter.py +++ b/plugins/platforms/telegram/adapter.py @@ -7818,6 +7818,12 @@ class TelegramAdapter(BasePlatformAdapter): loaded = [part.strip() for part in raw.split(",") if part.strip()] patterns = loaded + if patterns is None: + # Parity with the historical inline implementation: return before + # evaluating ``self.name`` (tests construct bare adapters via + # object.__new__ that lack the attributes ``name`` reads). + return [] + return compile_mention_patterns( patterns, log_prefix=self.name,