D++ (DPP)
C++ Discord API Bot Library
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
Using file parameters for application commands (slash commands)

The program below demonstrates how to use the 'file' type parameter to an application command (slash command). You must first get the file_id via std::get, and then you can find the attachment details in the 'resolved' section, event.command.resolved.

The file is uploaded to Discord's CDN so if you need it locally you should fetch the .url value, e.g. by using something like dpp::cluster::request().

#include <dpp/dpp.h>
int main()
{
dpp::cluster bot("token");
bot.on_log(dpp::utility::cout_logger());
bot.on_slashcommand([&bot](const dpp::slashcommand_t & event) {
if (event.command.type == dpp::it_application_command) {
dpp::command_interaction cmd_data = std::get<dpp::command_interaction>(event.command.data);
if (cmd_data.name == "show") {
dpp::snowflake file_id = std::get<dpp::snowflake>(event.get_parameter("file"));
auto iter = event.command.resolved.attachments.find(file_id);
if (iter != event.command.resolved.attachments.end()) {
const dpp::attachment& att = iter->second;
event.reply(att.url);
}
}
}
});
bot.on_ready([&bot](const dpp::ready_t & event) {
if (dpp::run_once<struct register_bot_commands>()) {
dpp::slashcommand newcommand("show", "Show an uploaded file", bot.me.id);
newcommand.add_option(dpp::command_option(dpp::co_attachment, "file", "Select an image"));
bot.global_command_create(newcommand);
}
});
bot.start(dpp::st_wait);
return 0;
}
dpp::co_attachment
@ co_attachment
Definition: appcommand.h:90
dpp::interaction::type
uint8_t type
the type of interaction (dpp::interaction_type)
Definition: appcommand.h:705
dpp::slashcommand_t
User has issued a slash command.
Definition: dispatcher.h:521
dpp::st_wait
@ st_wait
Wait forever on a condition variable. The cluster will spawn threads for each shard and start() will ...
Definition: cluster.h:86
dpp::interaction_create_t::command
interaction command
command interaction
Definition: dispatcher.h:499
dpp::slashcommand
Represents an application command, created by your bot either globally, or on a guild.
Definition: appcommand.h:1004
dpp::utility::cout_logger
std::function< void(const dpp::log_t &)> DPP_EXPORT cout_logger()
Get a default logger that outputs to std::cout. e.g.
Definition: dispatcher.h:150
dpp::command_option
Each command option is a command line parameter. It can have a type (see dpp::command_option_type),...
Definition: appcommand.h:174
dpp::cluster
The cluster class represents a group of shards and a command queue for sending and receiving commands...
Definition: cluster.h:103
dpp::it_application_command
@ it_application_command
application command (slash command)
Definition: appcommand.h:575
dpp::ready_t
Session ready.
Definition: dispatcher.h:791
D++ 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