D++ (DPP)
C++ Discord API Bot Library
dpp::command_option Struct Reference

Each command option is a command line parameter. It can have a type (see dpp::command_option_type), a name, a description, can be required or optional, and can have zero or more choices (for multiple choice), plus options. Adding options acts like sub-commands and can contain more options. More...

#include <appcommand.h>

+ Inheritance diagram for dpp::command_option:
+ Collaboration diagram for dpp::command_option:

Public Member Functions

 command_option ()=default
 Construct a new command option object. More...
 
virtual ~command_option ()=default
 Destroy the command option object. More...
 
command_optionadd_localization (const std::string &language, const std::string &_name, const std::string &_description="")
 Add a localisation for this slash command option. More...
 
 command_option (command_option_type t, const std::string &name, const std::string &description, bool required=false)
 Construct a new command option object. More...
 
command_optionadd_choice (const command_option_choice &o)
 Add a multiple choice option. More...
 
command_optionset_min_value (command_option_range min_v)
 Set the minimum numeric value of the option. Only valid if the type is dpp::co_number or dpp::co_integer. More...
 
command_optionset_max_value (command_option_range max_v)
 Set the maximum numeric value of the option. Only valid if the type is dpp::co_number or dpp::co_integer. More...
 
command_optionset_min_length (command_option_range min_v)
 Set the minimum string length of the option. Must be between 0 and 6000 (inclusive). Only valid if the type is dpp::co_string. More...
 
command_optionset_max_length (command_option_range max_v)
 Set the maximum string length of the option. Must be between 1 and 6000 (inclusive). Only valid if the type is dpp::co_string. More...
 
command_optionadd_option (const command_option &o)
 Add a sub-command option. More...
 
command_optionadd_channel_type (const channel_type ch)
 Add channel type for option (only for co_channel type options) More...
 
command_optionset_auto_complete (bool autocomp)
 Set the auto complete state. More...
 
command_optionfill_from_json (nlohmann::json *j)
 Convert object from nlohmann::json. More...
 
auto to_json (bool with_id=false) const
 Convert object to nlohmann::json. More...
 
std::string build_json (bool with_id=false) const
 Convert object to json string. More...
 

Public Attributes

command_option_type type
 Option type (what type of value is accepted). More...
 
std::string name
 Option name (1-32 chars). More...
 
std::string description
 Option description (1-100 chars). More...
 
bool required
 Is this a mandatory parameter? More...
 
bool focused
 Is the user is typing in this field? More...
 
command_value value
 Set only by autocomplete when sent as part of an interaction. More...
 
std::vector< command_option_choicechoices
 List of choices for multiple choice command. More...
 
bool autocomplete
 Does this option supports auto completion? More...
 
std::vector< command_optionoptions
 An array of sub-commands (options). More...
 
std::vector< channel_typechannel_types
 Allowed channel types for channel snowflake id options. More...
 
command_option_range min_value
 Minimum value/length that can be entered, for dpp::co_number, dpp::co_integer and dpp::co_string types only. More...
 
command_option_range max_value
 Maximum value/length that can be entered, for dpp::co_number, dpp::co_integer and dpp::co_string types only. More...
 
std::map< std::string, std::string > name_localizations
 Localisations of command name. More...
 
std::map< std::string, std::string > description_localizations
 Localisations of command description. More...
 

Protected Member Functions

command_optionfill_from_json_impl (nlohmann::json *j)
 Fill object properties from JSON. Fills options recursively. More...
 

Friends

struct json_interface< command_option >
 

Detailed Description

Each command option is a command line parameter. It can have a type (see dpp::command_option_type), a name, a description, can be required or optional, and can have zero or more choices (for multiple choice), plus options. Adding options acts like sub-commands and can contain more options.

Constructor & Destructor Documentation

◆ command_option() [1/2]

dpp::command_option::command_option ( )
default

Construct a new command option object.

◆ ~command_option()

virtual dpp::command_option::~command_option ( )
virtualdefault

Destroy the command option object.

◆ command_option() [2/2]

dpp::command_option::command_option ( command_option_type  t,
const std::string &  name,
const std::string &  description,
bool  required = false 
)

Construct a new command option object.

Parameters
tOption type
nameOption name
descriptionOption description
requiredTrue if this is a mandatory parameter

Member Function Documentation

◆ add_channel_type()

command_option & dpp::command_option::add_channel_type ( const channel_type  ch)

Add channel type for option (only for co_channel type options)

Parameters
chtype to set
Returns
command_option& return a reference to self for chaining of calls

◆ add_choice()

command_option & dpp::command_option::add_choice ( const command_option_choice o)

Add a multiple choice option.

Parameters
ochoice to add
Returns
command_option& returns a reference to self for chaining of calls
Exceptions
dpp::logic_exceptioncommand_option is an autocomplete, so choices cannot be added

◆ add_localization()

command_option & dpp::command_option::add_localization ( const std::string &  language,
const std::string &  _name,
const std::string &  _description = "" 
)

Add a localisation for this slash command option.

See also
https://discord.com/developers/docs/reference#locales
Parameters
languageName of language, see the list of locales linked to above
_namename of slash command option in the specified language
_descriptiondescription of slash command option in the specified language (optional)
Returns
command_option& reference to self for fluent chaining

◆ add_option()

command_option & dpp::command_option::add_option ( const command_option o)

Add a sub-command option.

Parameters
oSub-command option to add
Returns
command_option& return a reference to self for chaining of calls

◆ build_json()

std::string dpp::json_interface< command_option >::build_json ( bool  with_id = false) const
inlineinherited

Convert object to json string.

Parameters
with_idWhether to include the ID or not
Note
Some fields are conditionally filled, do not rely on all fields being present
Returns
std::string Json built from the structure

◆ fill_from_json()

command_option & dpp::json_interface< command_option >::fill_from_json ( nlohmann::json *  j)
inlineinherited

Convert object from nlohmann::json.

Parameters
jnlohmann::json object
Returns
T& Reference to self for fluent calling

◆ fill_from_json_impl()

command_option & dpp::command_option::fill_from_json_impl ( nlohmann::json *  j)
protected

Fill object properties from JSON. Fills options recursively.

Parameters
jJSON to fill from
Returns
command_option& Reference to self

◆ set_auto_complete()

command_option & dpp::command_option::set_auto_complete ( bool  autocomp)

Set the auto complete state.

Parameters
autocompTrue to enable auto completion for this option
Returns
command_option& return a reference to self for chaining of calls
Exceptions
dpp::logic_exceptionYou attempted to enable auto complete on a command_option that has choices added to it

◆ set_max_length()

command_option & dpp::command_option::set_max_length ( command_option_range  max_v)

Set the maximum string length of the option. Must be between 1 and 6000 (inclusive). Only valid if the type is dpp::co_string.

Parameters
max_vMaximum value
Returns
command_option& returns a reference to self for chaining of calls

◆ set_max_value()

command_option & dpp::command_option::set_max_value ( command_option_range  max_v)

Set the maximum numeric value of the option. Only valid if the type is dpp::co_number or dpp::co_integer.

Parameters
max_vMaximum value
Returns
command_option& returns a reference to self for chaining of calls

◆ set_min_length()

command_option & dpp::command_option::set_min_length ( command_option_range  min_v)

Set the minimum string length of the option. Must be between 0 and 6000 (inclusive). Only valid if the type is dpp::co_string.

Parameters
min_vMinimum value
Returns
command_option& returns a reference to self for chaining of calls

◆ set_min_value()

command_option & dpp::command_option::set_min_value ( command_option_range  min_v)

Set the minimum numeric value of the option. Only valid if the type is dpp::co_number or dpp::co_integer.

Parameters
min_vMinimum value
Returns
command_option& returns a reference to self for chaining of calls

◆ to_json()

auto dpp::json_interface< command_option >::to_json ( bool  with_id = false) const
inlineinherited

Convert object to nlohmann::json.

Parameters
with_idWhether to include the ID or not
Note
Some fields are conditionally filled, do not rely on all fields being present
Returns
json Json built from the structure

Friends And Related Function Documentation

◆ json_interface< command_option >

friend struct json_interface< command_option >
friend

Member Data Documentation

◆ autocomplete

bool dpp::command_option::autocomplete

Does this option supports auto completion?

◆ channel_types

std::vector<channel_type> dpp::command_option::channel_types

Allowed channel types for channel snowflake id options.

◆ choices

std::vector<command_option_choice> dpp::command_option::choices

List of choices for multiple choice command.

◆ description

std::string dpp::command_option::description

Option description (1-100 chars).

◆ description_localizations

std::map<std::string, std::string> dpp::command_option::description_localizations

Localisations of command description.

◆ focused

bool dpp::command_option::focused

Is the user is typing in this field?

Note
This is sent via autocomplete.

◆ max_value

command_option_range dpp::command_option::max_value

Maximum value/length that can be entered, for dpp::co_number, dpp::co_integer and dpp::co_string types only.

◆ min_value

command_option_range dpp::command_option::min_value

Minimum value/length that can be entered, for dpp::co_number, dpp::co_integer and dpp::co_string types only.

◆ name

std::string dpp::command_option::name

Option name (1-32 chars).

◆ name_localizations

std::map<std::string, std::string> dpp::command_option::name_localizations

Localisations of command name.

◆ options

std::vector<command_option> dpp::command_option::options

An array of sub-commands (options).

◆ required

bool dpp::command_option::required

Is this a mandatory parameter?

◆ type

command_option_type dpp::command_option::type

Option type (what type of value is accepted).

◆ value

command_value dpp::command_option::value

Set only by autocomplete when sent as part of an interaction.

D++ Library version 10.0.29D++ Library version 10.0.28D++ Library version 10.0.27D++ Library version 10.0.26D++ Library version 10.0.25D++ Library version 10.0.24D++ Library version 10.0.23D++ Library version 10.0.22D++ Library version 10.0.21D++ Library version 10.0.20D++ Library version 10.0.19D++ Library version 10.0.18D++ Library version 10.0.17D++ Library version 10.0.16D++ Library version 10.0.15D++ Library version 10.0.14D++ Library version 10.0.13D++ Library version 10.0.12D++ Library version 10.0.11D++ Library version 10.0.10D++ Library version 10.0.9D++ Library version 10.0.8D++ Library version 10.0.7D++ Library version 10.0.6D++ Library version 10.0.5D++ Library version 10.0.4D++ Library version 10.0.3D++ Library version 10.0.2D++ Library version 10.0.1D++ Library version 10.0.0D++ Library version 9.0.19D++ Library version 9.0.18D++ Library version 9.0.17D++ Library version 9.0.16D++ Library version 9.0.15D++ Library version 9.0.14D++ Library version 9.0.13D++ Library version 9.0.12D++ Library version 9.0.11D++ Library version 9.0.10D++ Library version 9.0.9D++ Library version 9.0.8D++ Library version 9.0.7D++ Library version 9.0.6D++ Library version 9.0.5D++ Library version 9.0.4D++ Library version 9.0.3D++ Library version 9.0.2D++ Library version 9.0.1D++ Library version 9.0.0D++ Library version 1.0.2D++ Library version 1.0.1D++ Library version 1.0.0