From d8399051829eddd1ce62f04049aec8ac4b68ddc7 Mon Sep 17 00:00:00 2001 From: "Craig Edwards (Brain)" Date: Sun, 15 Oct 2023 10:21:30 +0100 Subject: [PATCH 1/4] ci: bump gha-setup-ninja (#949) --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index feb40f4618..da98585152 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -187,7 +187,7 @@ jobs: uses: microsoft/setup-msbuild@1ff57057b5cfdc39105cd07a01d78e9b0ea0c14c # v1.3.1 - name: Install chocolatey packages ${{ matrix.cfg.arch}} - uses: seanmiddleditch/gha-setup-ninja@6263846cf3c17009dfc81604efabae16044fc074 # master + uses: seanmiddleditch/gha-setup-ninja@8b297075da4cd2a5f1fd21fe011b499edf06e9d2 # master - name: Generate CMake (x64) if: ${{ matrix.cfg.arch == 'x64' }} From b37e9acf18fd7e2fc208886fd9c49beea7b1d0c7 Mon Sep 17 00:00:00 2001 From: Phil Date: Mon, 16 Oct 2023 18:44:42 +0200 Subject: [PATCH 2/4] feat: added component default values (#889) Co-authored-by: Craig Edwards (Brain) --- include/dpp/message.h | 40 +++++++++++++++++++++++++++++++++++++ src/dpp/message.cpp | 46 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) diff --git a/include/dpp/message.h b/include/dpp/message.h index 6f05a701f5..00e04f7bfc 100644 --- a/include/dpp/message.h +++ b/include/dpp/message.h @@ -80,6 +80,31 @@ enum component_style : uint8_t { cos_link }; +/** + * Represents the type of a dpp::component_default_value + * + * @note They're different to discord's value types + */ +enum component_default_value_type: uint8_t { + cdt_user = 0, + cdt_role = 1, + cdt_channel = 2, +}; + +/** + * @brief A Default value structure for components + */ +struct DPP_EXPORT component_default_value { + /** + * @brief The type this default value represents + */ + component_default_value_type type; + /** + * @brief Default value. ID of a user, role, or channel + */ + dpp::snowflake id; +}; + /** * @brief An option for a select component */ @@ -295,6 +320,13 @@ class DPP_EXPORT component : public json_interface { */ std::vector channel_types; + /** + * List of default values for auto-populated select menu components. The amount of default values must be in the range defined by dpp::component::min_value and dpp::component::max_values. + * + * @note Only available for auto-populated select menu components, which include dpp::cot_user_selectmenu, dpp::cot_role_selectmenu, dpp::cot_mentionable_selectmenu, and dpp::cot_channel_selectmenu components. + */ + std::vector default_values; + /** Disabled flag (for buttons) */ bool disabled; @@ -503,6 +535,14 @@ class DPP_EXPORT component : public json_interface { */ component& add_component(const component& c); + /** + * @brief Add a default value. + * + * @param id Default value. ID of a user, role, or channel + * @param type The type this default value represents + */ + component& add_default_value(const snowflake id, const component_default_value_type type); + /** * @brief Set the emoji of the current sub-component. * Only valid for buttons. Adding an emoji to a component diff --git a/src/dpp/message.cpp b/src/dpp/message.cpp index 04f8e30675..810b76f2a2 100644 --- a/src/dpp/message.cpp +++ b/src/dpp/message.cpp @@ -58,6 +58,14 @@ component& component::fill_from_json_impl(nlohmann::json* j) { if (j->contains("max_values") && j->at("max_values").is_number_integer()) { max_values = j->at("max_values").get(); } + if (j->contains("default_values") && !j->at("default_values").is_null()) { + for (auto const &v : j->at("default_values")) { + component_default_value d; + d.id = snowflake_not_null(&v, "id"); + d.type = static_cast(int8_not_null(&v, "type")); + default_values.push_back(d); + } + } if (type == cot_action_row) { set_object_array_not_null(j, "components", components); } else if (type == cot_button) { // button specific fields @@ -338,6 +346,21 @@ void to_json(json& j, const component& cp) { if (cp.max_values >= 0) { j["max_values"] = cp.max_values; } + if (!cp.default_values.empty()) { + j["default_values"] = json::array(); + for (auto const &v : cp.default_values) { + json o; + o["id"] = v.id; + if (v.type == dpp::cdt_role) { + o["type"] = "role"; + } else if (v.type == dpp::cdt_channel) { + o["type"] = "channel"; + } else if (v.type == dpp::cdt_user) { + o["type"] = "user"; + } + j["default_values"].push_back(o); + } + } } else if (cp.type == cot_channel_selectmenu) { j["custom_id"] = cp.custom_id; j["disabled"] = cp.disabled; @@ -356,6 +379,21 @@ void to_json(json& j, const component& cp) { j["channel_types"].push_back(type); } } + if (!cp.default_values.empty()) { + j["default_values"] = json::array(); + for (auto const &v : cp.default_values) { + json o; + o["id"] = v.id; + if (v.type == dpp::cdt_role) { + o["type"] = "role"; + } else if (v.type == dpp::cdt_channel) { + o["type"] = "channel"; + } else if (v.type == dpp::cdt_user) { + o["type"] = "user"; + } + j["default_values"].push_back(o); + } + } } } @@ -439,6 +477,14 @@ component& component::add_select_option(const select_option &option) { return *this; } +component &component::add_default_value(const snowflake id, const component_default_value_type type) { + component_default_value default_value; + default_value.id = id; + default_value.type = type; + this->default_values.push_back(default_value); + return *this; +} + embed::~embed() = default; embed::embed() : timestamp(0), color(0) { From 3def1a8fdf5820235a15a074f84ce90e273c3e81 Mon Sep 17 00:00:00 2001 From: Archie Jaskowicz Date: Mon, 16 Oct 2023 20:20:16 +0100 Subject: [PATCH 3/4] docs: added a page for default select menu values. Added a section in components3 for role select menus (#947) Co-authored-by: Craig Edwards (Brain) --- .../example_code/components3_rolemenu.cpp | 46 +++++++++++++++++ .../example_code/default_select_value.cpp | 47 ++++++++++++++++++ .../components-menu.md | 7 +-- .../components/components3.md | 12 ++++- .../components/default_select_value.md | 13 +++++ docpages/images/default_select_value.png | Bin 0 -> 13050 bytes docpages/images/default_select_value_2.png | Bin 0 -> 22307 bytes 7 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 docpages/example_code/components3_rolemenu.cpp create mode 100644 docpages/example_code/default_select_value.cpp create mode 100644 docpages/example_programs/interactions_and_components/components/default_select_value.md create mode 100644 docpages/images/default_select_value.png create mode 100644 docpages/images/default_select_value_2.png diff --git a/docpages/example_code/components3_rolemenu.cpp b/docpages/example_code/components3_rolemenu.cpp new file mode 100644 index 0000000000..ed4f2b9b25 --- /dev/null +++ b/docpages/example_code/components3_rolemenu.cpp @@ -0,0 +1,46 @@ +#include + +int main() { + dpp::cluster bot("token"); + + bot.on_log(dpp::utility::cout_logger()); + + /* The event is fired when someone issues your commands */ + bot.on_slashcommand([&bot](const dpp::slashcommand_t& event) { + /* Check which command they ran */ + if (event.command.get_command_name() == "select") { + /* Create a message */ + dpp::message msg(event.command.channel_id, "This text has a select menu!"); + + /* Add an action row, and a select menu within the action row. + * + * By default, max values is 1, meaning people can only pick 1 option. + * We're changing this to two, so people can select multiple options! + * We'll also set the min_values to 2 so people have to pick another value! + */ + msg.add_component( + dpp::component().add_component( + dpp::component() + .set_type(dpp::cot_role_selectmenu) + .set_min_values(2) + .set_max_values(2) + .set_id("myselectid") + ) + ); + + /* Reply to the user with our message. */ + event.reply(msg); + } + }); + + bot.on_ready([&bot](const dpp::ready_t& event) { + if (dpp::run_once()) { + /* Create and register a command when the bot is ready */ + bot.global_command_create(dpp::slashcommand("select", "Select something at random!", bot.me.id)); + } + }); + + bot.start(dpp::st_wait); + + return 0; +} diff --git a/docpages/example_code/default_select_value.cpp b/docpages/example_code/default_select_value.cpp new file mode 100644 index 0000000000..ace6b0cf5b --- /dev/null +++ b/docpages/example_code/default_select_value.cpp @@ -0,0 +1,47 @@ +#include +#include + +int main() { + dpp::cluster bot("token"); + + bot.on_log(dpp::utility::cout_logger()); + + /* The event is fired when someone issues your commands */ + bot.on_slashcommand([&bot](const dpp::slashcommand_t& event) { + /* Check which command they ran */ + if (event.command.get_command_name() == "select") { + /* Create a message */ + dpp::message msg(event.command.channel_id, "This text has a select menu!"); + + /* Add an action row, and a select menu within the action row. + * + * Your default values are limited to max_values, + * meaning you can't add more default values than the allowed max values. + */ + msg.add_component( + dpp::component().add_component( + dpp::component() + .set_type(dpp::cot_role_selectmenu) + .set_min_values(2) + .set_max_values(2) + .add_default_value(dpp::snowflake{667756886443163648}, dpp::cdt_role) + .set_id("myselectid") + ) + ); + + /* Reply to the user with our message. */ + event.reply(msg); + } + }); + + bot.on_ready([&bot](const dpp::ready_t& event) { + if (dpp::run_once()) { + /* Create and register a command when the bot is ready */ + bot.global_command_create(dpp::slashcommand("select", "Select something at random!", bot.me.id)); + } + }); + + bot.start(dpp::st_wait); + + return 0; +} \ No newline at end of file diff --git a/docpages/example_programs/interactions_and_components/components-menu.md b/docpages/example_programs/interactions_and_components/components-menu.md index f7fed09ecc..2c58e530c8 100644 --- a/docpages/example_programs/interactions_and_components/components-menu.md +++ b/docpages/example_programs/interactions_and_components/components-menu.md @@ -2,6 +2,7 @@ Components are anything that can be attached to a message or a \ref modal-dialog-interactions "modal" and interacted with, for example buttons and select menus. Due to being \ref interactions-and-components "interactions", they benefit from a low rate limit and are much more efficient than the old ways of using reactions for this purpose. -* \subpage components "Button components" -* \subpage components2 "Advanced button components" -* \subpage components3 "Select menu components" +* \subpage components +* \subpage components2 +* \subpage components3 +* \subpage default_select_value diff --git a/docpages/example_programs/interactions_and_components/components/components3.md b/docpages/example_programs/interactions_and_components/components/components3.md index e3ac023c23..cc4412141e 100644 --- a/docpages/example_programs/interactions_and_components/components/components3.md +++ b/docpages/example_programs/interactions_and_components/components/components3.md @@ -1,5 +1,15 @@ \page components3 Using select menu components -This example demonstrates creating a select menu, receiving select menu clicks and sending a response message. +This tutorial will cover creating two types of select menus: +- A generic select menu with just text +- An auto-populated role select menu. + +This first example demonstrates creating a select menu, receiving select menu clicks, and sending a response message. \include{cpp} components3.cpp + +This second example demonstrates creating a role select menu that is auto-populated by discord, and allowing people to select two options! + +\note This type of select menu, along with other types (these types being: user, role, mentionable, and channel), always auto-fill. You never need to define the data in these types of select menus. All select menu types allow you to select multiple options. + +\include{cpp} components3_rolemenu.cpp diff --git a/docpages/example_programs/interactions_and_components/components/default_select_value.md b/docpages/example_programs/interactions_and_components/components/default_select_value.md new file mode 100644 index 0000000000..7c39979fcc --- /dev/null +++ b/docpages/example_programs/interactions_and_components/components/default_select_value.md @@ -0,0 +1,13 @@ +\page default_select_value Setting default values on select menus. + +This tutorial will cover how to set the default value for a select menu (that isn't a text select menu)! + +\note **This only works for the following types of select menus: user, role, mentionable, and channel.** The default type of a select menu (as shown in \ref components3 "this page") does not work for this, as that supports a "placeholder". + +\include{cpp} default_select_value.cpp + +If all went well, you should have something like this! + +\image html default_select_value.png + +\image html default_select_value_2.png diff --git a/docpages/images/default_select_value.png b/docpages/images/default_select_value.png new file mode 100644 index 0000000000000000000000000000000000000000..09dbef3e1444d2c2c9e40d9b2dbc42703373d190 GIT binary patch literal 13050 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 literal 0 HcmV?d00001 From 6f45becd31df5ac12f7c1ccddeb3f6d15e1f12ac Mon Sep 17 00:00:00 2001 From: "Craig Edwards (Brain)" Date: Mon, 16 Oct 2023 22:20:15 +0100 Subject: [PATCH 4/4] fix: make modals work again by making to_json_impl and fill_from_json virtual (#950) --- include/dpp/appcommand.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/dpp/appcommand.h b/include/dpp/appcommand.h index 068a58f740..96f7b2cd66 100644 --- a/include/dpp/appcommand.h +++ b/include/dpp/appcommand.h @@ -326,14 +326,14 @@ struct DPP_EXPORT interaction_response : public json_interface