Хочу зациклить выполнения определённого хэндлера до того момента, пока бы пользователь, посредством нажатия кнопки, сам бы не вышел из этого цикла.
Вот код первого хэндлера:
@dp.message_handler(state=Testing.easy_difficult_selected)
@dp.message_handler(lambda msg: msg == 'легкий')
async def testing_easy_difficult(message: types.Message, state: FSMContext):
import random
data = await state.get_data()
i = 0
answers = {}
kbAnswersChoose = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True, row_width=2)
category = data.get("category")
words = await db.async_testing_easy_difficult()
for word in words:
answers[i] = word[0][1]
i += 1
for button_name, word in answers.items():
button_name = KeyboardButton(word)
kbAnswersChoose.insert(button_name)
btnGoBack = KeyboardButton("Вернуться в главное меню")
kbAnswersChoose.insert(btnGoBack)
word_and_translate = random.choice(words[random.randint(0, 4)])
word_originally = word_and_translate[0]
word_translate = word_and_translate[1]
await state.update_data(word_translate=word_translate)
await message.answer(f"Дано слово: {word_originally}\n\n Каков его перевод?",
reply_markup=kbAnswersChoose)
await Testing.waiting_for_choose_right_answer.set()
Вот код хэндлера, к которому переходит управление, после того, как пользователь отправил слово:
@dp.message_handler(state=Testing.waiting_for_choose_right_answer)
async def testing_answer(message: types.Message, state: FSMContext):
await state.update_data(answer=message.text)
data = await state.get_data()
if data.get('answer') == data.get('word_translate'):
await message.answer(f"Верно! Это слово переводится, как {data.get('answer')}!")
else:
await message.answer(f"К сожалению, ты ошибься. Это слово переводится, как {data.get('word_translate')}. Будь "
f"внимательнее в следующий раз!")
await Testing.easy_difficult_selected.set()
Вот мне нужно, чтобы выполнения последнего хэндлера сразу же начал выполняться предыдущий; без отправки сообщения пользователем. Сейчас он начинает работать только в том случае, если пользователь ввёл любое сообщение.