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

Refactor trigger list embed creation for custom reactions

This commit is contained in:
wlinator 2024-08-15 05:10:57 -04:00
parent 0a516460dd
commit 5076cebf62
3 changed files with 48 additions and 30 deletions

View file

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

View file

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

View file

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