Не могу поймать callback_data
Разбираюсь с aiogram 3.x
Не могу поймать ни одного callback*а
router = Router()
...
@router.callback_query(F.data == "review")
async def cancel_FSM_and_main_menu(callback: CallbackQuery, state: FSMContext):
await callback.message.answer(
text="Вы хотите оставить отзыв анонимно?",
reply_markup=yes_no
)
Есть вот такой хэндлер(Роутер зарегистрирован)
dp.include_router(review.router)
Есть кнопки
builder = ReplyKeyboardBuilder()
builder.row(
types.KeyboardButton(text="Оставить отзыв", callback_data="review")
)
builder.row(
types.KeyboardButton(text="Актуальные цены", callback_data="price")
)
builder.row(
types.KeyboardButton(text="Поделиться фото и видео", callback_data="upload")
)
main_menu_key = builder.as_markup(resize_keyboard=True)
Структура примерно такая:
Config -> bot_config.py(Подключение роутера) \n
keyboards -> main_menu.py \n
handlers -> review.py \n
В логах пишет, что хэндлеров для callback_data = 'review' нет
INFO:aiogram.event:Update id=XXXXX is not handled. Duration 0 ms by bot id=XXXXXX
Куда копать? Убирал роутеры, ничего не менялось
Ответы (1 шт):
Автор решения: CausonQ
→ Ссылка
Правильно пишет, что нет.
У Reply кнопок нет аргумента callback_data, только text. ПО сути, нажатие на такую кнопку равносильно простому вводу текста.
Но такой аргумент есть у Inline кнопок, которые прикрепляются к сообщению.
В ваших примерах необходимо использовать message, а не callback_query:
router = Router()
...
@router.message(F.data == "review")
async def cancel_FSM_and_main_menu(message: Message, state: FSMContext):
await message.answer(
text="Вы хотите оставить отзыв анонимно?",
reply_markup=yes_no
)