Почему в aiogram 2 раза нужно писать боту чтобы перешел на следующее состояние FSM

Почему то нужно писать 2 раза чтобы он перешел на след.шаг

@dp.message_handler(state=CellarImport.count)
async def enter_volume(message: types.Message, state: FSMContext):
    answer = message.text
    await state.update_data(answer3=answer)[![введите сюда описание изображения][1]][1]
    if answer in '1234567890':
        await CellarImport.next()
    else:
        await message.answer('Введи количество повторов рассылки цифрами ?')

введите сюда описание изображения


Ответы (1 шт):

Автор решения: oleksandrigo

Смотрите в момент первого ввода у вас стейт будет CellarImport.count, вы ввели 3, она записалась в стейт и после того как прошлась проверка на число, вы переходите на следующий стейт. Всё. Больше ничего и не должно делаться.

Однако вы потом снова пишите 3 и как я могу догадаться у вас есть ещё один хендлер который реагирует на новое значение стейта и выдает данные которые мы видим на скрине.

Что делать? Сразу после await CellarImport.next() отправьте сообщение типа message.answer или bot.send_message. Таким образом оно выведется сразу после первой тройки.

→ Ссылка