Хочу с помощью гугол переводчика сделать перевод описания бота на все языки. Есть возможность локализовать имя бота, длинное описание, короткое описание и команды. Делается это как от так
bot.set_my_name(tr(new_bot_name, lang), language_code=lang)
.set_my_description()
.set_my_short_description()
.set_my_commands
Сделал, но судя по этим ошибкам не дождусь выполнения никогда. Как это надо правильно делать?
Не удалось установить команды по умолчанию для языка yo: A request to the Telegram API was unsuccessful. Error code: 429. Description: Too Many Requests: retry after 846
...
Не удалось установить имя бота: Bot A request to the Telegram API was unsuccessful. Error code: 429. Description: Too Many Requests: retry after 35118
@bot.message_handler(commands=['init'])
def set_default_commands(message: telebot.types.Message):
thread = threading.Thread(target=set_default_commands_thread, args=(message,))
thread.start()
def set_default_commands_thread(message: telebot.types.Message):
"""
Reads a file containing a list of commands and their descriptions,
and sets the default commands for the bot.
"""
# не обрабатывать команды к другому боту /cmd@botname args
if is_for_me(message.text)[0]: message.text = is_for_me(message.text)[1]
else: return
chat_full_id = get_topic_id(message)
user_lang = get_lang(chat_full_id, message)
if message.from_user.id not in cfg.admins:
bot.reply_to(message, tr("Эта команда доступна только администраторам", user_lang))
return
def get_seconds(s):
match = re.search(r"after\s+(?P<seconds>\d+)", s)
if match:
return int(match.group("seconds"))
else:
return 0
bot.reply_to(message, tr("Локализация займет много времени, не повторяйте эту команду", user_lang))
# most_used_langs = ['ar', 'bn', 'da', 'de', 'el', 'en', 'es', 'fa', 'fi', 'fr', 'hi',
# 'hu', 'id', 'in', 'it', 'ja', 'ko', 'nl', 'no', 'pl', 'pt', 'ro',
# 'ru', 'sv', 'sw', 'th', 'tr', 'uk', 'ur', 'vi', 'zh']
most_used_langs = [x for x in supported_langs_trans if len(x) == 2]
msg_commands = ''
for lang in most_used_langs:
commands = []
with open('commands.txt', encoding='utf-8') as file:
for line in file:
try:
command, description = line[1:].strip().split(' - ', 1)
if command and description:
description = tr(description, lang)
commands.append(telebot.types.BotCommand(command, description))
except Exception as error:
my_log.log2(f'Не удалось прочитать команды по умолчанию для языка {lang}: {error}')
result = False
try:
result = bot.set_my_commands(commands, language_code=lang)
except Exception as error_set_command:
my_log.log2(f'Не удалось установить команды по умолчанию для языка {lang}: {error_set_command} ')
time.sleep(get_seconds(str(error_set_command)))
try:
result = bot.set_my_commands(commands, language_code=lang)
except Exception as error_set_command2:
my_log.log2(f'Не удалось установить команды по умолчанию для языка {lang}: {error_set_command2}')
if result:
result = '✅'
else:
result = '❌'
msg = f'{result} Установлены команды по умолчанию [{lang}]'
msg_commands += msg + '\n'
reply_to_long_message(message, msg_commands)
new_bot_name = cfg.bot_name.strip()
new_description = cfg.bot_description.strip()
new_short_description = cfg.bot_short_description.strip()
msg_bot_names = ''
for lang in most_used_langs:
result = False
try:
result = bot.set_my_name(tr(new_bot_name, lang), language_code=lang)
except Exception as error_set_name:
my_log.log2(f'Не удалось установить имя бота: {tr(new_bot_name, lang)}'+'\n\n'+str(error_set_name))
time.sleep(get_seconds(str(error_set_name)))
try:
result = bot.set_my_name(tr(new_bot_name, lang), language_code=lang)
except Exception as error_set_name2:
my_log.log2(f'Не удалось установить имя бота: {tr(new_bot_name, lang)}'+'\n\n'+str(error_set_name2))
if result:
msg_bot_names += '✅ Установлено имя бота для языка ' + lang + '\n'
else:
msg_bot_names += '❌ Установлено имя бота для языка ' + lang + '\n'
reply_to_long_message(message, msg_bot_names)
msg_descriptions = ''
for lang in most_used_langs:
result = False
try:
result = bot.set_my_description(tr(new_description, lang), language_code=lang)
except Exception as error_set_description:
my_log.log2(f'Не удалось установить описание бота {lang}: {tr(new_description, lang)}'+'\n\n'+str(error_set_description))
time.sleep(get_seconds(str(error_set_description)))
try:
result = bot.set_my_description(tr(new_description, lang), language_code=lang)
except Exception as error_set_description2:
my_log.log2(f'Не удалось установить описание бота {lang}: {tr(new_description, lang)}'+'\n\n'+str(error_set_description2))
msg_descriptions += '❌ Установлено новое описание бота для языка ' + lang + '\n'
continue
if result:
msg_descriptions += '✅ Установлено новое описание бота для языка ' + lang + '\n'
else:
msg_descriptions += '❌ Установлено новое описание бота для языка ' + lang + '\n'
reply_to_long_message(message, msg_descriptions)
msg_descriptions = ''
for lang in most_used_langs:
result = False
try:
result = bot.set_my_short_description(tr(new_short_description, lang), language_code=lang)
except Exception as error_set_short_description:
my_log.log2(f'Не удалось установить короткое описание бота: {tr(new_short_description, lang)}'+'\n\n'+str(error_set_short_description))
time.sleep(get_seconds(str(error_set_short_description)))
try:
result = bot.set_my_short_description(tr(new_short_description, lang), language_code=lang)
except Exception as error_set_short_description2:
my_log.log2(f'Не удалось установить короткое описание бота: {tr(new_short_description, lang)}'+'\n\n'+str(error_set_short_description2))
msg_descriptions += '❌ Установлено новое короткое описание бота для языка ' + lang + '\n'
continue
if result:
msg_descriptions += '✅ Установлено новое короткое описание бота для языка ' + lang + '\n'
else:
msg_descriptions += '❌ Установлено новое короткое описание бота для языка ' + lang + '\n'
reply_to_long_message(message, msg_descriptions)