Пишу бота-агрегатора задач с сайта задач по программированию
Не могу понять, почему бот спрашивает тему и сложность дважды. Сначала он проверяет правильность, а при втором написании уже записывает ответ.
Прилагаю код хендлеров и состояний
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()
Далее идет код с взятием данных из бд, но проблема кроется именно в этом отрезке.