D++ (DPP)
C++ Discord API Bot Library
Using sub-commands in slash commands

This is how to use Subcommands within your Slash Commands for your bots.

To make a subcomamnd within your command use this

#include <dpp/dpp.h>
#include <dpp/fmt/format.h>
#include <iostream>
int main() {
/* Setup the bot */
dpp::cluster bot("token");
/* Executes on ready. */
bot.on_ready([&bot](const dpp::ready_t & event) {
// Define a slash command.
image.set_name("image");
image.set_description("Send a specific image.");
image.add_option(
// Create a subcommand type option.
dpp::command_option(dpp::co_sub_command, "dog", "Send a picture of a dog.").
add_option(dpp::command_option(dpp::co_user, "user", "User to make a dog off.", false))
);
image.add_option(
// Create another subcommand type option.
dpp::command_option(dpp::co_sub_command, "cat", "Send a picture of a cat.").
add_option(dpp::command_option(dpp::co_user, "user", "User to make a cat off.", false))
);
// Create command with a callback.
bot.global_command_create(image, [ & ]( const dpp::confirmation_callback_t &callback ) {
if(callback.is_error()) {
std::cout << callback.http_info.body << "\n" ;
}
});
});
/* Use the on_interaction_create event to look for commands */
bot.on_interaction_create([&bot](const dpp::interaction_create_t & event) {
dpp::command_interaction cmd_data = std::get<dpp::command_interaction>(event.command.data);
/* Check if the command is the image command. */
if(cmd_data.name == "image") {
/* Check if the subcommand is "dog" */
if(cmd_data.options[0].name == "dog") {
/* Checks if the subcommand has any options. */
if(cmd_data.options[0].options.size() > 0) {
/* Get the user option as a snowflake. */
dpp::snowflake user = std::get<dpp::snowflake>(cmd_data.options[0].options[0].value);
event.reply(dpp::ir_channel_message_with_source, fmt::format("<@{}> has now been turned into a dog.", user));
} else {
/* Reply if there were no options.. */
event.reply(dpp::ir_channel_message_with_source, "<A picture of a dog.>");
}
}
/* Check if the subcommand is "cat" */
if(cmd_data.options[0].name == "cat") {
/* Checks if the subcommand has any options. */
if(cmd_data.options[0].options.size() > 0) {
/* Get the user option as a snowflake. */
dpp::snowflake user = std::get<dpp::snowflake>(cmd_data.options[0].options[0].value);
event.reply(dpp::ir_channel_message_with_source, fmt::format("<@{}> has now been turned into a cat.", user));
} else {
/* Reply if there were no options.. */
event.reply(dpp::ir_channel_message_with_source, "<A picture of a cat.>");
}
}
}
}
});
bot.start(false);
return 0;
}
The cluster class represents a group of shards and a command queue for sending and receiving commands...
Definition: cluster.h:233
uint8_t type
the type of interaction
Definition: slashcommand.h:426
Represents an application command, created by your bot either globally, or on a guild.
Definition: slashcommand.h:525
slashcommand & add_option(const command_option &o)
Add an option (parameter)
slashcommand & set_description(const std::string &d)
Set the description of the command.
slashcommand & set_name(const std::string &n)
Set the name of the command.
@ it_application_command
application command (slash command)
Definition: slashcommand.h:353
@ co_sub_command
Definition: slashcommand.h:44
@ co_user
Definition: slashcommand.h:54
Each command option is a command line parameter. It can have a type (see dpp::command_option_type),...
Definition: slashcommand.h:122
The results of a REST call wrapped in a convenient struct.
Definition: cluster.h:173
bool is_error() const
Returns true if the call resulted in an error rather than a legitimate value in the confirmation_call...
Create interaction.
Definition: dispatcher.h:173
interaction command
command interaction
Definition: dispatcher.h:255
Session ready.
Definition: dispatcher.h:432
D++ 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