From 5076cebf6248319e916584b803db25cf846017d4 Mon Sep 17 00:00:00 2001 From: wlinator Date: Thu, 15 Aug 2024 05:10:57 -0400 Subject: [PATCH] Refactor trigger list embed creation for custom reactions --- config/JSON/strings.json | 9 ++++++ lib/embeds/triggers.py | 4 +-- modules/triggers/list.py | 65 +++++++++++++++++++++++----------------- 3 files changed, 48 insertions(+), 30 deletions(-) diff --git a/config/JSON/strings.json b/config/JSON/strings.json index f9cdd23..fcc24df 100644 --- a/config/JSON/strings.json +++ b/config/JSON/strings.json @@ -1,4 +1,13 @@ { + "triggers_list_trigger_text": "**Trigger Text:** `{0}`", + "triggers_list_reaction_type": "**Reaction Type:** {0}", + "triggers_list_emoji_id": "**Emoji ID:** `{0}`", + "triggers_list_response": "**Response:** `{0}`", + "triggers_list_full_match": "**Full Match:** `{0}`", + "triggers_list_usage_count": "**Usage Count:** `{0}`", + "triggers_list_custom_reaction_id": "**ID:** {0}", + "triggers_list_custom_reactions_title": "Custom Reactions", + "triggers_reaction_service_footer": "Reaction Service", "greet_default_description": "_ _\n**Welcome** to **{0}**", "greet_template_description": "↓↓↓\n{0}", "boost_default_title": "New Booster", diff --git a/lib/embeds/triggers.py b/lib/embeds/triggers.py index 9236aef..682847f 100644 --- a/lib/embeds/triggers.py +++ b/lib/embeds/triggers.py @@ -26,7 +26,7 @@ def create_embed( ) embed.set_author(name=title, icon_url=icon_url) embed.set_footer(text="Reaction Service", icon_url=logo) - embed.timestamp = datetime.datetime.utcnow() + embed.timestamp = datetime.datetime.now(datetime.timezone.utc) return embed @@ -44,7 +44,7 @@ def create_creation_embed( description = ( f"**Trigger Text:** `{trigger_text}`\n" f"**Reaction Type:** {'Emoji' if is_emoji else 'Text'}\n" - f"{f'**Emoji ID:** `{str(emoji_id)}`' if is_emoji else f'**Response:** `{response}`'}\n" + f"{f'**Emoji ID:** `{emoji_id}`' if is_emoji else f'**Response:** `{response}`'}\n" f"**Full Match:** `{is_full_match}`" ) return create_embed("Custom Reaction Created", description, 0xFF8C00, check_icon) diff --git a/modules/triggers/list.py b/modules/triggers/list.py index af7d9d1..c1669e4 100644 --- a/modules/triggers/list.py +++ b/modules/triggers/list.py @@ -1,51 +1,60 @@ -import datetime - -import discord from discord.ext import bridge, pages - -from config.parser import JsonCache +from lib.constants import CONST +from lib.embed_builder import EmbedBuilder from lib.embeds.triggers import create_no_triggers_embed from services.reactions_service import CustomReactionsService +from typing import Any, Dict, List -resources = JsonCache.read_json("art") - -check_icon = resources["icons"]["check"] -logo = resources["logo"]["transparent"] +import discord async def list_reactions(ctx: bridge.Context) -> None: if ctx.guild is None: return - reaction_service = CustomReactionsService() + reaction_service: CustomReactionsService = CustomReactionsService() guild_id: int = ctx.guild.id - # Fetch all reactions for the guild - reactions = await reaction_service.find_all_by_guild(guild_id) + reactions: List[Dict[str, Any]] = await reaction_service.find_all_by_guild(guild_id) if not reactions: - embed = create_no_triggers_embed() + embed: discord.Embed = create_no_triggers_embed() await ctx.respond(embed=embed) return - # Create pages for pagination pages_list = [] for reaction in reactions: - description = ( - f"**Trigger Text:** `{reaction['trigger_text']}`\n" - f"**Reaction Type:** {'Emoji' if reaction['is_emoji'] else 'Text'}\n" - f"{'**Emoji ID:** `{}`'.format(str(reaction['emoji_id'])) if reaction['is_emoji'] else '**Response:** `{}`'.format(reaction['response'])}\n" - f"**Full Match:** `{'True' if reaction['is_full_match'] else 'False'}`\n" - f"**Usage Count:** `{reaction['usage_count']}`" + embed = EmbedBuilder.create_success_embed( + ctx, + title=CONST.STRINGS["triggers_list_custom_reaction_id"].format( + reaction["id"], + ), + author_text=CONST.STRINGS["triggers_list_custom_reactions_title"], + footer_text=CONST.STRINGS["triggers_reaction_service_footer"], + show_name=False, ) - embed = discord.Embed( - title=f"ID: {reaction['id']}", - description=description, - color=0xFF8C00, + + embed.description = "\n".join( + [ + CONST.STRINGS["triggers_list_trigger_text"].format( + reaction["trigger_text"], + ), + CONST.STRINGS["triggers_list_reaction_type"].format( + "Emoji" if reaction["is_emoji"] else "Text", + ), + CONST.STRINGS["triggers_list_emoji_id"].format(reaction["emoji_id"]) + if reaction["is_emoji"] + else CONST.STRINGS["triggers_list_response"].format( + reaction["response"], + ), + CONST.STRINGS["triggers_list_full_match"].format( + reaction["is_full_match"], + ), + CONST.STRINGS["triggers_list_usage_count"].format( + reaction["usage_count"], + ), + ], ) - embed.set_author(name="Custom Reactions", icon_url=check_icon) - embed.set_footer(text="Reaction Service", icon_url=logo) - embed.timestamp = datetime.datetime.utcnow() pages_list.append(embed) - paginator = pages.Paginator(pages=pages_list, timeout=180.0) + paginator: pages.Paginator = pages.Paginator(pages=pages_list, timeout=180.0) await paginator.respond(ctx, ephemeral=False)