clean up code and switch to request instead of getting from cache

This commit is contained in:
Tueem 2024-12-15 23:15:29 +01:00
parent a5e1230fc6
commit 1cb6cd0e05
Signed by: tueem
GPG Key ID: F2CE0513D231AD7A
3 changed files with 34 additions and 24 deletions

@ -1,5 +1,12 @@
package net.tomatentum.marinara.interaction.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoComplete {
}

@ -4,6 +4,7 @@ import org.javacord.api.interaction.AutocompleteInteraction;
import org.javacord.api.interaction.ButtonInteraction;
import org.javacord.api.interaction.SlashCommandInteraction;
import org.javacord.api.interaction.SlashCommandInteractionOption;
import org.javacord.api.interaction.SlashCommandOptionType;
import net.tomatentum.marinara.wrapper.ContextObjectProvider;
@ -26,7 +27,8 @@ public class JavacordContextObjectProvider implements ContextObjectProvider {
}
private Object getOptionValue(SlashCommandInteractionOption option) {
switch (getOptionType(option)) {
SlashCommandOptionType type = getOptionType(option);
switch (type) {
case ATTACHMENT:
return option.getAttachmentValue().get();
case BOOLEAN:
@ -38,40 +40,40 @@ public class JavacordContextObjectProvider implements ContextObjectProvider {
case LONG:
return option.getLongValue().get();
case MENTIONABLE:
return option.getMentionableValue().get();
return option.requestMentionableValue().get();
case ROLE:
return option.getRoleValue().get();
case STRING:
return option.getStringValue().get();
case USER:
return option.getUserValue().get();
return option.requestUserValue().get();
default:
return null;
}
}
private org.javacord.api.interaction.SlashCommandOptionType getOptionType(SlashCommandInteractionOption option) {
private SlashCommandOptionType getOptionType(SlashCommandInteractionOption option) {
if (option.getAttachmentValue().isPresent())
return org.javacord.api.interaction.SlashCommandOptionType.ATTACHMENT;
return SlashCommandOptionType.ATTACHMENT;
if (option.getBooleanValue().isPresent())
return org.javacord.api.interaction.SlashCommandOptionType.BOOLEAN;
return SlashCommandOptionType.BOOLEAN;
if (option.getChannelValue().isPresent())
return org.javacord.api.interaction.SlashCommandOptionType.CHANNEL;
return SlashCommandOptionType.CHANNEL;
if (option.getDecimalValue().isPresent())
return org.javacord.api.interaction.SlashCommandOptionType.DECIMAL;
return SlashCommandOptionType.DECIMAL;
if (option.getLongValue().isPresent())
return org.javacord.api.interaction.SlashCommandOptionType.LONG;
if (option.getMentionableValue().isPresent())
return org.javacord.api.interaction.SlashCommandOptionType.MENTIONABLE;
return SlashCommandOptionType.LONG;
if (option.requestMentionableValue().isPresent())
return SlashCommandOptionType.MENTIONABLE;
if (option.getRoleValue().isPresent())
return org.javacord.api.interaction.SlashCommandOptionType.ROLE;
return SlashCommandOptionType.ROLE;
if (option.getStringValue().isPresent())
return org.javacord.api.interaction.SlashCommandOptionType.ATTACHMENT;
if (option.getUserValue().isPresent())
return org.javacord.api.interaction.SlashCommandOptionType.USER;
return SlashCommandOptionType.STRING;
if (option.requestUserValue().isPresent())
return SlashCommandOptionType.USER;
return org.javacord.api.interaction.SlashCommandOptionType.UNKNOWN;
return SlashCommandOptionType.UNKNOWN;
}
@Override

@ -42,13 +42,12 @@ public class JavacordWrapper extends LibraryWrapper {
@Override
public InteractionType getInteractionType(Class<?> clazz) {
if (AutocompleteInteraction.class.isAssignableFrom(clazz))
return InteractionType.AUTOCOMPLETE;
if (ApplicationCommandInteraction.class.isAssignableFrom(clazz))
return InteractionType.COMMAND;
if (ButtonInteraction.class.isAssignableFrom(clazz))
return InteractionType.BUTTON;
if (AutocompleteInteraction.class.isAssignableFrom(clazz))
return InteractionType.AUTOCOMPLETE;
return null;
}
@ -83,11 +82,13 @@ public class JavacordWrapper extends LibraryWrapper {
List<SlashCommandInteractionOption> options = interaction.getOptions();
try {
builder.setApplicationCommand(TypeFactory.annotation(SlashCommand.class, Map.of("name", interaction.getCommandName())));
if (!options.getFirst().getArguments().isEmpty()) {
builder.setSubCommandGroup(TypeFactory.annotation(SubCommandGroup.class, Map.of("name", options.getFirst().getName())));
builder.setSubCommand(TypeFactory.annotation(SubCommand.class, Map.of("name", options.getFirst().getOptions().getFirst().getName())));
}else
builder.setSubCommand(TypeFactory.annotation(SubCommand.class, Map.of("name", options.getFirst().getName())));
if (!options.isEmpty()) {
if (!options.getFirst().getArguments().isEmpty()) {
builder.setSubCommandGroup(TypeFactory.annotation(SubCommandGroup.class, Map.of("name", options.getFirst().getName())));
builder.setSubCommand(TypeFactory.annotation(SubCommand.class, Map.of("name", options.getFirst().getOptions().getFirst().getName())));
}else
builder.setSubCommand(TypeFactory.annotation(SubCommand.class, Map.of("name", options.getFirst().getName())));
}
} catch (AnnotationFormatException e) {
e.printStackTrace();
}