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

使用Telethon Python修改消息时,如何保留原消息的字体与链接?

消息编辑保留格式的正确实现

直接拼接字符串导致格式丢失的核心原因:你仅拼接了纯文本内容,原消息的富文本格式(字体样式、链接等)存储在单独的实体字段中,并未传递到编辑接口。

以下是主流Telegram SDK的解决方案:

Pyrogram 实现方案

原消息的entities字段保存了格式、链接等信息,编辑时需同时传入文本和实体:

# 提取原消息的文本与格式实体
old_text = message.text
old_entities = message.entities

# 拼接新内容
new_text = old_text + new_str

# 编辑消息时传入实体参数,保留原格式
client.edit_message(chat_id=chat, message_id=message.id, text=new_text, entities=old_entities)

如果新字符串需要添加格式,需构建对应的实体对象并合并到old_entities中,同时调整实体的偏移量以匹配新文本位置。

Telethon 实现方案

Telethon中格式实体存储在message.entities,编辑时通过formatting_entities参数传递:

old_text = message.message
old_entities = message.entities

new_text = old_text + new_str

client.edit_message(chat, message.id, new_text, formatting_entities=old_entities)

若新内容需格式,需创建对应MessageEntity子类实例,合并到原有实体列表后传入。

核心注意事项

  • 避免直接将消息对象转为字符串拼接,需单独提取文本内容和格式实体
  • 编辑接口必须同时接收文本和实体参数才能保留富文本格式
  • 新增内容带格式时,需确保实体偏移量与新文本的字符位置对应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:45:48