Add Button Interaction Implementation #4

Merged
tueem merged 11 commits from feat/buttons into master 2024-11-08 13:41:22 +00:00
Showing only changes of commit 76d4d5b525 - Show all commits

View File

@ -6,10 +6,13 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import org.javacord.api.DiscordApi;
import org.javacord.api.entity.channel.TextChannel;
import org.javacord.api.interaction.ApplicationCommandInteraction;
import org.javacord.api.interaction.ButtonInteraction;
import org.javacord.api.interaction.SlashCommandBuilder;
import org.javacord.api.interaction.SlashCommandInteraction;
import org.javacord.api.interaction.SlashCommandInteractionOption;
@ -35,6 +38,14 @@ public class JavacordWrapper extends LibraryWrapper {
api.addInteractionCreateListener((e) -> handleInteraction(e.getInteraction()));
}
@Override
public InteractionType getInteractionType(Class<?> clazz) {
if (ApplicationCommandInteraction.class.isAssignableFrom(clazz))
return InteractionType.COMMAND;
return null;
}
@Override
public void registerSlashCommands(SlashCommandDefinition[] defs) {
HashMap<Long, Set<SlashCommandBuilder>> serverCommands = new HashMap<>();
@ -56,14 +67,6 @@ public class JavacordWrapper extends LibraryWrapper {
api.bulkOverwriteGlobalApplicationCommands(globalCommands);
}
@Override
public InteractionType getInteractionType(Class<?> clazz) {
if (ApplicationCommandInteraction.class.isAssignableFrom(clazz))
return InteractionType.COMMAND;
return null;
}
@Override
public Object convertCommandOption(Object context, SlashCommandOptionType type, String optionName) {
if (!(context instanceof SlashCommandInteraction))
@ -156,4 +159,30 @@ public class JavacordWrapper extends LibraryWrapper {
return null;
}
}
@Override
public String getButtonId(Object context) {
ButtonInteraction button = (ButtonInteraction) context;
return button.getCustomId();
}
@Override
public Object getComponentContextObject(Object context, Class<?> type) {
ButtonInteraction button = (ButtonInteraction) context;
switch (type.getName()) {
case "TextChannel":
return button.getChannel().orElse(null);
case "Message":
return button.getMessage();
case "Server":
return button.getServer().orElse(null);
case "User":
return button.getUser();
case "Member":
return button.getUser();
}
return null;
}
}