From aa1d50742f0512ea903c003af873f8049d03ddcb Mon Sep 17 00:00:00 2001 From: LehaoLin Date: Thu, 26 Mar 2026 23:23:41 +0800 Subject: [PATCH] fix(telegram): handle caption for document and video messages (#7000) - Add caption handling to document branch - Add caption handling to video branch - Handle caption_entities for @mention support Fixes #7000 --- .../platform/sources/telegram/tg_adapter.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/astrbot/core/platform/sources/telegram/tg_adapter.py b/astrbot/core/platform/sources/telegram/tg_adapter.py index 5f44913573..ad5275e3fd 100644 --- a/astrbot/core/platform/sources/telegram/tg_adapter.py +++ b/astrbot/core/platform/sources/telegram/tg_adapter.py @@ -486,6 +486,16 @@ async def convert_message( message.message.append( Comp.File(file=file_path, name=file_name, url=file_path) ) + if update.message.caption: + message.message_str = update.message.caption + message.message.append(Comp.Plain(message.message_str)) + if update.message.caption_entities: + for entity in update.message.caption_entities: + if entity.type == "mention": + name = message.message_str[ + entity.offset + 1 : entity.offset + entity.length + ] + message.message.append(Comp.At(qq=name, name=name)) elif update.message.video: file = await update.message.video.get_file() @@ -497,6 +507,16 @@ async def convert_message( ) else: message.message.append(Comp.Video(file=file_path, path=file.file_path)) + if update.message.caption: + message.message_str = update.message.caption + message.message.append(Comp.Plain(message.message_str)) + if update.message.caption_entities: + for entity in update.message.caption_entities: + if entity.type == "mention": + name = message.message_str[ + entity.offset + 1 : entity.offset + entity.length + ] + message.message.append(Comp.At(qq=name, name=name)) return message