бот переводчик в телеграмм (запрос текста от пользователя)
Я пишу бота для перевода с Английского языка на русский, для этого нашёл хорошую библиотеку 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 шт):
В такой ситуации можно воспользоваться абстракцией 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, 'Введи мне текст на Английском языке')