如何实现Telegram Bot用户点击内联键盘按钮后删除消息?
实现Telegram Bot发送带Inline键盘的消息并在点击后删除
当然可以做到!我来一步步给你讲清楚具体实现方式:
1. 发送带Inline键盘的消息
你现有的sendMessage API调用是完全正确的,我把它整理成更易读的代码格式:
https://api.telegram.org/bot012345678:fdvnljfnvlskn345bklbv/sendMessage?chat_id=123456789&text=Hello&reply_markup={"inline_keyboard":[{"text":"Yes","callback_data":"Yes"},{"text":"No","callback_data":"No"}]}
发送这个请求后,Telegram API会返回包含消息ID的响应,你可以提前保存这个message_id,也能后续从按钮点击的回调数据里直接获取。
2. 监听按钮点击的回调查询
当用户点击Inline键盘上的任意按钮时,Telegram会向你的Bot推送一个callback_query类型的更新。你需要监听这个更新,并从中提取三个关键信息:
chat_id:用户的聊天IDmessage_id:你之前发送的那条带键盘的消息IDcallback_data:按钮对应的标识(比如你设置的"Yes"或"No")
3. 调用DeleteMessage API删除目标消息
拿到chat_id和message_id后,直接调用Telegram的deleteMessage API就能删除那条消息了,示例请求如下:
https://api.telegram.org/bot<你的Bot令牌>/deleteMessage?chat_id=<用户聊天ID>&message_id=<要删除的消息ID>
记得把尖括号里的内容替换成实际的令牌、聊天ID和消息ID。
额外小提示
- 权限说明:如果是和私人用户聊天,Bot默认拥有删除自己发送消息的权限;如果是在群组中,需要确保Bot被管理员授予了
delete_messages权限。 - 可选优化:删除消息后,你可以给用户发送一条简短的确认消息,比如
sendMessage?chat_id=123456789&text=你选择了Yes,原消息已删除,能提升用户体验。
内容的提问来源于stack exchange,提问作者Igor
相关产品推荐
相关产品推荐

