mirror of
https://github.com/wlinator/luminara.git
synced 2024-10-02 16:03:12 +00:00
Optimize case commands
This commit is contained in:
parent
84759ab294
commit
4e7c013836
1 changed files with 40 additions and 37 deletions
|
@ -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")
|
||||
|
|
Loading…
Reference in a new issue