@Meoniz
ничего не умею, но могу сделать что угодно

Не срабатывает inline кнопка в FSM, почему?

Есть бот для создания объявлений о продаже машины. Человек заполняет основыне данные и бот спрашивает его -- верно ли введены данные (и две инлайн кнопки)

При их нажатии ничего не происходит, хотя хендлеры расставлены верно (наверное)

Код, сокращенно в некоторых местах

@dp.callback_query_handler()
async def check_inline(query: types.CallbackQuery, state: FSMContext):
    if (query.data == "add_adv"):
        await state.reset_state()
        await FSM_adv.main_photo.set()
        await bot.send_message(chat_id=query.message.chat.id,
                               text="Отправьте фотографии машины (по одной)")

    elif (query.data == "contact"):
        await FSM_adv.phone.set()
        await bot.send_message(chat_id=query.message.chat.id,
                               text="Отправьте фотографии машины (по одной)")


## FSM HANDLERS ##
@dp.message_handler(state=FSM_adv.main_photo, content_types=["photo"])
async def addres(message: types.Message, state: FSMContext):
    list_photo = [max(message.photo, key=lambda x: x.height)]
    async with state.proxy() as forme:
        forme["photo"] = list_photo
    await FSM_adv.photo.set()
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
    keyboard.add("Это все, сохранить фото")

    await bot.send_message(chat_id=message.chat.id,
                           text="Добавьте еще фото если нужно",
                           reply_markup=keyboard)

    <сокращено>

@dp.message_handler(state=FSM_adv.vin)
async def marka(message: types.Message, state: FSMContext):
    async with state.proxy() as forme:
        forme["vin"] = message.text
    await FSM_adv.strana.set()
    await bot.send_message(chat_id=message.chat.id,
                           text = "Отправьте страну вашего авто")


@dp.message_handler(state=FSM_adv.strana)
async def marka(message: types.Message, state: FSMContext):
    async with state.proxy() as forme:
        forme["strana"] = message.text

    data_list = await state.get_data()
    photo_list = []
    media = types.MediaGroup()

    <сокращено>

    keyboard = types.InlineKeyboardMarkup()
    but1 = types.InlineKeyboardButton(text="Заполнить контакты", callback_data="contact")
    but2 = types.InlineKeyboardButton(text="Начать сначала", callback_data="add_adv")
    keyboard.add(but1)
    keyboard.add(but2)

    await bot.send_message(chat_id=message.chat.id,
                           text="<b>‍ Предпросмотр объявления</b>\n\n"
                                "Если все устравивает, то можете заполнять контакты",
                           reply_markup=keyboard)


Наверное нужны другие хендлеры для FSM?
  • Вопрос задан
  • 392 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы