80 lines
2.9 KiB
Java
80 lines
2.9 KiB
Java
package net.essentialsx.discord.interactions;
|
|
|
|
import com.earth2me.essentials.utils.FormatUtil;
|
|
import com.google.common.base.Joiner;
|
|
import net.dv8tion.jda.api.MessageBuilder;
|
|
import net.dv8tion.jda.api.events.interaction.SlashCommandEvent;
|
|
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
|
|
import net.essentialsx.api.v2.services.discord.InteractionChannel;
|
|
import net.essentialsx.api.v2.services.discord.InteractionEvent;
|
|
import net.essentialsx.api.v2.services.discord.InteractionMember;
|
|
import net.essentialsx.discord.util.DiscordUtil;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
|
|
/**
|
|
* A class which provides information about what triggered an interaction event.
|
|
*/
|
|
public class InteractionEventImpl implements InteractionEvent {
|
|
private final static Logger logger = Logger.getLogger("EssentialsDiscord");
|
|
private final SlashCommandEvent event;
|
|
private final InteractionMember member;
|
|
private final List<String> replyBuffer = new ArrayList<>();
|
|
|
|
public InteractionEventImpl(final SlashCommandEvent jdaEvent) {
|
|
this.event = jdaEvent;
|
|
this.member = new InteractionMemberImpl(jdaEvent.getMember());
|
|
}
|
|
|
|
@Override
|
|
public void reply(String message) {
|
|
message = FormatUtil.stripFormat(message).replace("§", ""); // Don't ask
|
|
replyBuffer.add(message);
|
|
event.getHook().editOriginal(new MessageBuilder().setContent(Joiner.on('\n').join(replyBuffer)).setAllowedMentions(DiscordUtil.NO_GROUP_MENTIONS).build())
|
|
.queue(null, error -> logger.log(Level.SEVERE, "Error while editing command interaction response", error));
|
|
}
|
|
|
|
@Override
|
|
public InteractionMember getMember() {
|
|
return member;
|
|
}
|
|
|
|
@Override
|
|
public String getStringArgument(String key) {
|
|
final OptionMapping mapping = event.getOption(key);
|
|
return mapping == null ? null : mapping.getAsString();
|
|
}
|
|
|
|
@Override
|
|
public Long getIntegerArgument(String key) {
|
|
final OptionMapping mapping = event.getOption(key);
|
|
return mapping == null ? null : mapping.getAsLong();
|
|
}
|
|
|
|
@Override
|
|
public Boolean getBooleanArgument(String key) {
|
|
final OptionMapping mapping = event.getOption(key);
|
|
return mapping == null ? null : mapping.getAsBoolean();
|
|
}
|
|
|
|
@Override
|
|
public InteractionMember getUserArgument(String key) {
|
|
final OptionMapping mapping = event.getOption(key);
|
|
return mapping == null ? null : new InteractionMemberImpl(mapping.getAsMember());
|
|
}
|
|
|
|
@Override
|
|
public InteractionChannel getChannelArgument(String key) {
|
|
final OptionMapping mapping = event.getOption(key);
|
|
return mapping == null ? null : new InteractionChannelImpl(mapping.getAsGuildChannel());
|
|
}
|
|
|
|
@Override
|
|
public String getChannelId() {
|
|
return event.getChannel().getId();
|
|
}
|
|
}
|