From 50430589e6befeb682c4cc53870c270510122c2b Mon Sep 17 00:00:00 2001 From: anthorob Date: Sat, 14 Dec 2024 00:59:50 -0500 Subject: [PATCH] Add isSlashCommandOnly to command interface --- .../netneutrality/command/AbstractCommand.java | 5 +++++ .../me/bobert/netneutrality/command/Command.java | 2 ++ .../command/git/ReportIssueCommand.java | 5 +++++ .../netneutrality/context/SlashCommandContext.java | 4 ++-- .../netneutrality/core/command/CommandProcessor.java | 6 +++--- .../core/context/InteractionContext.java | 12 ++++++------ 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/main/java/me/bobert/netneutrality/command/AbstractCommand.java b/src/main/java/me/bobert/netneutrality/command/AbstractCommand.java index 2b6582f..e7a5176 100644 --- a/src/main/java/me/bobert/netneutrality/command/AbstractCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/AbstractCommand.java @@ -17,6 +17,11 @@ public abstract class AbstractCommand implements Command { return true; } + @Override + public boolean isSlashCommandOnly() { + return false; + } + @Override public DefaultMemberPermissions getSlashCommandPermission() { return DefaultMemberPermissions.ENABLED; diff --git a/src/main/java/me/bobert/netneutrality/command/Command.java b/src/main/java/me/bobert/netneutrality/command/Command.java index 8b34cac..65b439e 100644 --- a/src/main/java/me/bobert/netneutrality/command/Command.java +++ b/src/main/java/me/bobert/netneutrality/command/Command.java @@ -22,6 +22,8 @@ public interface Command { boolean isSlashCommand(); + boolean isSlashCommandOnly(); + String getCommandName(); String getDescription(); diff --git a/src/main/java/me/bobert/netneutrality/command/git/ReportIssueCommand.java b/src/main/java/me/bobert/netneutrality/command/git/ReportIssueCommand.java index 6b2004a..c12adf1 100644 --- a/src/main/java/me/bobert/netneutrality/command/git/ReportIssueCommand.java +++ b/src/main/java/me/bobert/netneutrality/command/git/ReportIssueCommand.java @@ -31,6 +31,11 @@ public class ReportIssueCommand extends AbstractCommand { return false; } + @Override + public boolean isSlashCommandOnly() { + return true; + } + @Override public String getCommandName() { return "report-bug"; diff --git a/src/main/java/me/bobert/netneutrality/context/SlashCommandContext.java b/src/main/java/me/bobert/netneutrality/context/SlashCommandContext.java index 62fb94e..275a9c1 100644 --- a/src/main/java/me/bobert/netneutrality/context/SlashCommandContext.java +++ b/src/main/java/me/bobert/netneutrality/context/SlashCommandContext.java @@ -62,11 +62,11 @@ public class SlashCommandContext extends CommandContext implements InteractionCo @Override public String getSubcommandGroup() { - return getFullCommand().split(" ")[2]; + return event.getSubcommandGroup(); } @Override public String getSubcommand() { - return getFullCommand().split(" ")[1]; + return event.getSubcommandName(); } } 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 9da9c09..c982979 100644 --- a/src/main/java/me/bobert/netneutrality/core/command/CommandProcessor.java +++ b/src/main/java/me/bobert/netneutrality/core/command/CommandProcessor.java @@ -8,7 +8,6 @@ package me.bobert.netneutrality.core.command; import io.sentry.Sentry; import me.bobert.netneutrality.command.Command; import me.bobert.netneutrality.command.CommandOptions; -import me.bobert.netneutrality.context.MessageCommandContext; import me.bobert.netneutrality.context.SlashCommandContext; import me.bobert.netneutrality.core.LogHandler; import me.bobert.netneutrality.core.context.CommandContext; @@ -57,8 +56,9 @@ public class CommandProcessor { return; } - if (context instanceof SlashCommandContext slashCommandContext) { - logger.debug("SlashCommandInteractionId: {}", slashCommandContext.getEvent().getInteraction().getId()); + if (command.isSlashCommandOnly() && !(context instanceof SlashCommandContext)) { + context.replyEphemeral("This command is only available as a slash command"); + return; } try { 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 e73609b..f84866d 100644 --- a/src/main/java/me/bobert/netneutrality/core/context/InteractionContext.java +++ b/src/main/java/me/bobert/netneutrality/core/context/InteractionContext.java @@ -24,7 +24,7 @@ public interface InteractionContext extends Context { throw new RuntimeException("Interaction isn't acknowledged yet"); } - return getReplyCallback(getEvent()).getHook(); + return getReplyCallback().getHook(); } @Override @@ -38,7 +38,7 @@ public interface InteractionContext extends Context { throw new RuntimeException("Interaction is already acknowledged, please use getInteractionHook() instead."); } - getReplyCallback(getEvent()).deferReply(ephemeral).queue(hook -> consumer.accept(new AsyncContext(hook))); + getReplyCallback().deferReply(ephemeral).queue(hook -> consumer.accept(new AsyncContext(hook))); } @Override @@ -70,14 +70,14 @@ public interface InteractionContext extends Context { return; } - getReplyCallback(getEvent()).reply(messageCreateData).setEphemeral(ephemeral).setComponents(components).queue(message -> consumer.accept(new AsyncContext(message))); + getReplyCallback().reply(messageCreateData).setEphemeral(ephemeral).setComponents(components).queue(message -> consumer.accept(new AsyncContext(message))); } - static IReplyCallback getReplyCallback(Event event) { + private IReplyCallback getReplyCallback() { try { - return (IReplyCallback) event; + return (IReplyCallback) getEvent(); } catch (ClassCastException e) { - throw new IllegalArgumentException(event.getClass().getSimpleName() + " does not implement class 'IReplyCallback'", e); + throw new IllegalArgumentException(getEvent().getClass().getSimpleName() + " does not implement class 'IReplyCallback'", e); } } }