[AB-81] adding support for choices in slash command parameters

This commit is contained in:
Sheldan
2023-01-12 01:34:30 +01:00
parent db27f64832
commit aa10c88588
2 changed files with 21 additions and 4 deletions

View File

@@ -124,14 +124,18 @@ public class SlashCommandServiceBean implements SlashCommandService {
for (OptionType type : types) {
String parameterName = slashCommandParameterService.getFullQualifiedParameterName(parameter.getSlashCompatibleName(), type) + "_" + i;
String parameterDescription = isTemplated ? templateService.renderSimpleTemplate(internalCommandName + "_parameter_" + parameter.getName()) : parameter.getDescription();
optionalParameters.add(new OptionData(type, parameterName, parameterDescription, false));
OptionData optionData = new OptionData(type, parameterName, parameterDescription, false);
addChoices(optionData, parameter, internalCommandName, isTemplated);
optionalParameters.add(optionData);
}
}
} else {
types.forEach(type -> {
String parameterName = slashCommandParameterService.getFullQualifiedParameterName(parameter.getSlashCompatibleName(), type);
String parameterDescription = isTemplated ? templateService.renderSimpleTemplate(internalCommandName + "_parameter_" + parameter.getName()) : parameter.getDescription();
optionalParameters.add(new OptionData(type, parameterName, parameterDescription, false));
OptionData optionData = new OptionData(type, parameterName, parameterDescription, false);
addChoices(optionData, parameter, internalCommandName, isTemplated);
optionalParameters.add(optionData);
});
}
} else {
@@ -139,10 +143,14 @@ public class SlashCommandServiceBean implements SlashCommandService {
String parameterDescription = isTemplated ? templateService.renderSimpleTemplate(internalCommandName + "_parameter_" + parameter.getName()) : parameter.getDescription();
if(parameter.isListParam()) {
for (int i = 0; i < parameter.getListSize(); i++) {
optionalParameters.add(new OptionData(type, parameter.getSlashCompatibleName() + "_" + i, parameterDescription, false));
OptionData optionData = new OptionData(type, parameter.getSlashCompatibleName() + "_" + i, parameterDescription, false);
addChoices(optionData, parameter, internalCommandName, isTemplated);
optionalParameters.add(optionData);
}
} else {
requiredParameters.add(new OptionData(type, parameter.getSlashCompatibleName(), parameterDescription, !parameter.isOptional(), parameter.getSupportsAutoComplete()));
OptionData optionData = new OptionData(type, parameter.getSlashCompatibleName(), parameterDescription, !parameter.isOptional(), parameter.getSupportsAutoComplete());
addChoices(optionData, parameter, internalCommandName, isTemplated);
requiredParameters.add(optionData);
}
}
});
@@ -150,6 +158,13 @@ public class SlashCommandServiceBean implements SlashCommandService {
return requiredParameters;
}
private void addChoices(OptionData optionData, Parameter parameter, String commandName, boolean isTemplated) {
parameter.getChoices().forEach(choiceKey -> {
String value = isTemplated ? templateService.renderSimpleTemplate(commandName + "_parameter_" + parameter.getName() + "_choice_" + choiceKey) : choiceKey;
optionData.addChoice(value, choiceKey);
});
}
private boolean shouldParameterBeCreated(Parameter parameter, Long serverId) {
if(parameter.getDependentFeatures().isEmpty()) {
return true;

View File

@@ -37,6 +37,8 @@ public class Parameter implements Serializable {
// these are the features which potentially require this parameter
@Builder.Default
private List<String> dependentFeatures = new ArrayList<>();
@Builder.Default
private List<String> choices = new ArrayList<>();
public String getSlashCompatibleName() {
return name.toLowerCase(Locale.ROOT);