mirror of
https://github.com/MuRuLOSE/limoka.git
synced 2026-06-18 15:14:18 +02:00
Commited backup
This commit is contained in:
137
CakesTwix/Hikka-Modules/translate.py
Normal file
137
CakesTwix/Hikka-Modules/translate.py
Normal file
@@ -0,0 +1,137 @@
|
||||
"""
|
||||
|
||||
█▀▀ ▄▀█ █▄▀ █▀▀ █▀ ▀█▀ █░█░█ █ ▀▄▀
|
||||
█▄▄ █▀█ █░█ ██▄ ▄█ ░█░ ▀▄▀▄▀ █ █░█
|
||||
|
||||
Copyleft 2022 t.me/CakesTwix
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
||||
"""
|
||||
|
||||
__version__ = (2, 0, 0)
|
||||
|
||||
# meta pic: https://img.icons8.com/color/512/40C057/translate-text.png
|
||||
# meta developer: @cakestwix_mods
|
||||
# requires: translators
|
||||
|
||||
import logging
|
||||
import aiohttp, asyncio
|
||||
from .. import loader, utils
|
||||
import translators as trl
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@loader.unrestricted
|
||||
@loader.ratelimit
|
||||
@loader.tds
|
||||
class TranslatorMod(loader.Module):
|
||||
"""
|
||||
🔡 Module for text translation
|
||||
➡️ .tr en ru | Hello World
|
||||
➡️ .tr ru | Hello World
|
||||
➡️ .tr ru + reply to message
|
||||
"""
|
||||
|
||||
strings = {
|
||||
"name": "🔡 Translator",
|
||||
"cfg_lingva_url": "Alternative front-end for Google Translate",
|
||||
"error": "Error!\n .gtr [en] ru | text or check help",
|
||||
}
|
||||
|
||||
strings_ru = {
|
||||
"cfg_lingva_url": "Альтернативный интерфейс для Google Translate",
|
||||
"error": "Ошибка!\n .gtr [en] ru | текст или проверьте хелп",
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
self.config = loader.ModuleConfig(
|
||||
"lingva_url",
|
||||
"https://lingva.ml/api/v1/{source}/{target}/{query}",
|
||||
lambda m: self.strings("cfg_lingva_url", m),
|
||||
)
|
||||
self.name = self.strings["name"]
|
||||
|
||||
async def tr(self, message, translator):
|
||||
if args:= utils.get_args_raw(message):
|
||||
lang_args = args.split("|")[0].split() # Lang
|
||||
if reply := await message.get_reply_message():
|
||||
if reply.message == '':
|
||||
return await utils.answer(message, self.strings["error"])
|
||||
if len(lang_args) == 2:
|
||||
translated_text = translator(reply.message, from_language=lang_args[0], to_language=lang_args[1])
|
||||
return await utils.answer(message, translated_text)
|
||||
elif len(lang_args) == 1:
|
||||
translated_text = translator(reply.message, to_language=lang_args[0])
|
||||
return await utils.answer(message, translated_text)
|
||||
else:
|
||||
await utils.answer(message, self.strings["error"])
|
||||
await asyncio.sleep(5)
|
||||
await message.delete()
|
||||
return
|
||||
|
||||
text_args = args.split("|")[1] # Text
|
||||
if len(lang_args) == 2 and text_args:
|
||||
translated_text = translator(text_args, from_language=lang_args[0], to_language=lang_args[1])
|
||||
elif len(lang_args) == 1 and text_args:
|
||||
translated_text = translator(text_args, to_language=lang_args[0])
|
||||
else:
|
||||
await utils.answer(message, self.strings["error"])
|
||||
await asyncio.sleep(5)
|
||||
await message.delete()
|
||||
return
|
||||
|
||||
await utils.answer(message, translated_text)
|
||||
else:
|
||||
await utils.answer(message, self.strings["error"])
|
||||
await asyncio.sleep(5)
|
||||
await message.delete()
|
||||
|
||||
async def atrcmd(self, message):
|
||||
"""
|
||||
Based on Argos (LibreTranslate)
|
||||
"""
|
||||
await self.tr(message, trl.argos)
|
||||
|
||||
async def itrcmd(self, message):
|
||||
"""
|
||||
Based on Iciba
|
||||
"""
|
||||
await self.tr(message, trl.iciba)
|
||||
|
||||
async def gtrcmd(self, message):
|
||||
"""
|
||||
Based on Google Translate
|
||||
"""
|
||||
await self.tr(message, trl.google)
|
||||
|
||||
async def ltrcmd(self, message):
|
||||
"""
|
||||
Based on lingva.ml (Google Translate)
|
||||
"""
|
||||
if args:= utils.get_args_raw(message):
|
||||
lang_args = args.split("|")[0].split() # Lang
|
||||
text_args = args.split("|")[1] # Text
|
||||
if len(lang_args) == 2 and text_args:
|
||||
url = self.config["lingva_url"].format(
|
||||
source=lang_args[0], target=lang_args[1], query=text_args
|
||||
)
|
||||
elif len(lang_args) == 1 and text_args:
|
||||
url = self.config["lingva_url"].format(
|
||||
source="auto", target=lang_args[0], query=text_args
|
||||
)
|
||||
else:
|
||||
await utils.answer(message, self.strings["error"])
|
||||
await asyncio.sleep(5)
|
||||
await message.delete()
|
||||
return
|
||||
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(url) as get:
|
||||
translated_text = await get.json()
|
||||
await session.close()
|
||||
|
||||
await utils.answer(message, translated_text["translation"])
|
||||
else:
|
||||
await utils.answer(message, self.strings["error"])
|
||||
await asyncio.sleep(5)
|
||||
await message.delete()
|
||||
Reference in New Issue
Block a user