from telethon.sync import TelegramClient, events
from telethon.errors import MessageNotModifiedError
from translatepy import Translator, exceptions
# https://my.telegram.org/apps - отсюда берем api id и api hash
API_ID = 123
API_HASH = "123"
client = TelegramClient("bot", API_ID, API_HASH)
client.start()
translator = Translator()
language = dict(lang="en", start=0)
@client.on(events.NewMessage(outgoing=True, pattern=r"(?i).trlang"))
async def languageset(event):
await event.delete()
lang = event.message.message.split(" ")[1].lower()
language["lang"] = lang
await client.send_message("me", "Язык перевода изменен на {}".format(lang))
@client.on(events.NewMessage(outgoing=True, pattern=r"(?i).trstart"))
async def start_translating(event):
await event.delete()
language["start"] = 1
await client.send_message(
"me", "Автоперевод сообщений запущен\nЯзык: {}".format(language["lang"])
)
@client.on(events.NewMessage(outgoing=True, pattern=r"(?i).trstop"))
async def stop_translating(event):
await event.delete()
language["start"] = 0
await client.send_message("me", "Автоперевод сообщений отключен")
@client.on(events.NewMessage(outgoing=True))
async def main(event):
if language["start"] == 1 and not event.message.message.startswith(".tr") and event.message.message != '':
try:
message = translator.translate(event.message.message, language["lang"])
await event.edit(message.result)
except (exceptions.NoResult, exceptions.UnknownLanguage) as error:
await event.delete()
await client.send_message(
"me",
"При переводе сообщения {} на язык ({}) возникла ошибка:\n{}\n\nВозможно такого языка не существует, попробуйте выбрать другой.".format(
event.message.message, language["lang"], error
),
)
except MessageNotModifiedError:
pass
client.run_until_disconnected()