diff --git a/astrbot/core/platform/sources/telegram/tg_adapter.py b/astrbot/core/platform/sources/telegram/tg_adapter.py index dfb882328..b7d7a6e7e 100644 --- a/astrbot/core/platform/sources/telegram/tg_adapter.py +++ b/astrbot/core/platform/sources/telegram/tg_adapter.py @@ -113,7 +113,11 @@ class TelegramPlatformAdapter(Platform): message.type = MessageType.FRIEND_MESSAGE else: message.type = MessageType.GROUP_MESSAGE - message.group_id = update.effective_chat.id + message.group_id = str(update.effective_chat.id) + if update.message.message_thread_id: + # Topic Group + message.group_id += "#" + str(update.message.message_thread_id) + message.message_id = str(update.message.message_id) message.session_id = str(update.effective_chat.id) message.sender = MessageMember( diff --git a/astrbot/core/platform/sources/telegram/tg_event.py b/astrbot/core/platform/sources/telegram/tg_event.py index 7708732b4..a8a04e2e1 100644 --- a/astrbot/core/platform/sources/telegram/tg_event.py +++ b/astrbot/core/platform/sources/telegram/tg_event.py @@ -32,12 +32,18 @@ class TelegramPlatformEvent(AstrMessageEvent): at_user_id = i.name at_flag = False + message_thread_id = None + if "#" in user_name: + # it's a supergroup chat with message_thread_id + user_name, message_thread_id = user_name.split("#") for i in message.chain: payload = { "chat_id": user_name, } if has_reply: payload["reply_to_message_id"] = reply_message_id + if message_thread_id: + payload["reply_to_message_id"] = message_thread_id if isinstance(i, Plain): if at_user_id and not at_flag: