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

基于Aiogram的Telegram机器人:定时消息内联按钮无响应问题

内联按钮失效及回调无法触发的原因分析

你的代码存在多处语法错误与逻辑问题,导致内联按钮无法正常工作:

1. 回调处理器函数定义语法错误

回调函数number的定义末尾缺少冒号,这会直接导致代码无法正常解析:

@dp.callback_query_handler(text_startswith=['number_'])
async def number(callback_query: types.CallbackQuery):  # 需添加末尾冒号
    # 后续逻辑代码

2. 字符串与数字的错误比较

callback_data是字符串类型,通过split("_")得到的variant[1]是字符串'1'或'2',但你用它和数字1做比较,条件永远不成立。正确写法应为:

variant = callback_query.data.split("_")
if variant[1] == '1':  # 用字符串'1'而非数字1进行比较
    await bot.send_message(chat_id=CHAT_ID, text='number_1')
else:
    await bot.send_message(chat_id=CHAT_ID, text='number_2')

3. 函数调用缺少闭合括号

两处await bot.send_message语句都未添加闭合括号,会触发语法错误,导致代码运行中断:

  • 错误写法:await bot.send_message(chat_id=CHAT_ID, text='number_1'
  • 正确写法:await bot.send_message(chat_id=CHAT_ID, text='number_1')

4. 未完成回调确认操作

在aiogram中,处理完回调事件后必须调用await callback_query.answer(),否则Telegram服务器会判定回调未被处理,按钮会一直处于加载状态,甚至影响后续事件接收。建议在回调函数末尾添加:

await callback_query.answer()

额外检查点

确保bot对象已正确初始化并与dp(Dispatcher)关联,同时CHAT_ID变量已正确赋值为目标聊天ID。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:49:51