1
Fork 0
mirror of https://github.com/wlinator/luminara.git synced 2024-10-02 18:23:12 +00:00

Optimize case commands

This commit is contained in:
wlinator 2024-08-29 07:06:24 -04:00
parent 84759ab294
commit 4e7c013836

View file

@ -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")