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