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

PyTelegramBotApi中callback_query_handler无法触发下一步问题求助

问题原因

  1. 对register_next_step_handler的功能理解有误:该方法仅负责注册触发器,用于监听用户下一次主动发送的普通消息,收到对应消息后才会执行绑定的处理函数,本身不会立刻执行绑定的get_price函数。你仅完成了注册操作没有主动触发消息发送,机器人自然不会有响应,直到用户发送任意消息触发了已注册的处理器,才会执行get_price发送询问提示。
  2. 回调查询未主动应答:Telegram 要求所有 inline keyboard 的回调请求必须在收到后15秒内给出应答,否则用户端的按钮会一直处于加载状态,直观表现为机器人卡顿。

修复方案

你需要在回调处理函数中先应答回调,再直接发送价格询问,最后注册下一步处理器等待用户回复价格即可,修改后的代码参考如下:

@bot.callback_query_handler(func=lambda call: True)
def user_answer(call):
    user[call.message.chat.id].city_id = call.data 
    # 应答回调,消除按钮加载状态
    bot.answer_callback_query(call.id)
    # 直接调用get_price发送询问,不需要等待用户触发
    get_price(call.message)

def get_price(message):
    bot.send_message(message.chat.id, "What's the price?")
    bot.register_next_step_handler(message, save_price)

修改后用户点击inline按钮即可立刻收到价格询问,无需额外发送消息触发流程。

内容的提问来源于stack exchange,提问作者Vladislav Mikhailov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:27:01