[AB-xxx] fixing combined parameters not providing the appropriate option types for slash commands

This commit is contained in:
Sheldan
2024-04-13 00:20:02 +02:00
parent 250df57bd0
commit dfe9792330
10 changed files with 125 additions and 12 deletions

View File

@@ -0,0 +1,37 @@
package dev.sheldan.abstracto.core.command.config;
import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
public class CombinedParameterEntry {
private Class type;
private boolean usableInSlashCommands;
private boolean usableInMessageCommands;
public static CombinedParameterEntry slashParameter(Class type) {
return CombinedParameterEntry
.builder()
.type(type)
.usableInSlashCommands(true)
.build();
}
public static CombinedParameterEntry messageParameter(Class type) {
return CombinedParameterEntry
.builder()
.type(type)
.usableInMessageCommands(true)
.build();
}
public static CombinedParameterEntry parameter(Class type) {
return CombinedParameterEntry
.builder()
.type(type)
.usableInMessageCommands(true)
.usableInSlashCommands(true)
.build();
}
}

View File

@@ -1,6 +1,7 @@
package dev.sheldan.abstracto.core.interaction.slash.parameter;
import dev.sheldan.abstracto.core.command.config.Parameter;
import dev.sheldan.abstracto.core.models.database.AEmote;
import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.interactions.commands.CommandInteractionPayload;
@@ -17,6 +18,7 @@ public interface SlashCommandParameterService {
Boolean hasCommandOptionWithFullType(String name, CommandInteractionPayload event, OptionType optionType);
AEmote loadAEmoteFromString(String input, CommandInteractionPayload event);
Emoji loadEmoteFromString(String input, CommandInteractionPayload event);
List<OptionType> getTypesFromParameter(Parameter parameter);
List<OptionType> getTypesFromParameter(Class clazz);
String getFullQualifiedParameterName(String name, OptionType type);
}

View File

@@ -1,7 +1,12 @@
package dev.sheldan.abstracto.core.interaction.slash.parameter.provider;
import dev.sheldan.abstracto.core.command.config.Parameter;
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandOptionTypeMapping;
public interface SlashCommandParameterProvider {
SlashCommandOptionTypeMapping getOptionMapping();
default SlashCommandOptionTypeMapping getOptionMapping(Parameter parameter) {
return getOptionMapping();
}
}