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,提问作者Чечёкин Даниил
相关产品推荐
相关产品推荐

