From 8d2e9254619469f2bd980aea12245fc28ce0a9ba Mon Sep 17 00:00:00 2001 From: No767 <73260931+No767@users.noreply.github.com> Date: Tue, 19 Dec 2023 14:03:07 -0800 Subject: [PATCH] Include better logging embed and fix timeout issues --- bot/cogs/tickets.py | 14 ++++++-------- bot/libs/tickets/utils.py | 15 +++++++++++++++ bot/libs/tickets/views.py | 8 ++++---- bot/libs/utils/embeds.py | 1 + 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/bot/cogs/tickets.py b/bot/cogs/tickets.py index bd96ce2..305be17 100644 --- a/bot/cogs/tickets.py +++ b/bot/cogs/tickets.py @@ -10,6 +10,7 @@ from discord.ext import commands from libs.tickets.structs import ReservedTags, TicketThread from libs.tickets.utils import get_cached_thread, get_partial_ticket +from libs.utils.embeds import LoggingEmbed from .config import GuildWebhookDispatcher @@ -289,18 +290,15 @@ async def on_ticket_create( ticket: discord.channel.ThreadWithMessage, init_message: str, ): - selected_mod = self.determine_active_mod(guild) dispatcher = GuildWebhookDispatcher(self.bot, guild.id) webhook = await dispatcher.get_webhook() - select_mod_mention = f"{selected_mod.mention}, " if selected_mod else "" - if webhook is not None: - msg = ( - f"{select_mod_mention}{user.display_name} has created a ticket at {ticket.thread.mention}. The initial message has been provided below:\n\n" - f"{init_message}" - ) - await webhook.send(content=msg) + embed = LoggingEmbed(title="\U0001f3ab New Ticket") + embed.description = init_message + embed.add_field(name="Owner", value=user.mention) + embed.add_field(name="Link", value=ticket.thread.mention) + await webhook.send(embed=embed) async def setup(bot: Rodhaj) -> None: diff --git a/bot/libs/tickets/utils.py b/bot/libs/tickets/utils.py index 5e67989..96c47bf 100644 --- a/bot/libs/tickets/utils.py +++ b/bot/libs/tickets/utils.py @@ -102,3 +102,18 @@ async def get_cached_thread( if thread is None: return None return ThreadWithGuild(thread, thread.guild) + + +def safe_content(content: str, amount: int = 4000) -> str: + """Safely sends the content by reducing the length + to avoid errors + + Args: + content (str): Content to be sent + + Returns: + str: A safe version of the content + """ + if len(content) > amount: + return content[: amount - 3] + "..." + return content diff --git a/bot/libs/tickets/views.py b/bot/libs/tickets/views.py index 3347440..a9de3f2 100644 --- a/bot/libs/tickets/views.py +++ b/bot/libs/tickets/views.py @@ -6,7 +6,7 @@ from libs.tickets.structs import TicketThread from libs.utils import ErrorEmbed, RoboView -from .utils import register_user +from .utils import register_user, safe_content if TYPE_CHECKING: from libs.utils.context import RoboContext @@ -72,7 +72,7 @@ async def confirm( self.guild, self.ctx.author, created_ticket.ticket, - self.content, + safe_content(self.content), ) embed = discord.Embed( title="\U0001f3ab Ticket created", color=discord.Color.from_rgb(124, 252, 0) @@ -81,7 +81,7 @@ async def confirm( if self.message: await self.message.edit( - content=None, embed=embed, view=None, delete_after=15.0 + content=None, embed=embed, view=None, delete_after=5.0 ) @discord.ui.button( @@ -106,5 +106,5 @@ async def on_timeout(self) -> None: "Timed out waiting for a response. Not creating a ticket. " "In order to create a ticket, please resend your message and properly confirm" ) - await self.message.edit(embed=embed, view=None, delete_after=15.0) + await self.message.edit(embed=embed, view=None) return diff --git a/bot/libs/utils/embeds.py b/bot/libs/utils/embeds.py index 5ff28e4..8efdede 100644 --- a/bot/libs/utils/embeds.py +++ b/bot/libs/utils/embeds.py @@ -10,6 +10,7 @@ def __init__(self, **kwargs): class LoggingEmbed(discord.Embed): def __init__(self, **kwargs): kwargs.setdefault("color", discord.Color.from_rgb(212, 252, 255)) + kwargs.setdefault("timestamp", discord.utils.utcnow()) super().__init__(**kwargs)