From d125668d259c18c0871fc23a70a49c0b104a680d Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Mon, 16 Jan 2023 08:25:54 +0000 Subject: [PATCH] Format Python code with psf/black push --- cogs/commands.py | 53 ++++++++++++++++++------ cogs/translation_service_cog.py | 73 ++++++++++++++++++++++----------- gpt3discord.py | 1 - models/autocomplete_model.py | 1 + models/check_model.py | 4 +- models/deepl_model.py | 16 ++++++-- 6 files changed, 106 insertions(+), 42 deletions(-) diff --git a/cogs/commands.py b/cogs/commands.py index 2cdba30..3fd0e4c 100644 --- a/cogs/commands.py +++ b/cogs/commands.py @@ -3,10 +3,15 @@ from pycord.multicog import add_to_group from services.environment_service import EnvService from models.check_model import Check -from models.autocomplete_model import Settings_autocompleter, File_autocompleter, Translations_autocompleter +from models.autocomplete_model import ( + Settings_autocompleter, + File_autocompleter, + Translations_autocompleter, +) ALLOWED_GUILDS = EnvService.get_allowed_guilds() + class Commands(discord.Cog, name="Commands"): """Cog containing all slash and context commands as one-liners""" @@ -507,33 +512,55 @@ class Commands(discord.Cog, name="Commands"): """ Translation commands and actions """ - @discord.slash_command(name="translate", description="Translate text to a given language", guild_ids=ALLOWED_GUILDS, - checks=[Check.check_translator_roles()], -) + + @discord.slash_command( + name="translate", + description="Translate text to a given language", + guild_ids=ALLOWED_GUILDS, + checks=[Check.check_translator_roles()], + ) @discord.option(name="text", description="The text to translate", required=True) - @discord.option(name="target_language", description="The language to translate to", required=True, autocomplete=Translations_autocompleter.get_languages) + @discord.option( + name="target_language", + description="The language to translate to", + required=True, + autocomplete=Translations_autocompleter.get_languages, + ) @discord.guild_only() - async def translate(self, ctx: discord.ApplicationContext, text: str, target_language: str): + async def translate( + self, ctx: discord.ApplicationContext, text: str, target_language: str + ): if self.translations_cog: await self.translations_cog.translate_command(ctx, text, target_language) else: - await ctx.respond("Translations are disabled on this server.", ephemeral=True) + await ctx.respond( + "Translations are disabled on this server.", ephemeral=True + ) - @discord.slash_command(name="languages", description="View the supported languages for translation", guild_ids=ALLOWED_GUILDS, - checks=[Check.check_translator_roles()],) + @discord.slash_command( + name="languages", + description="View the supported languages for translation", + guild_ids=ALLOWED_GUILDS, + checks=[Check.check_translator_roles()], + ) @discord.guild_only() async def languages(self, ctx: discord.ApplicationContext): if self.translations_cog: await self.translations_cog.languages_command(ctx) else: - await ctx.respond("Translations are disabled on this server.", ephemeral=True) - + await ctx.respond( + "Translations are disabled on this server.", ephemeral=True + ) @discord.message_command( - name="Translate", guild_ids=ALLOWED_GUILDS, checks=[Check.check_translator_roles()] + name="Translate", + guild_ids=ALLOWED_GUILDS, + checks=[Check.check_translator_roles()], ) async def translate_action(self, ctx, message: discord.Message): if self.translations_cog: await self.translations_cog.translate_action(ctx, message) else: - await ctx.respond("Translations are disabled on this server.", ephemeral=True) \ No newline at end of file + await ctx.respond( + "Translations are disabled on this server.", ephemeral=True + ) diff --git a/cogs/translation_service_cog.py b/cogs/translation_service_cog.py index c2542ab..3c0a609 100644 --- a/cogs/translation_service_cog.py +++ b/cogs/translation_service_cog.py @@ -12,10 +12,11 @@ from models.deepl_model import TranslationModel from services.environment_service import EnvService from services.image_service import ImageService from services.text_service import TextService + ALLOWED_GUILDS = EnvService.get_allowed_guilds() -def build_translation_embed( text, target_language): +def build_translation_embed(text, target_language): """Build an embed for the translation""" embed = discord.Embed( title=f"Translation results", @@ -25,10 +26,15 @@ def build_translation_embed( text, target_language): embed.add_field(name="Target language", value=target_language, inline=False) return embed + + class TranslationService(discord.Cog, name="TranslationService"): """Cog containing a draw commands and file management for saved images""" + def __init__( - self, bot, translation_model, + self, + bot, + translation_model, ): super().__init__() self.bot = bot @@ -45,10 +51,7 @@ class TranslationService(discord.Cog, name="TranslationService"): embed.add_field( name="Languages", value=", ".join( - [ - f"{name}" - for name in TranslationModel.get_all_country_names() - ] + [f"{name}" for name in TranslationModel.get_all_country_names()] ), inline=False, ) @@ -60,14 +63,19 @@ class TranslationService(discord.Cog, name="TranslationService"): await ctx.defer() # TODO Add pagination! - if target_language.lower().strip() not in TranslationModel.get_all_country_names(lower=True): + if ( + target_language.lower().strip() + not in TranslationModel.get_all_country_names(lower=True) + ): await ctx.respond( f"The language {target_language} is not recognized or supported. Please use `/languages` to see the list of supported languages." ) return try: - response = await self.translation_model.send_translate_request(text, TranslationModel.get_country_code_from_name(target_language)) + response = await self.translation_model.send_translate_request( + text, TranslationModel.get_country_code_from_name(target_language) + ) except aiohttp.ClientResponseError as e: await ctx.respond(f"There was an error with the DeepL API: {e.message}") return @@ -76,40 +84,59 @@ class TranslationService(discord.Cog, name="TranslationService"): async def translate_action(self, ctx, message): await ctx.defer(ephemeral=True) - selection_message = await ctx.respond("Select language", ephemeral=True, delete_after=60) - await selection_message.edit(view=TranslateView(self.translation_model, message, selection_message)) + selection_message = await ctx.respond( + "Select language", ephemeral=True, delete_after=60 + ) + await selection_message.edit( + view=TranslateView(self.translation_model, message, selection_message) + ) async def languages_command(self, ctx): """Show all languages supported for translation""" await ctx.defer() await ctx.respond(embed=self.build_supported_language_embed()) -class TranslateView(discord.ui.View): +class TranslateView(discord.ui.View): def __init__(self, translation_model, message, selection_message): super().__init__() self.translation_model = translation_model self.message = message self.selection_message = selection_message - @discord.ui.select( # the decorator that lets you specify the properties of the select menu - placeholder = "Language", # the placeholder text that will be displayed if nothing is selected - min_values = 1, # the minimum number of values that must be selected by the users - max_values = 1, # the maximum number of values that can be selected by the users - options = [ # the list of options from which users can choose, a required field + @discord.ui.select( # the decorator that lets you specify the properties of the select menu + placeholder="Language", # the placeholder text that will be displayed if nothing is selected + min_values=1, # the minimum number of values that must be selected by the users + max_values=1, # the maximum number of values that can be selected by the users + options=[ # the list of options from which users can choose, a required field discord.SelectOption( label=name, - ) for name in TranslationModel.get_all_country_names() - ] + ) + for name in TranslationModel.get_all_country_names() + ], ) - async def select_callback(self, select, interaction): # the function called when the user is done selecting options + async def select_callback( + self, select, interaction + ): # the function called when the user is done selecting options try: - response = await self.translation_model.send_translate_request(self.message.content, TranslationModel.get_country_code_from_name(select.values[0])) - await self.message.reply(mention_author=False, embed=build_translation_embed(self.message.content, response)) + response = await self.translation_model.send_translate_request( + self.message.content, + TranslationModel.get_country_code_from_name(select.values[0]), + ) + await self.message.reply( + mention_author=False, + embed=build_translation_embed(self.message.content, response), + ) await self.selection_message.delete() except aiohttp.ClientResponseError as e: - await interaction.response.send_message(f"There was an error with the DeepL API: {e.message}", ephemeral=True, delete_after=15) + await interaction.response.send_message( + f"There was an error with the DeepL API: {e.message}", + ephemeral=True, + delete_after=15, + ) return except Exception as e: - await interaction.response.send_message(f"There was an error: {e}", ephemeral=True, delete_after=15) + await interaction.response.send_message( + f"There was an error: {e}", ephemeral=True, delete_after=15 + ) return diff --git a/gpt3discord.py b/gpt3discord.py index 5ffbfea..011d472 100644 --- a/gpt3discord.py +++ b/gpt3discord.py @@ -166,7 +166,6 @@ async def main(): ) ) - apply_multicog(bot) await bot.start(os.getenv("DISCORD_TOKEN")) diff --git a/models/autocomplete_model.py b/models/autocomplete_model.py index 2078bf1..73c1db4 100644 --- a/models/autocomplete_model.py +++ b/models/autocomplete_model.py @@ -74,6 +74,7 @@ class Settings_autocompleter: if channel.name.startswith(ctx.value.lower()) ] + class Translations_autocompleter: """autocompleter for the translations command""" diff --git a/models/check_model.py b/models/check_model.py index e2a10a4..b7ebd77 100644 --- a/models/check_model.py +++ b/models/check_model.py @@ -68,7 +68,9 @@ class Check: async def inner(ctx: discord.ApplicationContext): if TRANSLATOR_ROLES == [None]: return True - if not any(role.name.lower() in TRANSLATOR_ROLES for role in ctx.user.roles): + if not any( + role.name.lower() in TRANSLATOR_ROLES for role in ctx.user.roles + ): await ctx.defer(ephemeral=True) await ctx.respond( f"You don't have permission, list of roles is {TRANSLATOR_ROLES}", diff --git a/models/deepl_model.py b/models/deepl_model.py index f2f693c..a7562de 100644 --- a/models/deepl_model.py +++ b/models/deepl_model.py @@ -31,8 +31,9 @@ COUNTRY_CODES = { "UK": "Ukrainian", "ZH": "Chinese (simplified)", } -class TranslationModel: + +class TranslationModel: def __init__(self): self.deepl_token = os.getenv("DEEPL_TOKEN") @@ -64,7 +65,9 @@ class TranslationModel: "Authorization": f"DeepL-Auth-Key {self.deepl_token}", } async with session.post( - "https://api-free.deepl.com/v2/translate", params=payload, headers=headers + "https://api-free.deepl.com/v2/translate", + params=payload, + headers=headers, ) as resp: response = await resp.json() print(response) @@ -75,10 +78,15 @@ class TranslationModel: print(response) traceback.print_exc() return response + @staticmethod def get_all_country_names(lower=False): """Get a list of all the country names""" - return list(COUNTRY_CODES.values()) if not lower else [name.lower() for name in COUNTRY_CODES.values()] + return ( + list(COUNTRY_CODES.values()) + if not lower + else [name.lower() for name in COUNTRY_CODES.values()] + ) @staticmethod def get_all_country_codes(): @@ -95,4 +103,4 @@ class TranslationModel: """Get the country code from the name""" for code, country_name in COUNTRY_CODES.items(): if country_name.lower().strip() == name.lower().strip(): - return code \ No newline at end of file + return code