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::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);
}
}
}
});
if (dpp::run_once<struct register_bot_commands>()) {
bot.global_command_create(newcommand);
}
});
return 0;
}
The cluster class represents a group of shards and a command queue for sending and receiving commands...
Definition: cluster.h:271
uint8_t type
the type of interaction
Definition: appcommand.h:639
Represents an application command, created by your bot either globally, or on a guild.
Definition: appcommand.h:826
std::function< void(const dpp::log_t &)> DPP_EXPORT cout_logger()
Get a default logger that outputs to std::cout. e.g.
@ it_application_command
application command (slash command)
Definition: appcommand.h:533
@ co_attachment
Definition: appcommand.h:70
@ st_wait
Wait forever on a condition variable. The cluster will spawn threads for each shard and start() will ...
Definition: cluster.h:254
Each command option is a command line parameter. It can have a type (see dpp::command_option_type),...
Definition: appcommand.h:150
interaction command
command interaction
Definition: dispatcher.h:488
Session ready.
Definition: dispatcher.h:783
User has issued a slash command.
Definition: dispatcher.h:499