fix(telegram): preserve HTML formatting in stream overflow chunks

Apply parse_mode=HTML to overflow intermediate chunks so markdown
formatting is not lost when long streamed messages are split.

Fixes #4637
This commit is contained in:
sanasif786ka
2026-07-14 12:25:28 +08:00
committed by Xubin Ren
parent 6e462e62a6
commit 67648774e2
+7 -5
View File
@@ -1060,25 +1060,27 @@ class TelegramChannel(BaseChannel):
chunks = _split_telegram_markdown(buf.text, TELEGRAM_MAX_MESSAGE_LEN)
if len(chunks) <= 1:
return
html_chunks = [_markdown_to_telegram_html(chunk) for chunk in chunks]
try:
await self._call_with_retry(
self._app.bot.edit_message_text,
chat_id=chat_id, message_id=buf.message_id,
text=chunks[0],
text=html_chunks[0],
parse_mode="HTML",
)
except Exception as e:
if not self._is_not_modified_error(e):
self.logger.warning("Stream overflow edit failed: {}", e)
raise
for chunk in chunks[1:-1]:
for chunk in html_chunks[1:-1]:
await self._call_with_retry(
self._app.bot.send_message,
chat_id=chat_id, text=chunk, **thread_kwargs,
chat_id=chat_id, text=chunk, parse_mode="HTML", **thread_kwargs,
)
tail = chunks[-1]
tail = html_chunks[-1]
sent = await self._call_with_retry(
self._app.bot.send_message,
chat_id=chat_id, text=tail, **thread_kwargs,
chat_id=chat_id, text=tail, parse_mode="HTML", **thread_kwargs,
)
buf.message_id = sent.message_id
buf.text = tail