@K1Z0n

Что делать, если aiogram бот дважды запрашивает данные у пользователя?

Пишу бота-агрегатора задач с сайта задач по программированию

Не могу понять, почему бот спрашивает тему и сложность дважды. Сначала он проверяет правильность, а при втором написании уже записывает ответ.

Прилагаю код хендлеров и состояний

class Task(StatesGroup):
    tag = State()
    difficulty = State()
    checks_tag = State()
    checks_difficulty = State()


@dp.message_handler(commands=['task'])
async def get_tag(message: types.Message):
    await message.reply("Введите тему задачи(на английском)\nДля получения списка задач, введите /tag_list")
    await Task.checks_tag.set()


@dp.message_handler(state=Task.checks_tag)
async def checks_tags(message: types.Message, state: FSMContext):
    user_answer = message.text
    if user_answer not in tags_list:
        await message.reply("Пожалуйста, введите тему корректно")
        await get_tag(user_answer)
    await state.update_data(tag=user_answer)
    await Task.tag.set()


@dp.message_handler(state=Task.tag)
async def get_difficulty(message: types.Message, state: FSMContext):
    await message.reply(
        "Теперь введите сложность задачи (от 800 до 3500 и кратно 100, где 800 - это самая легкая задача, а 3500 - самая сложная)")
    await Task.checks_difficulty.set()


@dp.message_handler(state=Task.checks_difficulty)
async def checks_difficulty(message: types.Message, state: FSMContext):
    user_answer = int(message.text)
    if (user_answer < 799) and (user_answer > 3501) and (user_answer % 100 != 0):
        await message.reply("Пожалуйста, введите сложность корректно")
        await get_difficulty(user_answer)
    await state.update_data(difficulty=user_answer)
    await Task.difficulty.set()


Далее идет код с взятием данных из бд, но проблема кроется именно в этом отрезке.
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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