You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Telethon编辑带等宽/HTML格式的Telegram消息?

编辑Telegram消息时保留格式的解决方案

问题背景

用Telethon发送消息时,parse_mode参数(如parse_mode='markdown'或parse_mode='html')能正常解析等宽(monospace)或HTML格式,但编辑已发送消息时,该参数无法直接使用,手动编写entities又因文本长、包含多个变量导致偏移量和长度计算困难。

解决方法

方法1:用Telethon内置工具自动解析格式

Telethon提供了parse_message_text工具,可以直接将带Markdown/HTML格式的文本解析成对应的消息内容和entities,无需手动计算偏移量和长度。

示例代码(Markdown格式):

from telethon.helpers import parse_message_text
from telethon.tl.types import EditMessageRequest

# 包含变量的带格式文本
variable1 = "8632496"
variable2 = "9832798237"
formatted_text = f"the authentication code `{variable1}`, new code `{variable2}`"

# 解析Markdown格式,得到处理后的文本和实体列表
parsed_text, entities = parse_message_text(formatted_text, parse_mode='markdown')

# 执行消息编辑
client(EditMessageRequest(
    peer=To_id,
    id=sent_message.id,
    message=parsed_text,
    entities=entities
))

方法2:使用HTML格式解析

如果更习惯用HTML格式,同样可以用parse_message_text解析<code>标签实现等宽效果:

formatted_text = f"the authentication code <code>{variable1}</code>, new code <code>{variable2}</code>"
parsed_text, entities = parse_message_text(formatted_text, parse_mode='html')

client(EditMessageRequest(
    peer=To_id,
    id=sent_message.id,
    message=parsed_text,
    entities=entities
))

最佳实践

  • 优先使用parse_message_text工具,完全替代手动编写entities,避免计算错误
  • 封装重复操作成工具函数,简化代码:
from telethon.helpers import parse_message_text
from telethon.tl.types import EditMessageRequest

def edit_formatted_msg(client, target_peer, msg_id, content, parse_mode='markdown'):
    parsed_content, entities = parse_message_text(content, parse_mode)
    return client(EditMessageRequest(
        peer=target_peer,
        id=msg_id,
        message=parsed_content,
        entities=entities
    ))

# 调用示例
edit_formatted_msg(client, To_id, sent_message.id, f"updated code `{new_auth_code}`")
  • 若使用HTML格式,注意转义特殊字符(如<、>、&),或直接选择Markdown格式以简化特殊字符处理
  • 调试时可打印parsed_text和entities,确认解析结果符合预期后再执行编辑操作

内容的提问来源于stack exchange,提问作者mostafa a

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:52:47