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

Telegram机器人回调绑定按钮无响应问题(附代码)

问题解决:Telegram机器人忽略回调按钮的原因及修复

核心错误点及修复方案

  • 回调字段匹配错误:所有@router.callback_query(F.date == 'xxx')中的F.date需改为F.data。Inline按钮的回调数据存储在callback_query.data字段,而非date,这是回调完全不触发的核心原因。
  • 回调函数参数类型错误:第二个回调函数的参数不能用Message类型,回调处理函数必须接收CallbackQuery类型参数。需将message: Message改为callback: CallbackQuery,通过callback.message来操作消息。
  • Inline键盘参数冗余:resize_keyboard=True和input_field_placeholder是ReplyKeyboardMarkup的专属参数,InlineKeyboardMarkup不支持这两个配置,需删除。

修复后的代码示例

# 修复后的回调函数
@router.callback_query(F.data == 'go')
async def go_back(callback: CallbackQuery):
    await callback.answer('перейдите')
    await callback.message.edit_reply_markup(reply_markup=kb.main)

@router.callback_query(F.data == 'gos')
async def select_isp(callback: CallbackQuery):
    await callback.answer('выберете курс')
    await callback.message.answer('выберете курс', reply_markup=kb.isp)

# 修复后的Inline键盘
ras = InlineKeyboardMarkup(inline_keyboard=[
    [InlineKeyboardButton(text='ИСП', callback_data='gos')],
    [InlineKeyboardButton(text='ПД', callback_data='god')],
    [InlineKeyboardButton(text="Назад", callback_data='go')],
    [InlineKeyboardButton(text='МНЭЭ', callback_data='goh'),
     InlineKeyboardButton(text='СД', callback_data='gok')]
])

额外提示

  • 回调函数建议使用不同名称,避免重名(原代码两个函数都叫ISP,不利于维护)。
  • callback.answer()用于显示顶部操作提示,可根据需求保留或省略,保留能让用户感知操作已被识别。
  • 若需替换当前消息的键盘,用callback.message.edit_reply_markup();若需发送新消息,用callback.message.answer()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:22:40