You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 09:54:15