Не работает обработчик событий @router.callback_query
В проекте для телеграм-бота я всё импортировал как надо, создал роутер и тд. Но при нажатии на инлайн-клавиатуру ras
не вызывается событие @router.callback_query
, которое вызывается при нажатии на клавишу "ИСП". Другие клавиши не назначены, поэтому невозможно судить о работоспособности этого куска кода по действительным примерам.
@router.message(F.text == 'Расписание')
async def ras(message: Message):
await message.answer('Выберите категорию товара', reply_markup=kb.ras)
@router.callback_query(F.date == 'ISP')
async def ISP(callback_query: CallbackQuery):
await callback_query.answer('Ввывывыв')
ras = InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text='ИСП',callback_data='ISP')],
[InlineKeyboardButton(text='ПД',callback_data='PD')],
[InlineKeyboardButton(text='МНЭЭ',callback_data='MN')]])
Ответы (1 шт):
Автор решения: ZxNuClear
→ Ссылка
Ну, во-первых, у вас очень странный конструктор клавиатуры, сделайте его нормальным, например так:
def ras_kb():
kb = InlineKeyboardBuilder()
kb.button(text="ИСП", callback_data='ISP')
kb.button(text="ПД", callback_data='PD')
kb.button(text="МНЭЭ", callback_data='MN')
kb.adjust(1)
return kb.as_markup()
далее ее уже можете использовать:
@router.message(F.text == 'Расписание')
async def ras(message: Message):
await message.answer('Выберите категорию товара', reply_markup=ras_kb())
ну и у вас еще ошибка далее по коду. Вместо F.date
должно быть F.data
. Итоговый минимальный код будет таким:
from aiogram.utils.keyboard import InlineKeyboardBuilder
def ras_kb():
kb = InlineKeyboardBuilder()
kb.button(text="ИСП", callback_data='ISP')
kb.button(text="ПД", callback_data='PD')
kb.button(text="МНЭЭ", callback_data='MN')
kb.adjust(1)
return kb.as_markup()
@router.message(F.text == 'Расписание')
async def ras(message: Message):
await message.answer('Выберите категорию товара', reply_markup=ras_kb())
@router.callback_query(F.data == 'ISP')
async def ISP(callback_query: CallbackQuery):
await callback_query.answer('Ввывывыв')