Как телеграм ботом после получения команды '/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()