Python中Telegram Bot API编辑机器人发送消息报错求助
解决Telegram Bot编辑自身消息失败的问题
核心问题:错误的消息ID字段
你代码里犯了一个常见错误——调用edit_message_text时使用了msg.id,但在python-telegram-bot库中,Message对象的消息ID属性是message_id,而非id。msg.id是对象内部ID,并非Telegram服务器上的消息ID,这会导致编辑请求找不到目标消息。
修正后的代码
msg = await context.bot.send_message( chat_id=update.effective_chat.id, text="message", reply_markup=ReplyKeyboardMarkup( reply_keyboard, one_time_keyboard=True, input_field_placeholder="Play!" ), ) # 使用msg.message_id作为消息ID,同时用msg.chat.id确保chat_id准确 await context.bot.edit_message_text( chat_id=msg.chat.id, text="edited text", message_id=msg.message_id )
其他排查方向
如果修正后仍报错,可检查以下几点:
- 聊天权限:若在群组/频道中,确认机器人未被限制编辑自身消息的权限(通常编辑自己的消息无需管理员权限,但部分群组设置可能例外)。
- 消息状态:确保目标消息未被删除或撤回。
- 键盘保留需求:若编辑后需要保留原键盘,需在
edit_message_text中重新传入reply_markup参数(不传入会移除键盘,但不会导致编辑失败)。
内容的提问来源于stack exchange,提问作者thebeancounter
相关产品推荐
相关产品推荐

