From 41bd76e09198d029e6138169d1a2b74e9a8dc9b8 Mon Sep 17 00:00:00 2001 From: Raven95676 Date: Mon, 7 Apr 2025 00:47:52 +0800 Subject: [PATCH] =?UTF-8?q?tg=E9=80=82=E9=85=8D=E5=99=A8=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E4=B8=80=E6=AC=A1=E7=BC=96=E8=BE=91=E8=BD=AC=E6=8D=A2markdown?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/sources/telegram/tg_event.py | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/astrbot/core/platform/sources/telegram/tg_event.py b/astrbot/core/platform/sources/telegram/tg_event.py index 7551831d8..bcc9189c2 100644 --- a/astrbot/core/platform/sources/telegram/tg_event.py +++ b/astrbot/core/platform/sources/telegram/tg_event.py @@ -148,7 +148,7 @@ class TelegramPlatformEvent(AstrMessageEvent): msg = await self.client.send_message(text=delta, **payload) current_content = delta except Exception as e: - logger.warning(f"发送消息失败(streaming): {e}") + logger.warning(f"发送消息失败(streaming): {e!s}") message_id = msg.message_id last_edit_time = ( asyncio.get_event_loop().time() @@ -168,17 +168,31 @@ class TelegramPlatformEvent(AstrMessageEvent): ) current_content = delta except Exception as e: - logger.warning(f"编辑消息失败(streaming): {e}") + logger.warning(f"编辑消息失败(streaming): {e!s}") last_edit_time = ( asyncio.get_event_loop().time() ) # 更新上次编辑的时间 try: if delta and current_content != delta: - await self.client.edit_message_text( - text=delta, chat_id=payload["chat_id"], message_id=message_id - ) + try: + markdown_text = telegramify_markdown.markdownify( + delta, max_line_length=None, normalize_whitespace=False + ) + await self.client.edit_message_text( + text=markdown_text, + chat_id=payload["chat_id"], + message_id=message_id, + parse_mode="MarkdownV2" + ) + except Exception as e: + logger.warning(f"Markdown转换失败,使用普通文本: {e!s}") + await self.client.edit_message_text( + text=delta, + chat_id=payload["chat_id"], + message_id=message_id + ) except Exception as e: - logger.warning(f"编辑消息失败(streaming): {e}") + logger.warning(f"编辑消息失败(streaming): {e!s}") return await super().send_streaming(generator)