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);
}
}
}
});
.set_description("Show an uploaded file")
.set_application_id(bot.me.id)
bot.global_command_create(newcommand);
});
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:392
uint8_t type
the type of interaction
Definition: appcommand.h:589
Represents an application command, created by your bot either globally, or on a guild.
Definition: appcommand.h:762
slashcommand & add_option(const command_option &o)
Add an option (parameter)
slashcommand & set_name(const std::string &n)
Set the name of the command.
@ it_application_command
application command (slash command)
Definition: appcommand.h:485
@ co_attachment
Definition: appcommand.h:69
Each command option is a command line parameter. It can have a type (see dpp::command_option_type),...
Definition: appcommand.h:137
Create interaction.
Definition: dispatcher.h:283
interaction command
command interaction
Definition: dispatcher.h:395
Session ready.
Definition: dispatcher.h:601