跳转到主要内容

处理按钮回调与更新已有消息

了解回调投递与应答时限、重复应答行为,并选择合适的编辑方法保留或清空按钮和媒体说明。

快速摘要

  • 每个 callback_query.id 成功应答一次,结束按钮加载。

  • 回调事件最长投递 150 秒。从点击产生回调起,API 应答窗口为 300 秒。

  • 复合编辑要保留按钮或媒体说明时,重新提交完整值。


应答按钮回调与原地编辑消息

接收并应答回调

  1. 在需要的事件类型中显式订阅 callback_query。省略 allowed_updates 会沿用已保存的策略,传空数组恢复默认。

  2. 按 update_id 对重投去重。执行操作前验证点击人及当前业务状态。每次点击会产生独立回调 ID。

  3. 尽快调用 answerCallbackQuery。同一个 ID 只有首次有效应答成功。重复、处理中、过期或无效的 ID 返回 400。

curl -X POST "https://call.mp.net/bot/answerCallbackQuery" \
-H "Authorization: Bearer $MPCHAT_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"callback_query_id":"REPLACE_WITH_CALLBACK_ID"}'

text 和 show_alert 是兼容字段,当前客户端不会显示 Toast 或 Alert。需要反馈处理结果时,可以编辑原消息或发送新消息。copy_text 在本地复制,不产生回调。

选择编辑方法

方法

可改内容

editMessageText

原生文本或无媒体的 Inline 文本,可编辑实体、链接预览和按钮。

editMessageCaption

图片、视频、动图和文档的说明与实体。非空按钮仅支持 V2 媒体。

editMessageMedia

同类型替换图片、视频、动图或文档。非空按钮仅支持 V2 媒体。

editMessageReplyMarkup

只改受支持的原生文本或 Inline 消息按钮,保留其余内容。

四种方法均编辑当前 Bot 发出的消息,成功时返回 Message。editMessageText 传 parse_mode 会返回 400。省略 link_preview_options 会重置显式预览设置。

保留或清空现有内容

  • 复合编辑时,省略 reply_markup、传 null 或传空键盘会清除旧按钮。要保留按钮,请重新提交完整键盘。

  • 编辑媒体时,省略说明或传空说明会清除旧说明和实体。要保留,请重新提交说明和实体。

  • 编辑文本时,省略 entities 会重新识别提及。显式传空数组会清除实体,且不会重新识别。

{"chat_id":"12345","message_id":678,"text":"已通过","reply_markup":{"inline_keyboard":[[{"text":"查看详情","url":"https://example.com/details"}]]}}

这个 editMessageText 请求显式保留「查看详情」按钮。请使用可编辑消息原有的 chat_id 和 message_id。

只清除按钮并保留消息其余内容时,使用 editMessageReplyMarkup,并传入空键盘。

{"chat_id":"12345","message_id":678,"reply_markup":{"inline_keyboard":[]}}

相关指南

这是否解答了您的问题?