getOptions method
- CommandsPlugin commands
override
Return the CommandOptionBuilder
s that represent this entity for slash command registration.
Implementation
@override
List<CommandOptionBuilder> getOptions(CommandsPlugin commands) {
if (resolvedOptions.type != CommandType.textOnly) {
List<CommandOptionBuilder> options = [];
for (final parameter in _functionData.parametersData.skip(1)) {
Converter<dynamic>? argumentConverter =
parameter.converterOverride ?? commands.getConverter(parameter.type);
Iterable<CommandOptionChoiceBuilder<dynamic>>? choices = parameter.choices?.entries
.map((entry) => CommandOptionChoiceBuilder(name: entry.key, value: entry.value));
choices ??= argumentConverter?.choices;
CommandOptionBuilder builder = CommandOptionBuilder(
type: argumentConverter?.type ?? CommandOptionType.string,
name: convertToKebabCase(parameter.name),
nameLocalizations: parameter.localizedNames,
description: parameter.description ?? 'No description provided',
descriptionLocalizations: parameter.localizedDescriptions,
isRequired: !parameter.isOptional,
choices: choices?.toList(),
hasAutocomplete:
(parameter.autocompleteOverride ?? argumentConverter?.autocompleteCallback) != null,
);
argumentConverter?.processOptionCallback?.call(builder);
options.add(builder);
}
return options;
} else {
// Text-only commands might have children which are slash commands
return super.getOptions(commands);
}
}