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

Python-Telegram-Bot内联按钮处理函数多次触发的修复方法咨询

解决Python-Telegram-Bot内联按钮回调多次触发的问题

嘿,我之前也踩过这个坑!问题出在你没有给Telegram服务器发送回调确认——Telegram会反复发送同一个回调请求,直到它收到你的确认信号,这就导致了button_pressed函数被多次调用。

修复方法很简单,只需要在你的回调处理函数开头,调用answer_callback_query方法确认收到请求就行。修改后的代码如下:

def button_pressed(bot, update):
    query = update.callback_query
    # 关键:确认回调查询,阻止Telegram重复发送请求
    bot.answer_callback_query(query.id)
    
    keyboard = []
    for article in nn:
        keyboard.append([ InlineKeyboardButton(article.title, callback_data=article.pageid) ])
    reply_markup = InlineKeyboardMarkup(keyboard)
    bot.edit_message_text('text_here', reply_markup=reply_markup, chat_id=query.message.chat_id, message_id=query.message.message_id)

如果想给用户一个临时的反馈提示,还可以给answer_callback_query加个text参数,比如:

bot.answer_callback_query(query.id, text="操作已处理", show_alert=False)

show_alert设为True的话会弹出一个显眼的提示框,默认是False,只会在底部显示小提示。

另外提一句,如果你的python-telegram-bot是v12及以上的新版本,API结构有变化,处理函数的参数会是update和context,这时候确认的代码要改成:

context.bot.answer_callback_query(update.callback_query.id)

这样修改之后,按钮点击就只会触发一次button_pressed函数啦!

内容的提问来源于stack exchange,提问作者0x1337

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:03:11