Как телеграм ботом после получения команды '/get_words' считать следующее (одно) сообщение?

db - база данных, w[0] - одна строка, w[1] - вторая строка

@dp.message_handler(commands=['get_words'])
async def get_words(message: types.Message):
    w = db.get_random_words()
    await message.answer(w[0])
    await message.answer('Напишите перевод')

    @dp.message_handler(content_types='text')
    async def check_translate(message2: types.Message):
        if message2.text.lower() == w[1]:
            await message2.answer('Я просто похлопаю')
        else:
            await message2.answer('Ты ошибся')

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

Автор решения: Данила Граф

всё очень просто. тебе нужно поработать с состоянием пользователя:

from aiogram.dispatcher import FSMContext


@dp.message_handler(commands=['get_words'])
async def get_words(message: types.Message, state: FSMContext):
    w = db.get_random_words()
    await message.answer(w[0])
    await message.answer('Напишите перевод')
    # Устанавливаем состояние пользователю
    await state.set_state("waiting_for_message")

# в хендлер передаем в фильтр состояние 'waiting_for_message'
@dp.message_handler(content_types='text', state='waiting_for_message')
async def check_translate(message2: types.Message, state: FSMContext):
    if message2.text.lower() == w[1]:
        await message2.answer('Я просто похлопаю')
    else:
        await message2.answer('Ты ошибся')
    # завершаем состояние
    await state.finish()
→ Ссылка