Class OptionData
- java.lang.Object
-
- net.dv8tion.jda.api.interactions.commands.build.OptionData
-
- All Implemented Interfaces:
SerializableData
public class OptionData extends java.lang.Object implements SerializableData
Builder for a Slash-Command option.
-
-
Field Summary
Fields Modifier and Type Field Description static int
MAX_CHOICE_NAME_LENGTH
The maximum length of the name of Command Option Choice namesstatic int
MAX_CHOICE_VALUE_LENGTH
The maximum length aString value
for a choice can be.static int
MAX_CHOICES
The total amount ofchoices
you can set.static int
MAX_DESCRIPTION_LENGTH
The maximum length the description of an option can be.static int
MAX_NAME_LENGTH
The maximum length the name of an option can be.static double
MAX_POSITIVE_NUMBER
The highest positive amount Discord allows theNUMBER
type to be.static double
MIN_NEGATIVE_NUMBER
The largest negative amount Discord allows theNUMBER
type to be.
-
Constructor Summary
Constructors Constructor Description OptionData(OptionType type, java.lang.String name, java.lang.String description)
Create an option builder.OptionData(OptionType type, java.lang.String name, java.lang.String description, boolean isRequired)
Create an option builder.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description OptionData
addChoice(java.lang.String name, double value)
Add a predefined choice for this option.OptionData
addChoice(java.lang.String name, int value)
Add a predefined choice for this option.OptionData
addChoice(java.lang.String name, long value)
Add a predefined choice for this option.OptionData
addChoice(java.lang.String name, java.lang.String value)
Add a predefined choice for this option.OptionData
addChoices(java.util.Collection<? extends Command.Choice> choices)
Adds up to 25 predefined choices for this option.OptionData
addChoices(Command.Choice... choices)
Adds up to 25 predefined choices for this option.static OptionData
fromData(DataObject json)
Parses the provided serialization back into an OptionData instance.java.util.EnumSet<ChannelType>
getChannelTypes()
TheChannelTypes
this option is restricted to.java.util.List<Command.Choice>
getChoices()
The choices for this option.java.lang.String
getDescription()
The description for this optionjava.lang.Number
getMaxValue()
The maximum value which can be provided for this option.java.lang.Number
getMinValue()
The minimum value which can be provided for this option.java.lang.String
getName()
The name for this optionOptionType
getType()
TheOptionType
for this optionboolean
isRequired()
Whether this option is required.OptionData
setChannelTypes(java.util.Collection<ChannelType> channelTypes)
Configure theChannelTypes
to restrict this option to.OptionData
setChannelTypes(ChannelType... channelTypes)
Configure theChannelTypes
to restrict this option to.OptionData
setDescription(java.lang.String description)
Configure the descriptionOptionData
setMaxValue(double value)
Configure the maximal value which can be provided for this option.OptionData
setMaxValue(long value)
Configure the maximal value which can be provided for this option.OptionData
setMinValue(double value)
Configure the minimal value which can be provided for this option.OptionData
setMinValue(long value)
Configure the minimal value which can be provided for this option.OptionData
setName(java.lang.String name)
Configure the nameOptionData
setRequired(boolean required)
Configure whether the user must set this option.OptionData
setRequiredRange(double minValue, double maxValue)
Configure the minimal and maximal value which can be provided for this option.OptionData
setRequiredRange(long minValue, long maxValue)
Configure the minimal and maximal value which can be provided for this option.DataObject
toData()
SerializedDataObject
for this object.
-
-
-
Field Detail
-
MAX_POSITIVE_NUMBER
public static final double MAX_POSITIVE_NUMBER
The highest positive amount Discord allows theNUMBER
type to be.- See Also:
- Constant Field Values
-
MIN_NEGATIVE_NUMBER
public static final double MIN_NEGATIVE_NUMBER
The largest negative amount Discord allows theNUMBER
type to be.- See Also:
- Constant Field Values
-
MAX_NAME_LENGTH
public static final int MAX_NAME_LENGTH
The maximum length the name of an option can be.- See Also:
- Constant Field Values
-
MAX_CHOICE_NAME_LENGTH
public static final int MAX_CHOICE_NAME_LENGTH
The maximum length of the name of Command Option Choice names- See Also:
- Constant Field Values
-
MAX_DESCRIPTION_LENGTH
public static final int MAX_DESCRIPTION_LENGTH
The maximum length the description of an option can be.- See Also:
- Constant Field Values
-
MAX_CHOICE_VALUE_LENGTH
public static final int MAX_CHOICE_VALUE_LENGTH
The maximum length aString value
for a choice can be.- See Also:
- Constant Field Values
-
MAX_CHOICES
public static final int MAX_CHOICES
The total amount ofchoices
you can set.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
OptionData
public OptionData(@Nonnull OptionType type, @Nonnull java.lang.String name, @Nonnull java.lang.String description)
Create an option builder.
This option is notrequired
by default.- Parameters:
type
- TheOptionType
name
- The option name, up to 32 alphanumeric (with dash) lowercase characters, as defined byMAX_NAME_LENGTH
description
- The option description, up to 100 characters, as defined byMAX_DESCRIPTION_LENGTH
- Throws:
java.lang.IllegalArgumentException
- If any of the following checks fail
-
OptionData
public OptionData(@Nonnull OptionType type, @Nonnull java.lang.String name, @Nonnull java.lang.String description, boolean isRequired)
Create an option builder.- Parameters:
type
- TheOptionType
name
- The option name, up to 32 alphanumeric (with dash) lowercase characters, as defined byMAX_NAME_LENGTH
description
- The option description, up to 100 characters, as defined byMAX_DESCRIPTION_LENGTH
isRequired
-True
, if this option is required- Throws:
java.lang.IllegalArgumentException
- If any of the following checks fail
-
-
Method Detail
-
getType
@Nonnull public OptionType getType()
TheOptionType
for this option- Returns:
- The
OptionType
-
getName
@Nonnull public java.lang.String getName()
The name for this option- Returns:
- The name
-
getDescription
@Nonnull public java.lang.String getDescription()
The description for this option- Returns:
- The description
-
isRequired
public boolean isRequired()
Whether this option is required.
This can be configured withsetRequired(boolean)
.Required options must always be set by the command invocation.
- Returns:
- True, if this option is required
-
getChannelTypes
@Nonnull public java.util.EnumSet<ChannelType> getChannelTypes()
TheChannelTypes
this option is restricted to.
This is empty if the option is not of typeCHANNEL
or not restricted to specific types.- Returns:
EnumSet
ofChannelType
-
getMinValue
@Nullable public java.lang.Number getMinValue()
The minimum value which can be provided for this option.
This returnsnull
if the value is not set or if the option is not of typeINTEGER
orNUMBER
.- Returns:
- The minimum value for this option
-
getMaxValue
@Nullable public java.lang.Number getMaxValue()
The maximum value which can be provided for this option.
This returnsnull
if the value is not set or if the option is not of typeINTEGER
orNUMBER
.- Returns:
- The maximum value for this option
-
getChoices
@Nonnull public java.util.List<Command.Choice> getChoices()
The choices for this option.
This is empty by default and can only be configured for specific option types.- Returns:
- Immutable list of
Choices
- See Also:
addChoice(String, int)
,addChoice(String, long)
,addChoice(String, String)
-
setName
@Nonnull public OptionData setName(@Nonnull java.lang.String name)
Configure the name- Parameters:
name
- The lowercase alphanumeric (with dash) name,1-32 characters long
- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If the name is null, empty, not alphanumeric, or not between 1-32 characters long, as defined byMAX_NAME_LENGTH
-
setDescription
@Nonnull public OptionData setDescription(@Nonnull java.lang.String description)
Configure the description- Parameters:
description
- The description, 1-100 characters, as defined byMAX_DESCRIPTION_LENGTH
- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If the name is null or larger thanMAX_DESCRIPTION_LENGTH
-
setRequired
@Nonnull public OptionData setRequired(boolean required)
Configure whether the user must set this option.
Required options must always be filled out when using the command.- Parameters:
required
- True, if this option is required- Returns:
- The OptionData instance, for chaining
-
setChannelTypes
@Nonnull public OptionData setChannelTypes(@Nonnull ChannelType... channelTypes)
Configure theChannelTypes
to restrict this option to. This only applies to options of typeCHANNEL
.- Parameters:
channelTypes
- TheChannelTypes
to restrict this option to or empty array to accept allChannelTypes
- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If any of the following checks failtype of this option
isCHANNEL
channelTypes
doesn't containnull
channelTypes
only contains guild channels
-
setChannelTypes
@Nonnull public OptionData setChannelTypes(@Nonnull java.util.Collection<ChannelType> channelTypes)
Configure theChannelTypes
to restrict this option to. This only applies to options of typeCHANNEL
.- Parameters:
channelTypes
- TheChannelTypes
to restrict this option to or empty collection to accept allChannelTypes
- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If any of the following checks failtype of this option
isCHANNEL
channelTypes
is not nullchannelTypes
doesn't containnull
channelTypes
only contains guild channels
-
setMinValue
@Nonnull public OptionData setMinValue(long value)
Configure the minimal value which can be provided for this option.- Parameters:
value
- The minimal value which can be provided for this option.- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If any of the following checks failtype of this option
isINTEGER
orNUMBER
value
is larger than or equal toMIN_NEGATIVE_NUMBER
-
setMinValue
@Nonnull public OptionData setMinValue(double value)
Configure the minimal value which can be provided for this option.- Parameters:
value
- The minimal value which can be provided for this option.- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If any of the following checks failtype of this option
isNUMBER
value
is larger than or equal toMIN_NEGATIVE_NUMBER
-
setMaxValue
@Nonnull public OptionData setMaxValue(long value)
Configure the maximal value which can be provided for this option.- Parameters:
value
- The maximal value which can be provided for this option.- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If any of the following checks failtype of this option
isINTEGER
orNUMBER
value
is lower than or equal toMAX_POSITIVE_NUMBER
-
setMaxValue
@Nonnull public OptionData setMaxValue(double value)
Configure the maximal value which can be provided for this option.- Parameters:
value
- The maximal value which can be provided for this option.- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If any of the following checks failtype of this option
isNUMBER
value
is lower than or equal toMAX_POSITIVE_NUMBER
-
setRequiredRange
@Nonnull public OptionData setRequiredRange(long minValue, long maxValue)
Configure the minimal and maximal value which can be provided for this option.- Parameters:
minValue
- The minimal value which can be provided for this option.maxValue
- The maximal value which can be provided for this option.- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If any of the following checks failtype of this option
isINTEGER
orNUMBER
minValue
is larger than or equal toMIN_NEGATIVE_NUMBER
maxValue
is lower than or equal toMAX_POSITIVE_NUMBER
-
setRequiredRange
@Nonnull public OptionData setRequiredRange(double minValue, double maxValue)
Configure the minimal and maximal value which can be provided for this option.- Parameters:
minValue
- The minimal value which can be provided for this option.maxValue
- The maximal value which can be provided for this option.- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If any of the following checks failtype of this option
isNUMBER
minValue
is larger than or equal toMIN_NEGATIVE_NUMBER
maxValue
is lower than or equal toMAX_POSITIVE_NUMBER
-
addChoice
@Nonnull public OptionData addChoice(@Nonnull java.lang.String name, double value)
Add a predefined choice for this option.
The user can only provide one of the choices and cannot specify any other value.- Parameters:
name
- The name used in the client, up to 100 characters long, as defined byMAX_CHOICE_NAME_LENGTH
value
- The value received inOptionMapping
- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If any of the following checks failname
is not null, empty and less or equal to 100 characters longvalue
is not less thanMIN_NEGATIVE_NUMBER
and not larger thanMAX_POSITIVE_NUMBER
- The amount of already set choices is less than
MAX_CHOICES
- The
OptionType
isOptionType.NUMBER
-
addChoice
@Nonnull public OptionData addChoice(@Nonnull java.lang.String name, int value)
Add a predefined choice for this option.
The user can only provide one of the choices and cannot specify any other value.- Parameters:
name
- The name used in the clientvalue
- The value received inOptionMapping
- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If any of the following checks failname
is not null, empty and less or equal to 100 characters long- The amount of already set choices is less than
MAX_CHOICES
- The
OptionType
isOptionType.INTEGER
-
addChoice
@Nonnull public OptionData addChoice(@Nonnull java.lang.String name, long value)
Add a predefined choice for this option.
The user can only provide one of the choices and cannot specify any other value.- Parameters:
name
- The name used in the clientvalue
- The value received inOptionMapping
- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If any of the following checks failname
is not null, empty and less or equal to 100 characters longvalue
is not less thanMIN_NEGATIVE_NUMBER
and not larger thanMAX_POSITIVE_NUMBER
- The amount of already set choices is less than
MAX_CHOICES
- The
OptionType
isOptionType.INTEGER
-
addChoice
@Nonnull public OptionData addChoice(@Nonnull java.lang.String name, @Nonnull java.lang.String value)
Add a predefined choice for this option.
The user can only provide one of the choices and cannot specify any other value.- Parameters:
name
- The name used in the clientvalue
- The value received inOptionMapping
- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If any of the following checks failname
is not null, empty and less or equal to 100 characters longvalue
is not null, empty and less or equal to 100 characters long- The amount of already set choices is less than
MAX_CHOICES
- The
OptionType
isOptionType.STRING
-
addChoices
@Nonnull public OptionData addChoices(@Nonnull Command.Choice... choices)
Adds up to 25 predefined choices for this option.
The user can only provide one of the choices and cannot specify any other value.- Parameters:
choices
- The choices to add- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If any of the following checks fail- The
OptionType
doessupport choices
- The provided
choices
are not null - The amount of
choices
provided is smaller thanMAX_CHOICES
when combined with already set choices - The
OptionType
of the choices is eitherOptionType.INTEGER
,OptionType.STRING
orOptionType.NUMBER
- The
-
addChoices
@Nonnull public OptionData addChoices(@Nonnull java.util.Collection<? extends Command.Choice> choices)
Adds up to 25 predefined choices for this option.
The user can only provide one of the choices and cannot specify any other value.- Parameters:
choices
- The choices to add- Returns:
- The OptionData instance, for chaining
- Throws:
java.lang.IllegalArgumentException
- If any of the following checks fail- The
OptionType
doessupport choices
- The provided
choices
are not null - The amount of
choices
provided is smaller thanMAX_CHOICES
when combined with already set choices - The
OptionType
of the choices is eitherOptionType.INTEGER
,OptionType.STRING
orOptionType.NUMBER
- The
-
toData
@Nonnull public DataObject toData()
Description copied from interface:SerializableData
SerializedDataObject
for this object.- Specified by:
toData
in interfaceSerializableData
- Returns:
DataObject
-
fromData
@Nonnull public static OptionData fromData(@Nonnull DataObject json)
Parses the provided serialization back into an OptionData instance.
This is the reverse function fortoData()
.- Parameters:
json
- The serializedDataObject
representing the option- Returns:
- The parsed OptionData instance, which can be further configured through setters
- Throws:
ParsingException
- If the serialized object is missing required fieldsjava.lang.IllegalArgumentException
- If any of the values are failing the respective checks such as length
-
-