mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-01-27 14:42:23 +00:00
[AB-81] adding support for choices in slash command parameters
This commit is contained in:
@@ -124,14 +124,18 @@ public class SlashCommandServiceBean implements SlashCommandService {
|
|||||||
for (OptionType type : types) {
|
for (OptionType type : types) {
|
||||||
String parameterName = slashCommandParameterService.getFullQualifiedParameterName(parameter.getSlashCompatibleName(), type) + "_" + i;
|
String parameterName = slashCommandParameterService.getFullQualifiedParameterName(parameter.getSlashCompatibleName(), type) + "_" + i;
|
||||||
String parameterDescription = isTemplated ? templateService.renderSimpleTemplate(internalCommandName + "_parameter_" + parameter.getName()) : parameter.getDescription();
|
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 {
|
} else {
|
||||||
types.forEach(type -> {
|
types.forEach(type -> {
|
||||||
String parameterName = slashCommandParameterService.getFullQualifiedParameterName(parameter.getSlashCompatibleName(), type);
|
String parameterName = slashCommandParameterService.getFullQualifiedParameterName(parameter.getSlashCompatibleName(), type);
|
||||||
String parameterDescription = isTemplated ? templateService.renderSimpleTemplate(internalCommandName + "_parameter_" + parameter.getName()) : parameter.getDescription();
|
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 {
|
} else {
|
||||||
@@ -139,10 +143,14 @@ public class SlashCommandServiceBean implements SlashCommandService {
|
|||||||
String parameterDescription = isTemplated ? templateService.renderSimpleTemplate(internalCommandName + "_parameter_" + parameter.getName()) : parameter.getDescription();
|
String parameterDescription = isTemplated ? templateService.renderSimpleTemplate(internalCommandName + "_parameter_" + parameter.getName()) : parameter.getDescription();
|
||||||
if(parameter.isListParam()) {
|
if(parameter.isListParam()) {
|
||||||
for (int i = 0; i < parameter.getListSize(); i++) {
|
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 {
|
} 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;
|
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) {
|
private boolean shouldParameterBeCreated(Parameter parameter, Long serverId) {
|
||||||
if(parameter.getDependentFeatures().isEmpty()) {
|
if(parameter.getDependentFeatures().isEmpty()) {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ public class Parameter implements Serializable {
|
|||||||
// these are the features which potentially require this parameter
|
// these are the features which potentially require this parameter
|
||||||
@Builder.Default
|
@Builder.Default
|
||||||
private List<String> dependentFeatures = new ArrayList<>();
|
private List<String> dependentFeatures = new ArrayList<>();
|
||||||
|
@Builder.Default
|
||||||
|
private List<String> choices = new ArrayList<>();
|
||||||
|
|
||||||
public String getSlashCompatibleName() {
|
public String getSlashCompatibleName() {
|
||||||
return name.toLowerCase(Locale.ROOT);
|
return name.toLowerCase(Locale.ROOT);
|
||||||
|
|||||||
Reference in New Issue
Block a user