diff --git a/api/translation.py b/api/translation.py index d07c07b..6d73950 100644 --- a/api/translation.py +++ b/api/translation.py @@ -15,12 +15,31 @@ def name_to_ISO(name: str) -> str: alpha = "" for language in langs: if language.name.lower() == name.lower(): - alpha = language.alpha_2 - break + try: + alpha = language.alpha_2 + break + except: + logging.warning(f"Tried to get alpha2 code of unknown language {language}") return alpha -def translate(text: str, lang: str) -> str: +def ISO_to_name(ISO: str) -> str: + name = "" + for language in langs: + try: + if language.alpha_2.lower() == ISO.lower(): + try: + name = language.name + break + except: + logging.warning(f"Tried to get name of unknown language code {ISO}") + except: + # i dont care tbh + pass + + return name + +def translate(text: str, lang: str) -> (str, str): url_encoded_text = urllib.parse.quote(text) url = f"https://translate.yandex.net/api/v1.5/tr.json/translate?key={api_key}&text={url_encoded_text}&lang={lang}" @@ -29,4 +48,5 @@ def translate(text: str, lang: str) -> str: logging.error(f"Failed to contact Yandex API: {response.status_code}") return "" - return response.json()["text"][0] \ No newline at end of file + print(response.json()) + return (response.json()["text"][0], response.json()["lang"]) \ No newline at end of file diff --git a/cogs/api/translation.py b/cogs/api/translation.py index 0016ef1..0fefec1 100644 --- a/cogs/api/translation.py +++ b/cogs/api/translation.py @@ -1,6 +1,6 @@ import discord from discord.ext import commands -from util import checking +from util import checking, embed from api import translation class Translation(commands.Cog): @@ -8,18 +8,22 @@ class Translation(commands.Cog): def __init__(self, client: discord.Client): self.client = client - @commands.command(name="translate", description="Translates the given text", usage="translate ", aliases=["tl"]) + @commands.command(name="translate", description="Translates the given text", usage="translate ", aliases=["tl"]) @commands.check(checking.is_author_bot) async def translate(self, ctx: commands.Context, language: str, *message: str): # Get language code code = translation.name_to_ISO(language) text = ' '.join(message) if code == "": - await ctx.send(f"There is no language named {language}.") + await ctx.send(embed=embed.make_error_embed(f"There is no language named **{language}**.")) return - translated = translation.translate(text, code) - await ctx.send(translated) + response = translation.translate(text, code) + translated = response[0] + direction = response[1].split("-") + _from = translation.ISO_to_name(direction[0]) + _to = translation.ISO_to_name(direction[1]) + await ctx.send(embed=embed.make_embed_field(f"{_from} -> {_to}", None, text, translated)) def setup(client: discord.Client): client.add_cog(Translation(client)) \ No newline at end of file diff --git a/util/embed.py b/util/embed.py new file mode 100644 index 0000000..a665ae0 --- /dev/null +++ b/util/embed.py @@ -0,0 +1,15 @@ +import discord +from util import config + +def make_error_embed(message: str) -> discord.Embed: + embed = discord.Embed(title="Error", description=message, colour=int(config.settings["err_color"], 16)) + return embed + +def make_embed(title: str, desc: str) -> discord.Embed: + embed = discord.Embed(title=title, description=desc, colour=int(config.settings["color"], 16)) + return embed + +def make_embed_field(title: str, desc: str, field_name: str, field_val: str) -> discord.Embed: + embed = discord.Embed(title=title, description=desc, colour=int(config.settings["color"], 16)) + embed.add_field(name=field_name, value=field_val) + return embed \ No newline at end of file