131 lines
3.4 KiB
Java
131 lines
3.4 KiB
Java
package me.bobert.netneutrality.context;
|
|
/*
|
|
* Copyright (c) anthorob
|
|
*
|
|
* https://discord.gg/qUa6zNFZsd
|
|
*/
|
|
|
|
import me.bobert.netneutrality.core.context.AbstractContext;
|
|
import net.dv8tion.jda.api.components.MessageTopLevelComponent;
|
|
import net.dv8tion.jda.api.entities.Message;
|
|
import net.dv8tion.jda.api.entities.channel.ChannelType;
|
|
import net.dv8tion.jda.api.events.Event;
|
|
import net.dv8tion.jda.api.interactions.InteractionHook;
|
|
import net.dv8tion.jda.api.modals.Modal;
|
|
import net.dv8tion.jda.api.utils.messages.MessageCreateData;
|
|
import net.dv8tion.jda.api.utils.messages.MessageEditData;
|
|
|
|
import java.util.List;
|
|
import java.util.function.Consumer;
|
|
|
|
public class AsyncContext extends AbstractContext {
|
|
private final InteractionHook hook;
|
|
private final Message message;
|
|
|
|
public AsyncContext(InteractionHook hook) {
|
|
super(hook.getJDA(), hook.getInteraction().getGuild(), hook.getInteraction().getMessageChannel(), hook.getInteraction().getMember(), hook.getInteraction().getUser());
|
|
this.hook = hook;
|
|
this.message = null;
|
|
}
|
|
|
|
public AsyncContext(Message message) {
|
|
super(message.getJDA(), message.isFromGuild() ? message.getGuild() : null, message.getChannel(), message.getMember(), message.getAuthor());
|
|
this.hook = null;
|
|
this.message = message;
|
|
}
|
|
|
|
public String getMessageId() {
|
|
if (hook != null) {
|
|
return hook.getId();
|
|
}
|
|
|
|
return message.getId();
|
|
}
|
|
|
|
@Override
|
|
public Event getEvent() {
|
|
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;
|
|
}
|
|
|
|
@Override
|
|
public InteractionHook getInteractionHook() {
|
|
return hook;
|
|
}
|
|
|
|
@Override
|
|
public boolean isAcknowledged() {
|
|
if (hook != null) {
|
|
return hook.getInteraction().isAcknowledged();
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public boolean isFromGuild() {
|
|
return message != null ? message.isFromGuild() : hook.getInteraction().isFromGuild();
|
|
}
|
|
|
|
@Override
|
|
public void deleteMessage() {
|
|
if (hook != null) {
|
|
hook.deleteOriginal().queue();
|
|
}
|
|
|
|
if (message != null && getType() != ChannelType.PRIVATE) {
|
|
message.delete().queue();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void reply(Modal modal) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void reply(MessageCreateData messageCreateData, boolean ephemeral, List<MessageTopLevelComponent> components, Consumer<AsyncContext> consumer) {
|
|
if (hook != null) {
|
|
hook.sendMessage(messageCreateData).queue();
|
|
}
|
|
|
|
if (message != null) {
|
|
message.reply(messageCreateData).queue();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void defer(boolean ephemeral, Consumer<AsyncContext> consumer) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void ack(boolean ephemeral) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void edit(MessageEditData messageEditData, boolean ephemeral, List<MessageTopLevelComponent> components, Consumer<AsyncContext> consumer) {
|
|
if (hook != null) {
|
|
hook.editOriginal(messageEditData).queue();
|
|
}
|
|
|
|
if (message != null) {
|
|
message.editMessage(messageEditData).queue();
|
|
}
|
|
}
|
|
}
|