From 3314ef6beace930878fe2c58399eed9467831b7d Mon Sep 17 00:00:00 2001 From: anthorob Date: Sat, 14 Dec 2024 01:07:24 -0500 Subject: [PATCH] Add unique ID for each context --- .../netneutrality/context/AsyncContext.java | 9 ++++++ .../context/MessageCommandContext.java | 9 ++++++ .../context/MusicChannelContext.java | 5 +++ .../core/command/CommandProcessor.java | 9 ++---- .../netneutrality/core/context/Context.java | 2 ++ .../core/context/InteractionContext.java | 31 ++++++++++--------- 6 files changed, 43 insertions(+), 22 deletions(-) diff --git a/src/main/java/me/bobert/netneutrality/context/AsyncContext.java b/src/main/java/me/bobert/netneutrality/context/AsyncContext.java index 64da2b9..b58a627 100644 --- a/src/main/java/me/bobert/netneutrality/context/AsyncContext.java +++ b/src/main/java/me/bobert/netneutrality/context/AsyncContext.java @@ -39,6 +39,15 @@ public class AsyncContext extends AbstractContext { return null; } + @Override + public String getId() { + if (hook != null) { + return hook.getInteraction().getId(); + } + + return String.format("async:%s", message.getId()); + } + @Override public ChannelType getType() { return ChannelType.UNKNOWN; diff --git a/src/main/java/me/bobert/netneutrality/context/MessageCommandContext.java b/src/main/java/me/bobert/netneutrality/context/MessageCommandContext.java index c41d12b..e3b026f 100644 --- a/src/main/java/me/bobert/netneutrality/context/MessageCommandContext.java +++ b/src/main/java/me/bobert/netneutrality/context/MessageCommandContext.java @@ -43,6 +43,15 @@ public class MessageCommandContext extends CommandContext { return event; } + @Override + public String getId() { + return String.format("%s:%s:%s:%s", + getGuild() == null ? "PrivateMessage" : getGuild().getId(), + getChannel().getId(), + getDiscordUser().getId(), + message.getId()); + } + @Override public ChannelType getType() { return event.getChannelType(); diff --git a/src/main/java/me/bobert/netneutrality/context/MusicChannelContext.java b/src/main/java/me/bobert/netneutrality/context/MusicChannelContext.java index bc4c532..7144fd0 100644 --- a/src/main/java/me/bobert/netneutrality/context/MusicChannelContext.java +++ b/src/main/java/me/bobert/netneutrality/context/MusicChannelContext.java @@ -29,6 +29,11 @@ public class MusicChannelContext extends AbstractContext { return null; } + @Override + public String getId() { + return String.format("music:%s", getChannel().getId()); + } + @Override public ChannelType getType() { return getChannel().getType(); diff --git a/src/main/java/me/bobert/netneutrality/core/command/CommandProcessor.java b/src/main/java/me/bobert/netneutrality/core/command/CommandProcessor.java index c982979..0c1af79 100644 --- a/src/main/java/me/bobert/netneutrality/core/command/CommandProcessor.java +++ b/src/main/java/me/bobert/netneutrality/core/command/CommandProcessor.java @@ -62,6 +62,7 @@ public class CommandProcessor { } try { + logger.info("Context ID: {}", context.getId()); logger.info("Executing command {} on guild {}", command.getCommandName(), context.getGuild() == null ? "PrivateMessage" : context.getGuild().getId()); configureSentry(command); @@ -217,13 +218,7 @@ public class CommandProcessor { scope.setTag("canBeExecutedBy", String.valueOf(command.canBeExecutedBy(context.getGuildUser()))); } - if (context instanceof SlashCommandContext slashCommandContext) - scope.setTag("interactionId", slashCommandContext.getEvent().getInteraction().getId()); - - if (context instanceof MessageCommandContext messageCommandContext) - scope.setTag("message", messageCommandContext.getMessage().getId()); - - + scope.setTag("contextId", context.getId()); }); } } diff --git a/src/main/java/me/bobert/netneutrality/core/context/Context.java b/src/main/java/me/bobert/netneutrality/core/context/Context.java index 0d77f7c..2622b49 100644 --- a/src/main/java/me/bobert/netneutrality/core/context/Context.java +++ b/src/main/java/me/bobert/netneutrality/core/context/Context.java @@ -25,6 +25,8 @@ import java.util.function.Consumer; public interface Context { Event getEvent(); + String getId(); + ChannelType getType(); JDA getJDA(); diff --git a/src/main/java/me/bobert/netneutrality/core/context/InteractionContext.java b/src/main/java/me/bobert/netneutrality/core/context/InteractionContext.java index f84866d..e7405a9 100644 --- a/src/main/java/me/bobert/netneutrality/core/context/InteractionContext.java +++ b/src/main/java/me/bobert/netneutrality/core/context/InteractionContext.java @@ -18,6 +18,11 @@ import java.util.function.Consumer; public interface InteractionContext extends Context { + @Override + default String getId() { + return getInteraction().getId(); + } + @Override default InteractionHook getInteractionHook() { if (!isAcknowledged()) { @@ -43,24 +48,12 @@ public interface InteractionContext extends Context { @Override default boolean isFromGuild() { - Event event = getEvent(); - try { - Interaction interaction = (Interaction) event; - return interaction.isFromGuild(); - } catch (ClassCastException e) { - throw new IllegalArgumentException(event.getClass().getSimpleName() + " does not implement class 'Interaction'", e); - } + return getInteraction().isFromGuild(); } @Override default boolean isAcknowledged() { - Event event = getEvent(); - try { - Interaction interaction = (Interaction) event; - return interaction.isAcknowledged(); - } catch (ClassCastException e) { - throw new IllegalArgumentException(event.getClass().getSimpleName() + " does not implement class 'Interaction'", e); - } + return getInteraction().isAcknowledged(); } @Override @@ -77,7 +70,15 @@ public interface InteractionContext extends Context { try { return (IReplyCallback) getEvent(); } catch (ClassCastException e) { - throw new IllegalArgumentException(getEvent().getClass().getSimpleName() + " does not implement class 'IReplyCallback'", e); + throw new IllegalArgumentException(getEvent().getClass().getName() + " does not implement class 'IReplyCallback'", e); + } + } + + private Interaction getInteraction() { + try { + return (Interaction) getEvent(); + } catch (ClassCastException e) { + throw new IllegalArgumentException(getEvent().getClass().getName() + " does not implement class 'Interaction'", e); } } }