D++ (DPP)  10.0.30
C++ Discord API Bot Library
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Context Menus

Context menus are application commands that appear on the context menu (right click or tap) of users or messages to perform context-specific actions. They can be created using dpp::slashcommand. Once you create a context menu, try right-clicking either a user or message to see it in your server!

Note
This example sets the command as the type dpp::ctxm_user which can only be used by right clicking on a user. To make it appear on a message, you'll want to switch the type to dpp::ctxm_message and listen for the on_message_context_menu (dpp::message_context_menu_t) event.

The following example shows how to create and handle user context menus for message context menus, read the notice above.

#include <dpp/dpp.h>
#include <iostream>
int main()
{
dpp::cluster bot("token");
/* Use the on_user_context_menu event to look for user context menu actions */
bot.on_user_context_menu([](const dpp::user_context_menu_t& event) {
/* check if the context menu name is High Five */
if (event.command.get_command_name() == "high five") {
dpp::user user = event.get_user(); // the user who the command has been issued on
dpp::user author = event.command.get_issuing_user(); // the user who clicked on the context menu
event.reply(author.get_mention() + " slapped " + user.get_mention());
}
});
bot.on_ready([&bot](const dpp::ready_t &event) {
if (dpp::run_once<struct register_bot_commands>()) {
/* Create the command */
command.set_name("High Five")
.set_application_id(bot.me.id)
/* Register the command */
bot.guild_command_create(command, 857692897221033129); /* Replace this with the guild id you want */
}
});
/* Start bot */
bot.start(dpp::st_wait);
return 0;
}

It registers a guild command that can be called by right-clicking a user and clicking on the created menu.

dpp::user_context_menu_t
Event parameter for context menu interactions for users.
Definition: dispatcher.h:832
dpp.h
dpp::st_wait
@ st_wait
Wait forever on a condition variable.
Definition: cluster.h:101
main
int main()
Definition: soak.cpp:28
dpp::ctxm_user
@ ctxm_user
A slashcommand that goes in the user context menu.
Definition: appcommand.h:809
dpp::interaction_create_t::command
interaction command
command interaction
Definition: dispatcher.h:698
dpp::utility::cout_logger
std::function< void(const dpp::log_t &)> DPP_EXPORT cout_logger()
Get a default logger that outputs to std::cout.
Definition: dispatcher.h:228
dpp::slashcommand
Represents an application command, created by your bot either globally, or on a guild.
Definition: appcommand.h:1358
dpp::slashcommand::set_name
slashcommand & set_name(const std::string &n)
Set the name of the command.
Definition: slashcommand.cpp:297
dpp::interaction::get_command_name
std::string get_command_name() const
Get the command name for a command interaction.
Definition: slashcommand.cpp:487
dpp::slashcommand::set_type
slashcommand & set_type(slashcommand_contextmenu_type _type)
Set the type of the slash command (only for context menu entries)
Definition: slashcommand.cpp:289
dpp::cluster
The cluster class represents a group of shards and a command queue for sending and receiving commands...
Definition: cluster.h:99
dpp::ready_t
Session ready.
Definition: dispatcher.h:981