如何编辑Telegram bot已发送消息 无需发新消息实现同位置内容替换
实现Telegram Bot同位置替换已发送消息的方案
你不需要删除原有消息再发送新消息,直接调用Telegram Bot的消息编辑接口就可以实现同位置内容替换,操作更高效且不会出现消息闪动的情况,实现方法如下:
1. 存储初始发送的消息对象
你当前调用的reply_text方法执行后会返回已发送成功的消息实例,你需要先把这个实例存下来:
# 发送等待提示,同时存储返回的消息对象 pending_msg = updater.message.reply_text('please wait...')
2. 替换消息内容
等你处理完业务逻辑需要更新内容时,直接调用消息实例的edit_text方法即可:
# 直接修改原位置的消息内容 pending_msg.edit_text('这里是你要替换的新消息内容')
可选方案:先删除再重发(不推荐,会改变消息位置)
如果你确实有需要先删除原有消息再发新的场景,可以按以下方式操作,但注意新消息会出现在对话列表的最末尾,无法保留原位置:
# 先删除已发送的等待消息 pending_msg.delete() # 发送新消息,会出现在对话末尾 updater.message.reply_text('新消息内容')
注意事项
- 只有Bot自身发送的消息才可以调用编辑、删除接口
- 若
edit_text传入的新内容和原消息内容完全一致,接口会返回错误,建议调用前先做内容一致性判断 - 如果需要替换为图片、视频等非文本内容,需调用对应的
edit_media()方法;如果只需要修改媒体消息的附言,调用edit_caption()方法即可
内容的提问来源于stack exchange,提问作者Yossef Yossef
相关产品推荐
相关产品推荐

