From 4e7c01383618653b5d289b85a07a848536cb6e09 Mon Sep 17 00:00:00 2001 From: wlinator Date: Thu, 29 Aug 2024 07:06:24 -0400 Subject: [PATCH] Optimize case commands --- modules/moderation/cases.py | 77 +++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/modules/moderation/cases.py b/modules/moderation/cases.py index 7d79946..b53fe2e 100644 --- a/modules/moderation/cases.py +++ b/modules/moderation/cases.py @@ -18,6 +18,31 @@ from ui.embeds import Builder case_service = CaseService() +def create_no_cases_embed(ctx: commands.Context[commands.Bot], author_text: str, description: str) -> discord.Embed: + return Builder.create_embed( + user_name=ctx.author.name, + author_text=author_text, + description=description, + ) + + +def create_case_view_menu(ctx: commands.Context[commands.Bot]) -> ViewMenu: + menu = ViewMenu(ctx, menu_type=ViewMenu.TypeEmbed, all_can_click=True, delete_on_timeout=True) + + menu.add_button( + ViewButton(style=discord.ButtonStyle.secondary, custom_id=ViewButton.ID_GO_TO_FIRST_PAGE, emoji="⏮️"), + ) + menu.add_button( + ViewButton(style=discord.ButtonStyle.secondary, custom_id=ViewButton.ID_PREVIOUS_PAGE, emoji="⏪"), + ) + menu.add_button(ViewButton(style=discord.ButtonStyle.secondary, custom_id=ViewButton.ID_NEXT_PAGE, emoji="⏩")) + menu.add_button( + ViewButton(style=discord.ButtonStyle.secondary, custom_id=ViewButton.ID_GO_TO_LAST_PAGE, emoji="⏭️"), + ) + + return menu + + class Cases(commands.Cog): def __init__(self, bot: commands.Bot): self.bot = bot @@ -29,10 +54,10 @@ class Cases(commands.Cog): case = case_service.fetch_case_by_guild_and_number(guild_id, case_number) if not case: - embed = Builder.create_embed( - user_name=ctx.author.name, - author_text=CONST.STRINGS["error_no_case_found_author"], - description=CONST.STRINGS["error_no_case_found_description"], + embed = create_no_cases_embed( + ctx, + CONST.STRINGS["error_no_case_found_author"], + CONST.STRINGS["error_no_case_found_description"], ) await ctx.send(embed=embed) return @@ -59,15 +84,15 @@ class Cases(commands.Cog): cases = case_service.fetch_cases_by_guild(guild_id) if not cases: - embed = Builder.create_embed( - user_name=ctx.author.name, - author_text=CONST.STRINGS["case_guild_no_cases_author"], - description=CONST.STRINGS["case_guild_no_cases"], + embed = create_no_cases_embed( + ctx, + CONST.STRINGS["case_guild_no_cases_author"], + CONST.STRINGS["case_guild_no_cases"], ) await ctx.send(embed=embed) return - menu = ViewMenu(ctx, menu_type=ViewMenu.TypeEmbed, all_can_click=True, delete_on_timeout=True) + menu = create_case_view_menu(ctx) for i in range(0, len(cases), 10): chunk = cases[i : i + 10] @@ -78,17 +103,6 @@ class Cases(commands.Cog): ) menu.add_page(embed) - menu.add_button( - ViewButton(style=discord.ButtonStyle.secondary, custom_id=ViewButton.ID_GO_TO_FIRST_PAGE, emoji="⏮️"), - ) - menu.add_button( - ViewButton(style=discord.ButtonStyle.secondary, custom_id=ViewButton.ID_PREVIOUS_PAGE, emoji="⏪"), - ) - menu.add_button(ViewButton(style=discord.ButtonStyle.secondary, custom_id=ViewButton.ID_NEXT_PAGE, emoji="⏩")) - menu.add_button( - ViewButton(style=discord.ButtonStyle.secondary, custom_id=ViewButton.ID_GO_TO_LAST_PAGE, emoji="⏭️"), - ) - await menu.start() @commands.hybrid_command(name="modcases", aliases=["mc", "modc"], description="View all cases in the guild") @@ -100,17 +114,17 @@ class Cases(commands.Cog): guild_id = ctx.guild.id cases = case_service.fetch_cases_by_moderator(guild_id, moderator.id) - menu = ViewMenu(ctx, menu_type=ViewMenu.TypeEmbed, all_can_click=True, delete_on_timeout=True) - if not cases: - embed = Builder.create_embed( - user_name=ctx.author.name, - author_text=CONST.STRINGS["case_mod_no_cases_author"], - description=CONST.STRINGS["case_mod_no_cases"], + embed = create_no_cases_embed( + ctx, + CONST.STRINGS["case_mod_no_cases_author"], + CONST.STRINGS["case_mod_no_cases"], ) await ctx.send(embed=embed) return + menu = create_case_view_menu(ctx) + for i in range(0, len(cases), 10): chunk = cases[i : i + 10] embed = create_case_list_embed( @@ -120,17 +134,6 @@ class Cases(commands.Cog): ) menu.add_page(embed) - menu.add_button( - ViewButton(style=discord.ButtonStyle.secondary, custom_id=ViewButton.ID_GO_TO_FIRST_PAGE, emoji="⏮️"), - ) - menu.add_button( - ViewButton(style=discord.ButtonStyle.secondary, custom_id=ViewButton.ID_PREVIOUS_PAGE, emoji="⏪"), - ) - menu.add_button(ViewButton(style=discord.ButtonStyle.secondary, custom_id=ViewButton.ID_NEXT_PAGE, emoji="⏩")) - menu.add_button( - ViewButton(style=discord.ButtonStyle.secondary, custom_id=ViewButton.ID_GO_TO_LAST_PAGE, emoji="⏭️"), - ) - await menu.start() @commands.hybrid_command(name="editcase", aliases=["ec"], description="Edit the reason for a case")