Телеграм бот, переводящий текст в верную раскладку
Хочу создать бота для группы своих друзей, который при ошибочном вводе предложений на русском с английской раскладки будет переводить этот набор букв в толковое предложение.
Как пример:
rfr ltkf?
Это фраза "как дела?"
, и мне нужно её перевести в обычный вид (на русский язык). Для этого я хочу, чтобы по написанию фразы "перевод"
мой бот брал из группы последнее значение, которое было введено на английском, и переводил его соответственно.
Как это сделать? Помогите, пожалуйста. Надеюсь, всё понятно объяснил
import telebot
layout = dict(zip(map(ord, "qwertyuiop[]asdfghjkl;'zxcvbnm,./`" 'QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>?~'), "йцукенгшщзхъфывапролджэячсмитьбю.ё" 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,Ё'))
bot = telebot.TeleBot('123')
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
if message.reply_to_message == 'перевод':
bot.send_message(message.from_user.id, translate(layout))
else:
print()
bot.polling(none_stop=True, interval=0)
Ответы (1 шт):
Не обязательно брать последнее значение. Вы можете сделать бота, который будет "переводить" то сообщение на которое вы ответите (reply). Способ получения текста нужного вам зависит от библиотеки, что вы используете, но, например для aiogram будет выглядеть примерно так:
message.reply_to_message.text
После чего вам нужно сопоставить символы в тексте с корректными, и отправить ответное сообщение. Вам помогут с кодом, если вы покажете пример собственной реализации.
UPD После добавления автором кода: В изначальной версии вопроса не была указана библиотека. За корректность моих названий функций библиотеки Telebot не ручаюсь.
В первую очередь, вам нужно сравнить текст сообщение с вашим ключом "перевод", соответственно message.text.lower() == "перевод"
. После вам нужно получить текст сообщения, на которое "перевод" является ответным будет что-то в духе txt = message.reply_to_message.text
и уже у полученного текста вызывать метод строки translate
.
Кроме того не рекомендую использовать print()
для пропуска, есть pass
для таких ситуаций (и вообще блок else
не обязателен)