C#开发Telegram机器人:Callback Query重复执行问题求助
解决Telegram机器人Inline键盘点击后消息重复发送的问题
你遇到的重复发送问题,本质是Telegram服务器没收到Callback Query的确认响应,所以会反复推送同一个查询,导致你的代码重复执行。不需要清空本地的CallbackQuery对象,正确的做法是处理完逻辑后,调用Telegram Bot API的确认接口。
具体实现步骤:
- 在处理完
CallbackQuery里的业务逻辑(比如发送消息)后,调用AnswerCallbackQueryAsync方法,传入当前回调查询的Id,告诉Telegram服务器你已经处理了这个请求。 - 这个方法是
Telegram.Bot这类常用SDK提供的标准方法,调用后服务器就不会再重复推送该查询。
修改后的代码示例:
if (up.CallbackQuery != null) { // 这里写你的业务逻辑,比如发送消息给用户 await botClient.SendTextMessageAsync( chatId: up.CallbackQuery.Message.Chat.Id, text: "你点击了按钮,这条消息只会发一次" ); // 关键:确认Callback Query,避免重复推送 await botClient.AnswerCallbackQueryAsync( callbackQueryId: up.CallbackQuery.Id, text: "已处理", // 可选:给用户的点击提示,不需要可以传空字符串 showAlert: false // 是否弹出弹窗提示,默认false ); }
额外说明:
- 如果不需要给用户任何点击反馈,
text参数可以传string.Empty,只传callbackQueryId即可。 - 建议用
try-catch包裹业务逻辑和确认代码,避免因为异常导致未确认查询,进而引发重复推送。
内容的提问来源于stack exchange,提问作者Mahdi Rh
相关产品推荐
相关产品推荐

