Add getInteractionHook to InteractionContext abstraction

This commit is contained in:
anthorob committed 2024-11-20 04:43:04 -05:00
1 parent 6f2ba795d4
commit e0ef3f9915
5 files changed
+16 -21

No files matched your search

@@ -8,7 +8,6 @@ package me.bobert.netneutrality.context;
import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.core.context.CommandContext;
import me.bobert.netneutrality.core.context.InteractionContext; import me.bobert.netneutrality.core.context.InteractionContext;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.interactions.InteractionHook;
import net.dv8tion.jda.api.interactions.modals.Modal; import net.dv8tion.jda.api.interactions.modals.Modal;
public class SlashCommandContext extends CommandContext implements InteractionContext { public class SlashCommandContext extends CommandContext implements InteractionContext {
@@ -24,14 +23,6 @@ public class SlashCommandContext extends CommandContext implements InteractionCo
return event; return event;
} }
@Override
public InteractionHook getInteractionHook() {
if (!event.isAcknowledged())
throw new RuntimeException("Interaction isn't acknowledged yet");
return event.getHook();
}
@Override @Override
public void deleteMessage() { public void deleteMessage() {
// not implemented // not implemented
@@ -8,7 +8,6 @@ package me.bobert.netneutrality.context.tasks;
import me.bobert.netneutrality.core.context.InteractionContext; import me.bobert.netneutrality.core.context.InteractionContext;
import me.bobert.netneutrality.core.context.TaskContext; import me.bobert.netneutrality.core.context.TaskContext;
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent; import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
import net.dv8tion.jda.api.interactions.InteractionHook;
public class ButtonTaskContext extends TaskContext implements InteractionContext { public class ButtonTaskContext extends TaskContext implements InteractionContext {
private final ButtonInteractionEvent event; private final ButtonInteractionEvent event;
@@ -28,8 +27,4 @@ public class ButtonTaskContext extends TaskContext implements InteractionContext
return event.getComponentId(); return event.getComponentId();
} }
@Override
public InteractionHook getInteractionHook() {
return event.getHook();
}
} }
@@ -8,7 +8,6 @@ package me.bobert.netneutrality.context.tasks;
import me.bobert.netneutrality.core.context.InteractionContext; import me.bobert.netneutrality.core.context.InteractionContext;
import me.bobert.netneutrality.core.context.TaskContext; import me.bobert.netneutrality.core.context.TaskContext;
import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent; import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent;
import net.dv8tion.jda.api.interactions.InteractionHook;
public class ModalTaskContext extends TaskContext implements InteractionContext { public class ModalTaskContext extends TaskContext implements InteractionContext {
private final ModalInteractionEvent event; private final ModalInteractionEvent event;
@@ -28,8 +27,4 @@ public class ModalTaskContext extends TaskContext implements InteractionContext
return event.getModalId(); return event.getModalId();
} }
@Override
public InteractionHook getInteractionHook() {
return event.getHook();
}
} }
@@ -142,13 +142,17 @@ public interface Context {
replyEphemeral(MessageCreateData.fromEmbeds(embeds)); replyEphemeral(MessageCreateData.fromEmbeds(embeds));
} }
default void sendMessageInPrivate(MessageCreateData messageCreateData) { default void sendMessageInPrivate(MessageCreateData messageCreateData, List<LayoutComponent> components) {
User user = getDiscordUser(); User user = getDiscordUser();
if (user != null) { if (user != null) {
user.openPrivateChannel().flatMap(channel -> channel.sendMessage(messageCreateData)).queue(); user.openPrivateChannel().flatMap(channel -> channel.sendMessage(messageCreateData).setComponents(components)).queue();
} }
} }
default void sendMessageInPrivate(MessageCreateData messageCreateData) {
sendMessageInPrivate(messageCreateData, List.of());
}
default void sendMessageInPrivate(String message) { default void sendMessageInPrivate(String message) {
sendMessageInPrivate(MessageCreateData.fromContent(message)); sendMessageInPrivate(MessageCreateData.fromContent(message));
} }
@@ -8,6 +8,7 @@ package me.bobert.netneutrality.core.context;
import me.bobert.netneutrality.context.AsyncContext; import me.bobert.netneutrality.context.AsyncContext;
import net.dv8tion.jda.api.events.Event; import net.dv8tion.jda.api.events.Event;
import net.dv8tion.jda.api.interactions.Interaction; import net.dv8tion.jda.api.interactions.Interaction;
import net.dv8tion.jda.api.interactions.InteractionHook;
import net.dv8tion.jda.api.interactions.callbacks.IReplyCallback; import net.dv8tion.jda.api.interactions.callbacks.IReplyCallback;
import net.dv8tion.jda.api.interactions.components.LayoutComponent; import net.dv8tion.jda.api.interactions.components.LayoutComponent;
import net.dv8tion.jda.api.utils.messages.MessageCreateData; import net.dv8tion.jda.api.utils.messages.MessageCreateData;
@@ -17,6 +18,15 @@ import java.util.function.Consumer;
public interface InteractionContext extends Context { public interface InteractionContext extends Context {
@Override
default InteractionHook getInteractionHook() {
if (!isAcknowledged()) {
throw new RuntimeException("Interaction isn't acknowledged yet");
}
return getReplyCallback(getEvent()).getHook();
}
@Override @Override
default void ack(boolean ephemeral) { default void ack(boolean ephemeral) {
defer(ephemeral, asyncMessage -> {}); defer(ephemeral, asyncMessage -> {});