From ccdf2e7831d3dd967973acec80425778541b37f1 Mon Sep 17 00:00:00 2001 From: sidakk95 Date: Tue, 30 Nov 2021 14:16:38 -0500 Subject: [PATCH] #233: implement translation feature --- .env.example | 2 +- bot/constants.py | 1 + bot/utility/utility.py | 26 ++++++++++++++++++++++++++ requirements.txt | 1 + 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index b9e422c..7223406 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,6 @@ # API Keys DISCORD_BOT_TOKEN = - +DEEPL_API_KEY = # File Paths LOG_FILE_PATH = diff --git a/bot/constants.py b/bot/constants.py index 18f2dda..99d4f86 100644 --- a/bot/constants.py +++ b/bot/constants.py @@ -117,6 +117,7 @@ # API Keys DISCORD_BOT_TOKEN = os.getenv("DISCORD_BOT_TOKEN") or "Undefined" +DEEPL_API_KEY = os.getenv("DEEPL_API_KEY") or "Undefined" # File Paths LOG_FILE_PATH = os.getenv("LOG_FILE_PATH") or '/logfile.log' diff --git a/bot/utility/utility.py b/bot/utility/utility.py index 97fd241..386a675 100644 --- a/bot/utility/utility.py +++ b/bot/utility/utility.py @@ -4,10 +4,13 @@ from typing import List, Optional import discord +from deepl import DeepLException from discord.ext import commands from bot import constants +from bot.__main__ import intents from bot.logger import command_log, log +import deepl class UtilityCog(commands.Cog): @@ -212,6 +215,29 @@ async def welcome_message(self, user: discord.Member): "__gemeinsam__ schaffen wir das!** :muscle:") await user.send(content=content, embed=embed) + @commands.command(name='translate') + @command_log + async def translate_msg(self, ctx: commands.Context, *, msg_id: int): + """Command Handler for the `translate` command. + + Translates the message with the provided id to english and sends the translation as a dm to the user + + Args: + ctx (discord.ext.commands.Context): The context in which the command was called. + msg_id (int): The id of the message that should be translated + + """ + message = await ctx.fetch_message(msg_id) + if constants.DEEPL_API_KEY == "undefined": + await message.author.send("Translation is currently unavailable(no api key)") + translator = deepl.Translator(constants.DEEPL_API_KEY) + try: + translated_text = translator.translate_text(message.content, target_lang="EN-US").text + except DeepLException: + await message.author.send("Translation is currently unavailable") + return + await message.author.send("Original:\n{}\n\nTranslated:\n{}".format(message.content, translated_text)) + def build_serverinfo_strings(guild: discord.Guild) -> List[str]: """Function for building the strings needed for the serverinfo Embed. diff --git a/requirements.txt b/requirements.txt index d8ad24f..d01255e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -43,3 +43,4 @@ websockets==9.1 wrapt==1.12.1 yarl==1.6.3 youtube-dl==2021.5.16 +deepl==1.3.1 \ No newline at end of file