@hermes999

Почему не работает InlineKeyboard в Aiogram?

Только одна функция работает. Вторую никак не хочет видеть. Не могу понять в чем проблема? Все подключены библиотеки, клавиатуры все правильно созданы.

async def cmd_start(message:types.Message, state: FSMContext):
  try:
    match message.text:
      case "Меню заявок":
        await message.answer(text='Выберите раздел', reply_markup=kb_client_request)
      case "Опций":
        await message.answer(text='Этот пункт скоро появится', reply_markup=kb_client)
      case _:
        pass
  except Exception as e:
    print(e)
  await state.finish()

async def app_start(message:types.Message):
  try:
    match message.text:
      case "Яблоко":
        await message.answer(text='Lorem Ipsum', reply_markup=kt_client)
      case "Рыба":
        await message.answer(text='Lorem Ipsum', reply_markup=kt_client)
  except Exception as e:
    print(e)
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 1
mardim
@mardim
t.me/etoSlishkom
Ответ на ваш вопрос: потому что обработчик всегда попадает в верхнюю функцию, т.к обработка событий в 1 и во 2 функциях идентична— по тексту сообщения, а первая функция выше по стеку, она и забирает постоянно все управление на себя.
Совет 1. Навешивайте декоратор на функции, вида:
@dp.message_handler(params)
Если прям сильно припрет, то в params можно даже лямбдой отфильтровать ваши текстовые ответы от юзера, наподобие вашей задумки.
Совет 2: постарайтесь не использовать try except, он долгий и не особо тут кстати. Обычного if else за глаза хватает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы