Проблема с телеграм ботом

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

#1

import telebot
import translator_bot

bot = telebot.TeleBot(TOKEN)


@bot.message_handler(commands=["start"])
def start(m, res=False):
    bot.send_message(m.chat.id, f'''
Это тестовый бот переводчик
На какой язык перевести ваш текст ?
Для смены смены языка либо заново введите команду /start, либо напишите название языка для перевода''')


@bot.message_handler(content_types=["text"])
def user_text(message):
    global flag
    global result_dest
    flag = False
    if translator_bot.is_language(message.text) is True:
        bot.send_message(message.chat.id, 'Введите ваш текст на любом языке')
        result_dest = translator_bot.get_dest(message.text)
        flag = True
    elif flag == True and translator_bot.is_text(message.text) == True:
        result_src = translator_bot.get_src(message.text)
        result_text = translator_bot.translating(message.text, result_src, result_dest)
        bot.send_message(message.chat.id, result_text)
    else:
        bot.send_message(message.chat.id, 'Введите язык корректно')


bot.polling(none_stop=True, interval=0)

#2

from googletrans import Translator

languages = {
    'af': 'afrikaans',
    'sq': 'albanian',
    'am': 'amharic',
    'ar': 'arabic',
    'hy': 'armenian',
    'az': 'azerbaijani',
    'eu': 'basque',
    'be': 'belarusian',
    'bn': 'bengali',
    'bs': 'bosnian',
    'bg': 'bulgarian',
    'ca': 'catalan',
    'ceb': 'cebuano',
    'ny': 'chichewa',
    'zh-cn': 'chinese (simplified)',
    'zh-tw': 'chinese (traditional)',
    'co': 'corsican',
    'hr': 'croatian',
    'cs': 'czech',
    'da': 'danish',
    'nl': 'dutch',
    'en': 'english',
    'eo': 'esperanto',
    'et': 'estonian',
    'tl': 'filipino',
    'fi': 'finnish',
    'fr': 'french',
    'fy': 'frisian',
    'gl': 'galician',
    'ka': 'georgian',
    'de': 'german',
    'el': 'greek',
    'gu': 'gujarati',
    'ht': 'haitian creole',
    'ha': 'hausa',
    'haw': 'hawaiian',
    'iw': 'hebrew',
    'hi': 'hindi',
    'hmn': 'hmong',
    'hu': 'hungarian',
    'is': 'icelandic',
    'ig': 'igbo',
    'id': 'indonesian',
    'ga': 'irish',
    'it': 'italian',
    'ja': 'japanese',
    'jw': 'javanese',
    'kn': 'kannada',
    'kk': 'kazakh',
    'km': 'khmer',
    'ko': 'korean',
    'ku': 'kurdish (kurmanji)',
    'ky': 'kyrgyz',
    'lo': 'lao',
    'la': 'latin',
    'lv': 'latvian',
    'lt': 'lithuanian',
    'lb': 'luxembourgish',
    'mk': 'macedonian',
    'mg': 'malagasy',
    'ms': 'malay',
    'ml': 'malayalam',
    'mt': 'maltese',
    'mi': 'maori',
    'mr': 'marathi',
    'mn': 'mongolian',
    'my': 'myanmar (burmese)',
    'ne': 'nepali',
    'no': 'norwegian',
    'ps': 'pashto',
    'fa': 'persian',
    'pl': 'polish',
    'pt': 'portuguese',
    'pa': 'punjabi',
    'ro': 'romanian',
    'ru': 'russian',
    'sm': 'samoan',
    'gd': 'scots gaelic',
    'sr': 'serbian',
    'st': 'sesotho',
    'sn': 'shona',
    'sd': 'sindhi',
    'si': 'sinhala',
    'sk': 'slovak',
    'sl': 'slovenian',
    'so': 'somali',
    'es': 'spanish',
    'su': 'sundanese',
    'sw': 'swahili',
    'sv': 'swedish',
    'tg': 'tajik',
    'ta': 'tamil',
    'te': 'telugu',
    'th': 'thai',
    'tr': 'turkish',
    'uk': 'ukrainian',
    'ur': 'urdu',
    'uz': 'uzbek',
    'vi': 'vietnamese',
    'cy': 'welsh',
    'xh': 'xhosa',
    'yi': 'yiddish',
    'yo': 'yoruba',
    'zu': 'zulu',
    'fil': 'Filipino',
    'he': 'Hebrew'
}


translator = Translator()

def get_dest(value):
    value = translator.translate(value, src= 'ru', dest = 'en').text.lower()
    for k, v in languages.items():
        if v == value:
            return k


def translating(text, src, dest):
    language = translator.translate(text, src= src, dest = dest)
    return language.text


def is_language(text):
    if translating(text, 'ru', 'en').lower() in languages.values():
        return True

def is_text(text):
    if translating(text, 'ru', 'en').lower() not in languages.values():
        return True

def get_src(value):
    return translator.detect(value).lang.lower()

введите сюда описание изображения

Спустя кучу времени все таки исправил это. Насколько это решение плохо или не плохо, и есть ли более лучшие альтернативы решения ?

import telebot
import translator_bot

bot = telebot.TeleBot(TOKEN)


@bot.message_handler(commands=["start"])
def start(m, res=False):
    bot.send_message(m.chat.id, f'''
Это тестовый бот переводчик
На какой язык перевести ваш текст ?
Для смены смены языка либо заново введите команду /start, либо напишите название языка для перевода''')


@bot.message_handler(content_types=["text"])
def user_text(message):
    global result_dest
    try:
        if translator_bot.is_language(message.text) is True:
            bot.send_message(message.chat.id, 'Введите ваш текст на любом языке')
            result_dest = translator_bot.get_dest(message.text)
            # Проверка, что введенный текст это язык
        else:
            if translator_bot.is_language(message.text) is not True and translator_bot.is_text(message.text) == True:
                result_src = translator_bot.get_src(message.text)
                result_text = translator_bot.translating(message.text, result_src, result_dest)
                bot.send_message(message.chat.id, result_text)
            else:
                bot.send_message(message.chat.id, 'Введите язык корректно')
    except Exception as e:
        bot.send_message(message.chat.id, 'Введите язык корректно')

введите сюда описание изображения


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