бот переводчик в телеграмм (запрос текста от пользователя)

Я пишу бота для перевода с Английского языка на русский, для этого нашёл хорошую библиотеку translate, поскольку google по каким-то причинам отказывается работать. во время создания такого бота я столкнулся с проблемой. мне нужно: после нажатия кнопки на клавиатуре, бот должен запросить текст у пользователя, и прислать ему его перевод

elif message.text == '??Перевод??':
    bot.send_message(message.chat.id, 'Введи мне текст на Английском языке')
    # тут он должен запрашивать текст у пользователя
    translator = Translator(to_lang="Russian")
    translation = translator.translate('тут по идее можно сделать переменную с текстом от пользователя')
    #тут он должен выводить уже переведённый текст
    bot.send_message(message.chat.id, translation)

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

Автор решения: EVG

В такой ситуации можно воспользоваться абстракцией Finite-state machine. Короче говоря после просьбы ввести английский текст условие будет завершено, а пользователю, который должен прислать текст, нужно присвоить состояние ожидания текста, и при последующих сообщениях проверять пользователя на наличие такого состояние.
В некоторых бот-фреймворках из коробки присутствует FSM, поэтому стоит почитать документацию к используемой вами телеграм библиотеке, возможно там уже есть данный функционал.

Также можно создать обычный список, в котором хранить нужных пользователей.

users = [] #список с пользователями, от которых ожидается ответ
if message.chat.id in users:
    users.remove(message.chat.id)
    translator = Translator(to_lang="Russian")
    translation = translator.translate(message.text)
    bot.send_message(message.chat.id, translation)

elif message.text == '??Перевод??':
    users.append(message.chat.id)
    bot.send_message(message.chat.id, 'Введи мне текст на Английском языке')
→ Ссылка