Represents the component object. More...
#include "message.h"
Public Member Functions | |
component () | |
Constructor. More... | |
virtual | ~component ()=default |
Destructor. More... | |
component & | add_channel_type (uint8_t ct) |
Add a channel type to include in the channel select component (dpp::cot_channel_selectmenu) More... | |
component & | add_component (const component &c) |
Add a sub-component, only valid for action rows. More... | |
component & | add_default_value (const snowflake id, const component_default_value_type type) |
Add a default value. More... | |
component & | add_select_option (const select_option &option) |
Add a select option. More... | |
template<typename U = T, typename = decltype(std::declval<U&>().to_json_impl(bool{}))> | |
std::string | build_json (bool with_id=false) const |
Convert object to json string. More... | |
template<typename U = T, typename = decltype(std::declval<U&>().fill_from_json_impl(std::declval<nlohmann::json*>()))> | |
T & | fill_from_json (nlohmann::json *j) |
Convert object from nlohmann::json. More... | |
component & | set_default_value (const std::string &val) |
Set the default value of the text input component. More... | |
component & | set_disabled (bool disable) |
Set the component to disabled. More... | |
component & | set_emoji (const std::string &name, dpp::snowflake id=0, bool animated=false) |
Set the emoji of the current sub-component. More... | |
component & | set_id (const std::string &id) |
Set the id of the component. More... | |
component & | set_label (const std::string &label) |
Set the label of the component, e.g. More... | |
component & | set_max_length (uint32_t max_l) |
Set the maximum input length for a text input. More... | |
component & | set_max_values (uint32_t max_values) |
Set the maximum number of items that can be chosen for a select menu. More... | |
component & | set_min_length (uint32_t min_l) |
Set the minimum input length for a text input. More... | |
component & | set_min_values (uint32_t min_values) |
Set the minimum number of items that must be chosen for a select menu. More... | |
component & | set_placeholder (const std::string &placeholder) |
Set the placeholder. More... | |
component & | set_required (bool require) |
Set if this component is required. More... | |
component & | set_style (component_style cs) |
Set the style of the component, e.g. More... | |
component & | set_text_style (text_style_type ts) |
Set the text style of a text component. More... | |
component & | set_type (component_type ct) |
Set the type of the component. More... | |
component & | set_url (const std::string &url) |
Set the url for dpp::cos_link types. More... | |
template<typename U = T, typename = decltype(std::declval<U&>().to_json_impl(bool{}))> | |
auto | to_json (bool with_id=false) const |
Convert object to nlohmann::json. More... | |
Public Attributes | |
std::vector< uint8_t > | channel_types |
List of channel types (dpp::channel_type) to include in the channel select component (dpp::cot_channel_selectmenu) More... | |
std::vector< component > | components |
Sub components, buttons on an action row. More... | |
std::string | custom_id |
Component id (for buttons, menus, text inputs). More... | |
std::vector< component_default_value > | default_values |
List of default values for auto-populated select menu components. More... | |
bool | disabled |
Disabled flag (for buttons) More... | |
partial_emoji | emoji |
The emoji for this component. More... | |
std::string | label |
Component label (for buttons, text inputs). More... | |
int32_t | max_length |
Maximum length for text input (1-4000) More... | |
int32_t | max_values |
Maximum number of items that can be chosen for a select menu (0-25). More... | |
int32_t | min_length |
Minimum length for text input (0-4000) More... | |
int32_t | min_values |
Minimum number of items that must be chosen for a select menu (0-25). More... | |
std::vector< select_option > | options |
Select options for select menus. More... | |
std::string | placeholder |
Placeholder text for select menus and text inputs (max 150 characters) More... | |
bool | required |
Whether the text input is required to be filled. More... | |
component_style | style |
Component style (for buttons). More... | |
text_style_type | text_style |
Text style (for text inputs). More... | |
component_type | type |
Component type, either a button or action row. More... | |
std::string | url |
URL for link types (dpp::cos_link). More... | |
std::variant< std::monostate, std::string, int64_t, double > | value |
Value of the modal. More... | |
Protected Member Functions | |
component & | fill_from_json_impl (nlohmann::json *j) |
Read class values from json object. More... | |
Friends | |
struct | json_interface< component > |
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.
dpp::component::component | ( | ) |
Constructor.
References max_values.
|
virtualdefault |
Destructor.
component & dpp::component::add_channel_type | ( | uint8_t | ct | ) |
Add a channel type to include in the channel select component (dpp::cot_channel_selectmenu)
ct | The dpp::channel_type |
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.
c | The sub-component to add |
component & dpp::component::add_default_value | ( | const snowflake | id, |
const component_default_value_type | type | ||
) |
Add a default value.
id | Default value. ID of a user, role, or channel |
type | The type this default value represents |
component & dpp::component::add_select_option | ( | const select_option & | option | ) |
Add a select option.
option | option to add |
References dpp::string_not_null(), and dpp::poll_media::text.
|
inlineinherited |
Convert object to json string.
with_id | Whether to include the ID or not |
Referenced by dpp::cluster::create_webhook(), dpp::cluster::guild_ban_add(), dpp::cluster::guild_ban_delete(), dpp::cluster::guild_command_edit_permissions(), dpp::cluster::guild_create(), dpp::cluster::guild_get_integrations(), dpp::cluster::guild_get_preview(), dpp::cluster::guild_get_vanity(), and dpp::cluster::roles_get().
|
inlineinherited |
Convert object from nlohmann::json.
j | nlohmann::json object |
Referenced by dpp::invite::fill_from_json_impl(), dpp::thread::fill_from_json_impl(), dpp::scheduled_event::fill_from_json_impl(), dpp::from_json(), dpp::message::get_url(), and dpp::interaction_response::interaction_response().
|
protected |
Read class values from json object.
j | A json object to read from |
component & dpp::component::set_default_value | ( | const std::string & | val | ) |
Set the default value of the text input component.
For action rows, this field is ignored. Setting the value will auto-set the type to dpp::cot_text.
val | Value text to set. It will be truncated to the maximum length of 4000 UTF-8 characters. |
component & dpp::component::set_disabled | ( | bool | disable | ) |
Set the component to disabled.
Defaults to false on all created components.
disable | True to disable, false to disable. |
References dpp::cot_action_row, dpp::cot_button, dpp::managed::id, dpp::unicode_emoji::id, dpp::emoji::name, set_type(), and type.
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.
name | Emoji name, or unicode character to use |
id | Emoji id, for custom emojis only. |
animated | True if the custom emoji is animated. |
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.
id | Custom ID string to set. This ID will be sent for any on_button_click events related to the button. |
References dpp::cot_action_row, dpp::cot_button, required, set_type(), and type.
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.
label | Label text to set. It will be truncated to the maximum length of 80 UTF-8 characters. |
component & dpp::component::set_max_length | ( | uint32_t | max_l | ) |
Set the maximum input length for a text input.
max_l | max length to set (1-4000) |
component & dpp::component::set_max_values | ( | uint32_t | max_values | ) |
Set the maximum number of items that can be chosen for a select menu.
max_values | max value to set (0-25) |
References dpp::anonymous_namespace{message.cpp}::get_poll_media(), and dpp::unicode_emoji::key.
component & dpp::component::set_min_length | ( | uint32_t | min_l | ) |
Set the minimum input length for a text input.
min_l | min length to set (0-4000) |
References dpp::unicode_emoji::a.
component & dpp::component::set_min_values | ( | uint32_t | min_values | ) |
Set the minimum number of items that must be chosen for a select menu.
min_values | min value to set (0-25) |
component & dpp::component::set_placeholder | ( | const std::string & | placeholder | ) |
Set the placeholder.
placeholder | placeholder string. It will be truncated to the maximum length of 150 UTF-8 characters for select menus, and 100 UTF-8 characters for modals. |
component & dpp::component::set_required | ( | bool | require | ) |
Set if this component is required.
Defaults to false on all created components.
require | True to require this, false to make it optional. |
References min_length.
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.
cs | Component style to set |
component & dpp::component::set_text_style | ( | text_style_type | ts | ) |
Set the text style of a text component.
cot_text
ts | Text style type to set |
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().
ct | The component type |
Referenced by set_disabled(), set_id(), and 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.
url | URL to set. It will be truncated to the maximum length of 512 UTF-8 characters. |
References dpp::cot_button, and set_type().
|
inlineinherited |
Convert object to nlohmann::json.
with_id | Whether to include the ID or not |
Referenced by dpp::cluster::delete_webhook_with_token(), and dpp::onboarding_prompt::onboarding_prompt().
|
friend |
std::vector<uint8_t> dpp::component::channel_types |
List of channel types (dpp::channel_type) to include in the channel select component (dpp::cot_channel_selectmenu)
std::vector<component> dpp::component::components |
Sub components, buttons on an action row.
std::string dpp::component::custom_id |
Component id (for buttons, menus, text inputs).
Maximum of 100 characters.
std::vector<component_default_value> dpp::component::default_values |
List of default values for auto-populated select menu components.
bool dpp::component::disabled |
Disabled flag (for buttons)
partial_emoji dpp::component::emoji |
The emoji for this component.
std::string dpp::component::label |
Component label (for buttons, text inputs).
Maximum of 80 characters.
int32_t dpp::component::max_length |
Maximum length for text input (1-4000)
int32_t dpp::component::max_values |
Maximum number of items that can be chosen for a select menu (0-25).
Referenced by component().
int32_t dpp::component::min_length |
Minimum length for text input (0-4000)
Referenced by set_required().
int32_t dpp::component::min_values |
Minimum number of items that must be chosen for a select menu (0-25).
std::vector<select_option> dpp::component::options |
Select options for select menus.
std::string dpp::component::placeholder |
Placeholder text for select menus and text inputs (max 150 characters)
bool dpp::component::required |
Whether the text input is required to be filled.
Referenced by set_id().
component_style dpp::component::style |
Component style (for buttons).
text_style_type dpp::component::text_style |
Text style (for text inputs).
component_type dpp::component::type |
Component type, either a button or action row.
Referenced by set_disabled(), and set_id().
std::string dpp::component::url |
URL for link types (dpp::cos_link).
Maximum of 512 characters.
std::variant<std::monostate, std::string, int64_t, double> dpp::component::value |
Value of the modal.
Filled or valid when populated from an on_form_submit event, or from the set_value function.