D++ (DPP)
C++ Discord API Bot Library
dpp::component Class Reference

Represents the component object. A component is a clickable button or drop down list within a discord message, where the buttons emit on_button_click events when the user interacts with them. More...

#include <message.h>

+ Collaboration diagram for dpp::component:

Classes

struct  inner_emoji
 

Public Member Functions

 component ()
 
 ~component ()=default
 
componentset_type (component_type ct)
 Set the type of the component. Button components (type dpp::cot_button) should always be contained within an action row (type dpp::cot_action_row). As described below, many of the other methods automatically set this to the correct type so usually you should not need to manually call component::set_type(). More...
 
componentset_label (const std::string &label)
 Set the label of the component, e.g. button text. For action rows, this field is ignored. Setting the label will auto-set the type to dpp::cot_button. More...
 
componentset_url (const std::string &url)
 Set the url for dpp::cos_link types. Calling this function sets the style to dpp::cos_link and the type to dpp::cot_button. More...
 
componentset_style (component_style cs)
 Set the style of the component, e.g. button colour. For action rows, this field is ignored. Setting the style will auto-set the type to dpp::cot_button. More...
 
componentset_id (const std::string &id)
 Set the id of the component. For action rows, this field is ignored. Setting the id will auto-set the type to dpp::cot_button. More...
 
componentset_disabled (bool disable)
 Set the component to disabled. Defaults to false on all created components. More...
 
componentset_placeholder (const std::string &placeholder)
 Set the placeholder. More...
 
componentset_min_values (uint32_t min_values)
 Set the min value. More...
 
componentset_max_values (uint32_t max_values)
 Set the max value. More...
 
componentadd_select_option (const select_option &option)
 Add a select option. More...
 
componentadd_component (const component &c)
 Add a sub-component, only valid for action rows. Adding subcomponents to a component will automatically set this component's type to dpp::cot_action_row. More...
 
componentset_emoji (const std::string &name, dpp::snowflake id=0, bool animated=false)
 Set the emoji of the current sub-component. Only valid for buttons. Adding an emoji to a component will automatically set this components type to dpp::cot_button. One or both of name and id must be set. For a built in unicode emoji, you only need set name, and should set it to a unicode character e.g. "😄". For custom emojis, set the name to the name of the emoji on the guild, and the id to the emoji's ID. Setting the animated boolean is only valid for custom emojis. More...
 
componentfill_from_json (nlohmann::json *j)
 

Public Attributes

component_type type
 
std::vector< componentcomponents
 
std::string label
 
component_style style
 
std::string custom_id
 
std::string url
 
std::string placeholder
 
int32_t min_values
 
int32_t max_values
 
std::vector< select_optionoptions
 
bool disabled
 
struct dpp::component::inner_emoji emoji
 

Detailed Description

Represents the component object. A component is a clickable button or drop down list within a discord message, where the buttons emit on_button_click events when the user interacts with them.

You should generally define one component object and then insert one or more additional components into it using component::add_component(), so that the parent object is an action row and the child objects are buttons.

Note
At present this only works for whitelisted guilds. The beta is closed. When this feature is released, then the functionality will work correctly.

Constructor & Destructor Documentation

◆ component()

dpp::component::component ( )

Constructor

◆ ~component()

dpp::component::~component ( )
default

Destructor

Member Function Documentation

◆ add_component()

component & dpp::component::add_component ( const component c)

Add a sub-component, only valid for action rows. Adding subcomponents to a component will automatically set this component's type to dpp::cot_action_row.

Parameters
cThe sub-component to add
Returns
component& reference to self

◆ add_select_option()

component & dpp::component::add_select_option ( const select_option option)

Add a select option.

Parameters
optionoption to add
Returns
component& Reference to self

◆ fill_from_json()

component & dpp::component::fill_from_json ( nlohmann::json j)

Read class values from json object

Parameters
jA json object to read from
Returns
A reference to self

◆ set_disabled()

component & dpp::component::set_disabled ( bool  disable)

Set the component to disabled. Defaults to false on all created components.

Parameters
disableTrue to disable, false to disable.
Returns
component& Reference to self

◆ set_emoji()

component & dpp::component::set_emoji ( const std::string &  name,
dpp::snowflake  id = 0,
bool  animated = false 
)

Set the emoji of the current sub-component. Only valid for buttons. Adding an emoji to a component will automatically set this components type to dpp::cot_button. One or both of name and id must be set. For a built in unicode emoji, you only need set name, and should set it to a unicode character e.g. "😄". For custom emojis, set the name to the name of the emoji on the guild, and the id to the emoji's ID. Setting the animated boolean is only valid for custom emojis.

Parameters
nameEmoji name, or unicode character to use
idEmoji id, for custom emojis only.
animatedTrue if the custom emoji is animated.
Returns
component& Reference to self

◆ set_id()

component & dpp::component::set_id ( const std::string &  id)

Set the id of the component. For action rows, this field is ignored. Setting the id will auto-set the type to dpp::cot_button.

Parameters
idCustom ID string to set. This ID will be sent for any on_button_click events related to the button.
Returns
component& Reference to self

◆ set_label()

component & dpp::component::set_label ( const std::string &  label)

Set the label of the component, e.g. button text. For action rows, this field is ignored. Setting the label will auto-set the type to dpp::cot_button.

Parameters
labelLabel text to set
Returns
component& Reference to self

◆ set_max_values()

component & dpp::component::set_max_values ( uint32_t  max_values)

Set the max value.

Parameters
max_valuesmax value to set
Returns
component& Reference to self

◆ set_min_values()

component & dpp::component::set_min_values ( uint32_t  min_values)

Set the min value.

Parameters
min_valuesmin value to set
Returns
component& Reference to self

◆ set_placeholder()

component & dpp::component::set_placeholder ( const std::string &  placeholder)

Set the placeholder.

Parameters
placeholderplaceholder string
Returns
component& Reference to self

◆ set_style()

component & dpp::component::set_style ( component_style  cs)

Set the style of the component, e.g. button colour. For action rows, this field is ignored. Setting the style will auto-set the type to dpp::cot_button.

Parameters
csComponent style to set
Returns
component& reference to self

◆ set_type()

component & dpp::component::set_type ( component_type  ct)

Set the type of the component. Button components (type dpp::cot_button) should always be contained within an action row (type dpp::cot_action_row). As described below, many of the other methods automatically set this to the correct type so usually you should not need to manually call component::set_type().

Parameters
ctThe component type
Returns
component& reference to self

◆ set_url()

component & dpp::component::set_url ( const std::string &  url)

Set the url for dpp::cos_link types. Calling this function sets the style to dpp::cos_link and the type to dpp::cot_button.

Parameters
urlURL to set, maximum length of 512 characters
Returns
component& reference to self.

Member Data Documentation

◆ components

std::vector<component> dpp::component::components

Sub commponents, buttons on an action row

◆ custom_id

std::string dpp::component::custom_id

Component id (for buttons). Maximum of 100 characters.

◆ disabled

bool dpp::component::disabled

Disabled flag (for buttons)

◆ emoji

struct dpp::component::inner_emoji dpp::component::emoji

◆ label

std::string dpp::component::label

Component label (for buttons). Maximum of 80 characters.

◆ max_values

int32_t dpp::component::max_values

Maximum number of selectable values for a select menu. -1 to not set this.

◆ min_values

int32_t dpp::component::min_values

Minimum number of selectable values for a select menu. -1 to not set this

◆ options

std::vector<select_option> dpp::component::options

Select options for select menus

◆ placeholder

std::string dpp::component::placeholder

Placeholder text for select menus

◆ style

component_style dpp::component::style

Component style (for buttons)

◆ type

component_type dpp::component::type

Component type, either a button or action row

◆ url

std::string dpp::component::url

URL for link types (dpp::cos_link). Maximum of 512 characters.

D++ Library version 10.0.35D++ Library version 10.0.34D++ Library version 10.0.33D++ Library version 10.0.32D++ Library version 10.0.31D++ Library version 10.0.30D++ 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