[AB-xxx] actively limiting auto complete responses to the max allowed values

changing interface of slash command parameter service to be more applicable
adding utility functions to slash command auto complete service bean
This commit is contained in:
Sheldan
2023-10-29 18:21:29 +01:00
parent 208d9a28ed
commit d53126e5a5
6 changed files with 48 additions and 21 deletions

View File

@@ -1,7 +1,11 @@
package dev.sheldan.abstracto.core.interaction.slash.parameter;
import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent;
import net.dv8tion.jda.api.interactions.AutoCompleteQuery;
public interface SlashCommandAutoCompleteService {
boolean matchesParameter(AutoCompleteQuery query, String parameterName);
<T, Z> Z getCommandOption(String name, CommandAutoCompleteInteractionEvent event, Class<T> parameterType, Class<Z> slashParameterType);
<T, Z> boolean hasCommandOption(String name, CommandAutoCompleteInteractionEvent event, Class<T> parameterType, Class<Z> slashParameterType);
<T> T getCommandOption(String name, CommandAutoCompleteInteractionEvent event, Class<T> parameterType);
}

View File

@@ -3,20 +3,20 @@ package dev.sheldan.abstracto.core.interaction.slash.parameter;
import dev.sheldan.abstracto.core.models.database.AEmote;
import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.interactions.commands.CommandInteractionPayload;
import net.dv8tion.jda.api.interactions.commands.OptionType;
import java.util.List;
public interface SlashCommandParameterService {
<T, Z> Z getCommandOption(String name, SlashCommandInteractionEvent event, Class<T> parameterType, Class<Z> slashParameterType);
<T, Z> boolean hasCommandOption(String name, SlashCommandInteractionEvent event, Class<T> parameterType, Class<Z> slashParameterType);
<T> T getCommandOption(String name, SlashCommandInteractionEvent event, Class<T> parameterType);
Object getCommandOption(String name, SlashCommandInteractionEvent event);
Boolean hasCommandOption(String name, SlashCommandInteractionEvent event);
Boolean hasCommandOptionWithFullType(String name, SlashCommandInteractionEvent event, OptionType optionType);
AEmote loadAEmoteFromString(String input, SlashCommandInteractionEvent event);
Emoji loadEmoteFromString(String input, SlashCommandInteractionEvent event);
<T, Z> Z getCommandOption(String name, CommandInteractionPayload event, Class<T> parameterType, Class<Z> slashParameterType);
<T, Z> boolean hasCommandOption(String name, CommandInteractionPayload event, Class<T> parameterType, Class<Z> slashParameterType);
<T> T getCommandOption(String name, CommandInteractionPayload event, Class<T> parameterType);
Object getCommandOption(String name, CommandInteractionPayload event);
Boolean hasCommandOption(String name, CommandInteractionPayload event);
Boolean hasCommandOptionWithFullType(String name, CommandInteractionPayload event, OptionType optionType);
AEmote loadAEmoteFromString(String input, CommandInteractionPayload event);
Emoji loadEmoteFromString(String input, CommandInteractionPayload event);
List<OptionType> getTypesFromParameter(Class clazz);
String getFullQualifiedParameterName(String name, OptionType type);
}