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

Aiogram报错'message未定义',添加参数后参数不匹配的解决咨询

解决Aiogram中"message is not defined"及参数不匹配问题

你不需要给回调函数额外添加message参数,Aiogram的CallbackQuery对象本身就包含对应的message属性,直接通过它获取即可。另外你的代码里还有一处笔误需要修正:

具体修改点:

  • 把所有message.chat.id替换成callback.message.chat.id
  • 把call.data.split('-')[1]修正为callback.data.split('-')[1](这里你写错了变量名,应该是callback而非call)

修改后的完整代码:

@dp.callback_query_handler()
async def callbac_handler(callback: types.CallbackQuery):
    
    if callback.data == 'admin_search':
        await bot.send_message(callback.message.chat.id, '📝 Введите ID или @username пользователя:')
        adm_srch.set()
    elif callback.data == 'admin_rass':
        await bot.send_message(callback.message.chat.id, '📝 Отправьте фото с текстом рассылки:')
        adm_rass.set()
    elif 'admin_balance' in callback.data:
        await bot.send_message(callback.message.chat.id, '📝 Введите айди и новый баланс пользователя:')
        adm_bal.set()
    elif 'admin_ban' in callback.data:
        cur.execute('UPDATE users SET status = (?) WHERE userid = (?);', ('banned', callback.data.split('-')[1],))
        conn.commit()
        await bot.send_message(callback.message.chat.id, 'Пользователь заблокирован.')

原理说明:

在Aiogram的回调查询处理逻辑中,框架只会给回调函数传入CallbackQuery类型的参数,这个对象里的message属性就是触发回调的那条消息,直接通过callback.message就能拿到聊天ID等所需信息,不需要额外声明参数。

内容的提问来源于stack exchange,提问作者Чечёкин Даниил

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:05:07