D++ (DPP)
C++ Discord API Bot Library
dpp Namespace Reference

The main namespace for D++ functions. classes and types. More...

Namespaces

namespace  events
 The events namespace holds the internal event handlers for each websocket event. These are handled internally and also dispatched to the user code if the event is hooked.
 
namespace  utility
 Utility helper functions, generally for logging.
 

Classes

class  activity
 An activity is a representation of what a user is doing. It might be a game, or a website, or a movie. Whatever. More...
 
class  app_team
 Represents a team of users who maintain a bot/application. More...
 
class  application
 The application class represents details of a bot application. More...
 
struct  application_command_create_t
 Create application slash command. More...
 
struct  application_command_delete_t
 Application slash command deleted. More...
 
struct  application_command_update_t
 Update application slash command. More...
 
struct  attachment
 Represents an attachment in a dpp::message. More...
 
struct  audit_change
 Defines audit log changes. More...
 
struct  audit_entry
 An individual audit log entry. More...
 
struct  audit_extra
 Extra information for an audit log entry. More...
 
class  auditlog
 The auditlog class represents the audit log entry of a guild. More...
 
struct  autocomplete_interaction
 An auto complete interaction. More...
 
struct  autocomplete_t
 Discord requests that we fill a list of auto completion choices for a command option. More...
 
class  ban
 The ban class represents a ban on a guild. More...
 
struct  bucket_t
 A rate limit bucket. The library builds one of these for each endpoint. More...
 
struct  button_click_t
 Click on button. More...
 
class  cache
 A cache object maintains a cache of dpp::managed objects. More...
 
class  cache_exception
 Represents invalid access to dpp's cache or its members, which may or may not exist. More...
 
struct  cache_policy_t
 Represents the caching policy of the cluster. More...
 
class  channel
 A definition of a discord channel There are one of these for every channel type except threads. Threads are special snowflakes. Get it? A Discord pun. Hahaha. .... I'll get my coat. More...
 
class  channel_collector
 Channel collector. Collects channels during a set timeframe and returns them in a list via the completed() method. More...
 
struct  channel_create_t
 Create channel. More...
 
struct  channel_delete_t
 Delete channel. More...
 
struct  channel_pins_update_t
 Channel pins update. More...
 
struct  channel_update_t
 Update channel. More...
 
class  cluster
 The cluster class represents a group of shards and a command queue for sending and receiving commands from discord via HTTP. You should usually instantiate a cluster object at the very least to make use of the library. More...
 
class  collected_reaction
 Represents a reaction. Can be filled for use in a collector. More...
 
class  collector
 Collects objects from events during a specified time period. More...
 
struct  command_data_option
 Values in the command interaction. These are the values specified by the user when actually issuing the command on a channel or in DM. More...
 
struct  command_info_t
 Represents the details of a command added to the command handler class. More...
 
struct  command_interaction
 Details of a command within an interaction. This subobject represents the application command associated with the interaction. More...
 
struct  command_option
 Each command option is a command line parameter. It can have a type (see dpp::command_option_type), a name, a description, can be required or optional, and can have zero or more choices (for multiple choice), plus options. Adding options acts like sub-commands and can contain more options. More...
 
struct  command_option_choice
 This struct represents choices in a multiple choice option for a command parameter. It has both a string name, and a value parameter which is a variant, meaning it can hold different potential types (see dpp::command_value) that you can retrieve with std::get(). More...
 
class  command_permission
 Application command permissions allow you to enable or disable commands for specific users or roles within a guild. More...
 
struct  command_resolved
 Resolved snowflake ids to users, guild members, roles and channels. More...
 
struct  command_source
 Represents the sending source of a command. This is passed to any command handler and should be passed back to commandhandler::reply(), allowing the reply method to route any replies back to the origin, which may be a slash command or a message. Both require different response facilities but we want this to be transparent if you use the command handler class. More...
 
class  commandhandler
 The commandhandler class represents a group of commands, prefixed or slash commands with handling functions. More...
 
class  component
 Represents the component object. A component is a clickable button or drop down list within a discord message, where the buttons emit on_button_click events when the user interacts with them. More...
 
struct  component_interaction
 A button click for a button component. More...
 
struct  confirmation
 Confirmation object represents any true or false simple REST request. More...
 
struct  confirmation_callback_t
 The results of a REST call wrapped in a convenient struct. More...
 
class  connection
 The connection object that the user has attached. More...
 
class  connection_exception
 Represents an error establishing or maintaining a connection. More...
 
class  discord_client
 Implements a discord client. Each discord_client connects to one shard and derives from a websocket client. More...
 
class  discord_voice_client
 Implements a discord voice connection. Each discord_voice_client connects to one voice channel and derives from a websocket client. More...
 
class  dtemplate
 Represents a guild template. More...
 
struct  embed
 A rich embed for display within a dpp::message. More...
 
struct  embed_author
 Author within a dpp::embed object. More...
 
struct  embed_field
 A dpp::embed may contain zero or more fields. More...
 
struct  embed_footer
 A footer in a dpp::embed. More...
 
struct  embed_image
 An video, image or thumbnail in a dpp::embed. More...
 
struct  embed_provider
 Embed provider in a dpp::embed. Received from discord but cannot be sent. More...
 
class  emoji
 Represents an emoji for a dpp::guild. More...
 
struct  error_detail
 The details of a field in an error response. More...
 
struct  error_info
 The full details of an error from a REST response. More...
 
struct  etf_buffer
 Represents a buffer of bytes being encoded into ETF. More...
 
class  etf_parser
 The etf_parser class can serialise and deserialise ETF (Erlang Term Format) into and out of an nlohmann::json object, so that layers above the websocket don't have to be any different for handling ETF. More...
 
struct  event_dispatch_t
 Base event parameter struct. Each event you receive from the library will have its parameter derived from this class. The class contains the raw event data, and a pointer to the current shard's dpp::discord_client object. You can also use this object to cancel the current event, meaning that any listeners after yours do not get notified of the current event if you call it. More...
 
struct  event_entities
 Entities for the event. More...
 
struct  event_member
 Represents a guild member/user who has registered interest in an event. More...
 
class  event_router_t
 Handles routing of an event to multiple listeners. More...
 
class  exception
 The dpp::exception class derives from std::exception and supports some other ways of passing in error details such as via std::string. More...
 
class  file_exception
 Represents an error reading or writing to a file. More...
 
struct  form_submit_t
 
struct  gateway
 Represents the various information from the 'get gateway bot' api call. More...
 
class  guild
 Represents a guild on Discord (AKA a server) More...
 
struct  guild_ban_add_t
 Guild ban add. More...
 
struct  guild_ban_remove_t
 Guild ban remove. More...
 
class  guild_command_permissions
 Returned when fetching the permissions for a command in a guild. More...
 
struct  guild_create_t
 Create guild. More...
 
struct  guild_delete_t
 Delete guild. More...
 
struct  guild_emojis_update_t
 Guild emojis update. More...
 
struct  guild_integrations_update_t
 Guild integrations update. More...
 
struct  guild_join_request_delete_t
 Guild join request delete (user declined membership screening) More...
 
class  guild_member
 Represents dpp::user membership upon a dpp::guild. This contains the user's nickname, guild roles, and any other guild-specific flags. More...
 
struct  guild_member_add_t
 Guild member add. More...
 
struct  guild_member_remove_t
 Guild member remove. More...
 
struct  guild_member_update_t
 Guild member update. More...
 
struct  guild_members_chunk_t
 Guild members chunk. More...
 
struct  guild_role_create_t
 Guild role create. More...
 
struct  guild_role_delete_t
 Guild role delete. More...
 
struct  guild_role_update_t
 Guild role update. More...
 
struct  guild_scheduled_event_create_t
 Create scheduled event. More...
 
struct  guild_scheduled_event_delete_t
 Delete scheduled event. More...
 
struct  guild_scheduled_event_update_t
 Create scheduled event. More...
 
struct  guild_scheduled_event_user_add_t
 Add user to scheduled event. More...
 
struct  guild_scheduled_event_user_remove_t
 Delete user from scheduled event. More...
 
struct  guild_stickers_update_t
 Update guild stickers. More...
 
struct  guild_update_t
 Guild update. More...
 
class  guild_widget
 Represents a guild widget, simple web widget of member list. More...
 
class  http_request
 A HTTP request. More...
 
struct  http_request_completion_t
 The result of any HTTP request. Contains the headers, vital rate limit figures, and returned request body. More...
 
class  integration
 Represents an integration on a guild, e.g. a connection to twitch. More...
 
struct  integration_app
 An application that has been integrated. More...
 
struct  integration_create_t
 Integration create. More...
 
struct  integration_delete_t
 Integration delete. More...
 
struct  integration_update_t
 Integration update. More...
 
class  interaction
 An interaction represents a user running a command and arrives via the dpp::cluster::on_interaction_create event. More...
 
struct  interaction_create_t
 Create interaction. More...
 
struct  interaction_modal_response
 Represents a modal dialog box response to an interaction. More...
 
struct  interaction_response
 A response to an interaction, used to reply to a command and initiate a message, which can be hidden from others (ephemeral) or visible to all. More...
 
class  invite
 Represents an invite to a discord guild or channel. More...
 
struct  invite_create_t
 Invite create. More...
 
struct  invite_delete_t
 Invite delete. More...
 
class  length_exception
 Represents invalid length of argument being passed to a function. More...
 
struct  log_t
 Log messages. More...
 
class  logic_exception
 Represents an error in logic, e.g. you asked the library to do something the Discord API does not support. More...
 
class  managed
 The managed class is the base class for various types that can be stored in a cache that are identified by a dpp::snowflake id. More...
 
struct  message
 Represents messages sent and received on Discord. More...
 
class  message_collector
 Message collector. Collects messages during a set timeframe and returns them in a list via the completed() method. More...
 
struct  message_create_t
 Create message. More...
 
struct  message_delete_bulk_t
 Message delete bulk. More...
 
struct  message_delete_t
 Message Deleted. More...
 
struct  message_reaction_add_t
 Message reaction add. More...
 
struct  message_reaction_remove_all_t
 Message remove all reactions. More...
 
struct  message_reaction_remove_emoji_t
 Message remove emoji. More...
 
struct  message_reaction_remove_t
 Message reaction remove. More...
 
struct  message_update_t
 Message update. More...
 
class  oneshot_timer
 Trigger a timed event once. The provided callback is called only once. More...
 
struct  param_info
 Details of a command parameter used in registration. Note that for non-slash commands optional parameters can only be at the end of the list of parameters. More...
 
class  parse_exception
 Represents inability to parse data, usually caused by malformed JSON or ETF. More...
 
struct  permission_overwrite
 channel permission overwrites More...
 
class  presence
 Represents user presence, e.g. what game they are playing and if they are online. More...
 
struct  presence_update_t
 Presence update. More...
 
struct  prune
 Defines a request to count prunable users, or start a prune operation. More...
 
struct  reaction
 Represets a reaction to a dpp::message. More...
 
class  reaction_collector
 Reaction collector. Collects message reactions during a set timeframe and returns them in a list via the completed() method. More...
 
struct  ready_t
 Session ready. More...
 
class  request_queue
 The request_queue class manages rate limits and marshalls HTTP requests that have been built as http_request objects. More...
 
struct  resolved_user
 dpp::resolved_user contains both a dpp::guild_member and a dpp::user. The user can be used to obtain in-depth user details such as if they are nitro, and the guild member information to check their roles on a guild etc. The Discord API provides both if a parameter is a user ping, so we offer both in a combined structure. More...
 
class  rest_exception
 Represents an error on a REST API call, e.g. a HTTPS request. More...
 
struct  resumed_t
 Session resumed. More...
 
class  role
 Represents a role within a dpp::guild. Roles are combined via logical OR of the permission bitmasks, then channel-specific overrides can be applied on top, deny types apply a logic NOT to the bit mask, and allows apply a logical OR. More...
 
class  role_collector
 Role collector. Collects guild roles during a set timeframe and returns them in a list via the completed() method. More...
 
struct  scheduled_event
 A scheduled event. More...
 
class  scheduled_event_collector
 Scheduled event collector. Collects messages during a set timeframe and returns them in a list via the completed() method. More...
 
struct  select_click_t
 Click on select. More...
 
struct  select_option
 An option for a select component. More...
 
class  slashcommand
 Represents an application command, created by your bot either globally, or on a guild. More...
 
class  ssl_client
 Implements a simple non-blocking SSL stream client. More...
 
struct  stage_instance
 A stage instance. Stage instances are like a conference facility, with moderators/speakers and listeners. More...
 
struct  stage_instance_create_t
 Create stage instance. More...
 
struct  stage_instance_delete_t
 Delete stage instance. More...
 
struct  stage_instance_update_t
 Update stage instance. More...
 
struct  sticker
 Represents stickers received in messages. More...
 
struct  sticker_pack
 Represents a sticker pack (the built in groups of stickers that all nitro users get to use) More...
 
class  team_member
 Represents a team member on a team who maintain a bot/application. More...
 
class  thread
 A definition of a discord thread. A thread is a superset of a channel. Not to be confused with std::thread! More...
 
class  thread_collector
 Thread collector. Collects threads during a set timeframe and returns them in a list via the completed() method. More...
 
struct  thread_create_t
 Thread Create. More...
 
struct  thread_delete_t
 Thread Delete. More...
 
struct  thread_list_sync_t
 Thread List Sync. More...
 
struct  thread_member
 represents membership of a user with a thread More...
 
struct  thread_member_update_t
 Thread Member Update. More...
 
struct  thread_members_update_t
 Thread Members Update. More...
 
struct  thread_metadata
 metadata for threads More...
 
struct  thread_update_t
 Thread Update. More...
 
class  timed_listener
 A timed_listener is a way to temporarily attach to an event for a specific timeframe, then detach when complete. A lambda may also be optionally called when the timeout is reached. Destructing the timed_listener detaches any attached event listeners, and cancels any created timers, but does not call any timeout lambda. More...
 
struct  timer_t
 Used internally to store state of active timers. More...
 
union  type_punner
 A horrible structure used within the ETF parser to convert uint64_t to double and back. This is horrible, but it is the official way erlang term format does this, so we can't really mess with it much. More...
 
struct  typing_start_t
 Typing start. More...
 
class  user
 Represents a user on discord. May or may not be a member of a dpp::guild. More...
 
class  user_identified
 A user with additional fields only available via the oauth2 identify scope. These are not included in dpp::user as additional scopes are needed to fetch them which bots do not normally have. More...
 
struct  user_update_t
 User update. More...
 
struct  voice_buffer_send_t
 voice buffer send More...
 
struct  voice_client_disconnect_t
 voice client disconnect event More...
 
struct  voice_client_speaking_t
 voice client speaking event More...
 
class  voice_exception
 Represents an error with voice processing. More...
 
struct  voice_out_packet
 An opus-encoded RTP packet to be sent out to a voice channel. More...
 
struct  voice_ready_t
 voice user talking More...
 
struct  voice_receive_t
 voice receive packet More...
 
struct  voice_server_update_t
 Voice server update. More...
 
struct  voice_state_update_t
 Voice state update. More...
 
struct  voice_track_marker_t
 Voice state update. More...
 
struct  voice_user_talking_t
 voice user talking More...
 
class  voiceconn
 Represents a connection to a voice channel. A client can only connect to one voice channel per guild at a time, so these are stored in a map in the dpp::discord_client keyed by guild_id. More...
 
class  voiceregion
 Represents a voice region on discord. More...
 
class  voicestate
 Represents the voice state of a user on a guild These are stored in the dpp::guild object, and accessible there, or via dpp::channel::get_voice_members. More...
 
class  webhook
 Represents a discord webhook. More...
 
struct  webhooks_update_t
 Webhooks update. More...
 
class  websocket_client
 Implements a websocket client based on the SSL client. More...
 
struct  welcome_channel_t
 Defines a channel on a server's welcome screen. More...
 
struct  welcome_screen_t
 Defines a server's welcome screen. More...
 

Typedefs

typedef std::variant< std::monostate, std::string, int64_t, bool, snowflake, double > command_value
 This type is a variant that can hold any of the potential native data types represented by the enum above. It is used in interactions. More...
 
typedef std::variant< std::monostate, int64_t, double > command_option_range
 A minimum or maximum value for co_number and co_integer dpp::command_option types. More...
 
typedef std::unordered_map< snowflake, slashcommandslashcommand_map
 A group of application slash commands. More...
 
typedef std::unordered_map< snowflake, applicationapplication_map
 
typedef std::unordered_map< snowflake, banban_map
 
typedef std::unordered_map< snowflake, thread_memberthread_member_map
 A group of thread member objects. More...
 
typedef std::unordered_map< snowflake, channelchannel_map
 A group of channels. More...
 
typedef std::unordered_map< snowflake, threadthread_map
 A group of threads. More...
 
typedef std::map< uint32_t, class discord_client * > shard_list
 A list of shards. More...
 
typedef std::variant< confirmation, message, message_map, user, user_identified, user_map, guild_member, guild_member_map, channel, channel_map, thread_member, thread_member_map, guild, guild_map, role, role_map, invite, invite_map, dtemplate, dtemplate_map, emoji, emoji_map, ban, ban_map, voiceregion, voiceregion_map, integration, integration_map, webhook, webhook_map, prune, guild_widget, gateway, interaction, interaction_response, auditlog, slashcommand, slashcommand_map, stage_instance, sticker, sticker_map, sticker_pack, sticker_pack_map, application, application_map, connection, connection_map, thread, thread_map, scheduled_event, scheduled_event_map, event_member, event_member_mapconfirmable_t
 A container for types that can be returned for a REST API call. More...
 
typedef std::function< void(const confirmation_callback_t &)> command_completion_event_t
 A callback upon command completion. More...
 
typedef std::function< void(json &, const http_request_completion_t &)> json_encode_t
 Automatically JSON encoded HTTP result. More...
 
typedef std::variant< std::monostate, std::string, dpp::role, dpp::channel, dpp::resolved_user, int64_t, bool, double > command_parameter
 Represents a received parameter. We use variant so that multiple non-related types can be contained within. More...
 
typedef std::vector< std::pair< std::string, param_info > > parameter_registration_t
 Parameter list used during registration. Note that use of vector/pair is important here to preserve parameter order, as opposed to unordered_map (which doesnt guarantee any order at all) and std::map, which reorders keys alphabetically. More...
 
typedef std::vector< std::pair< std::string, command_parameter > > parameter_list_t
 Parameter list for a called command. See dpp::parameter_registration_t for an explanation as to why vector is used. More...
 
typedef std::function< void(const std::string &, const parameter_list_t &, command_source)> command_handler
 The function definition for a command handler. Expects a command name string, and a list of command parameters. More...
 
typedef uint64_t snowflake
 A 64 bit unsigned value representing many things on discord. Discord calls the value a 'snowflake' value. More...
 
typedef size_t event_handle
 A returned event handle for an event which was attached. More...
 
typedef dpp::collector< dpp::channel_create_t, dpp::channelchannel_collector_t
 Temlate type for base class of channel collector. More...
 
typedef dpp::collector< dpp::thread_create_t, dpp::threadthread_collector_t
 Temlate type for base class of thread collector. More...
 
typedef dpp::collector< dpp::guild_role_create_t, dpp::rolerole_collector_t
 Temlate type for base class of role collector. More...
 
typedef dpp::collector< dpp::guild_scheduled_event_create_t, dpp::scheduled_eventscheduled_event_collector_t
 Temlate type for base class of scheduled event collector. More...
 
typedef dpp::collector< dpp::message_create_t, dpp::messagemessage_collector_t
 Temlate type for base class of message collector. More...
 
typedef dpp::collector< dpp::message_reaction_add_t, dpp::collected_reactionreaction_collector_t
 Temlate type for base class of message reaction collector. More...
 
typedef std::unordered_map< snowflake, dtemplatedtemplate_map
 
typedef std::unordered_map< snowflake, emojiemoji_map
 Group of emojis. More...
 
typedef std::unordered_map< snowflake, guild_membermembers_container
 Guild members container. More...
 
typedef std::unordered_map< snowflake, guildguild_map
 
typedef std::unordered_map< snowflake, guild_memberguild_member_map
 
typedef std::unordered_map< snowflake, integrationintegration_map
 
typedef std::unordered_map< snowflake, connectionconnection_map
 
typedef std::unordered_map< std::string, inviteinvite_map
 
typedef std::unordered_map< snowflake, messagemessage_map
 
typedef std::unordered_map< snowflake, stickersticker_map
 
typedef std::unordered_map< snowflake, sticker_packsticker_pack_map
 
typedef std::unordered_map< snowflake, presencepresence_map
 
typedef std::function< void(const http_request_completion_t &)> http_completion_event
 Results of HTTP requests are called back to these std::function types. More...
 
typedef std::unordered_map< snowflake, rolerole_map
 
typedef std::unordered_map< snowflake, scheduled_eventscheduled_event_map
 A group of scheduled events. More...
 
typedef std::unordered_map< snowflake, event_memberevent_member_map
 A group of scheduled event members. More...
 
typedef int socket
 
typedef std::function< dpp::socket()> socket_callback_t
 A callback for socket status. More...
 
typedef std::function< void()> socket_notification_t
 A socket notification callback. More...
 
typedef std::unordered_map< snowflake, stage_instancestage_instance_map
 
typedef size_t timer
 Represents a timer handle. Returned from cluster::start_timer and used by cluster::stop_timer. This is obtained from a simple incrementing value, internally. More...
 
typedef std::function< void()> timer_callback_t
 The type for a timer callback. More...
 
typedef std::multimap< time_t, timer_t * > timer_next_t
 A map of timers, ordered by earliest first so that map::begin() is always the soonest to be due. More...
 
typedef std::unordered_map< timer, timer_t * > timer_reg_t
 A map of timers stored by handle. More...
 
typedef std::unordered_map< snowflake, useruser_map
 
typedef std::unordered_map< std::string, voiceregionvoiceregion_map
 A group of voice regions. More...
 
typedef std::unordered_map< std::string, voicestatevoicestate_map
 
typedef std::unordered_map< snowflake, webhookwebhook_map
 A group of webhooks. More...
 

Enumerations

enum  command_option_type : uint8_t {
  co_sub_command = 1 , co_sub_command_group = 2 , co_string = 3 , co_integer = 4 ,
  co_boolean = 5 , co_user = 6 , co_channel = 7 , co_role = 8 ,
  co_mentionable = 9 , co_number = 10
}
 Represents command option types. These are the possible parameter value types. More...
 
enum  interaction_response_type {
  ir_pong = 1 , ir_channel_message_with_source = 4 , ir_deferred_channel_message_with_source = 5 , ir_deferred_update_message = 6 ,
  ir_update_message = 7 , ir_autocomplete_reply = 8 , ir_modal_dialog = 9
}
 Response types when responding to an interaction within on_interaction_create. Do not use ir_acknowledge or ir::channel_message, as these are deprecated in the Discord API spec. They are listed in this enum for completeness. More...
 
enum  interaction_type {
  it_ping = 1 , it_application_command = 2 , it_component_button = 3 , it_autocomplete = 4 ,
  it_modal_submit = 5
}
 
enum  slashcommand_contextmenu_type { ctxm_none = 0 , ctxm_chat_input = 1 , ctxm_user = 2 , ctxm_message = 3 }
 Right-click context menu types. More...
 
enum  component_type_t { cotype_button = 2 , cotype_select = 3 }
 Component type, either button or select. More...
 
enum  command_permission_type { cpt_role = 1 , cpt_user = 2 }
 type of permission in the dpp::command_permission class More...
 
enum  team_member_status : uint8_t { tms_invited = 1 , tms_accepted = 2 }
 status of a member of a team who maintain a bot/application More...
 
enum  application_flags : uint32_t {
  apf_gateway_presence = (1 << 12) , apf_gateway_presence_limited = (1 << 13) , apf_gateway_guild_members = (1 << 14) , apf_gateway_guild_members_limited = (1 << 15) ,
  apf_verification_pending_guild_limit = (1 << 16) , apf_embedded = (1 << 17) , apf_gateway_message_content = (1 << 18) , apf_gateway_message_content_limited = (1 << 19)
}
 Flags for a bot or application. More...
 
enum  audit_type {
  ae_guild_update = 1 , ae_channel_create = 10 , ae_channel_update = 11 , ae_channel_delete = 12 ,
  ae_channel_overwrite_create = 13 , ae_channel_overwrite_update = 14 , ae_channel_overwrite_delete = 15 , ae_member_kick = 20 ,
  ae_member_prune = 21 , ae_member_ban_add = 22 , ae_member_ban_remove = 23 , ae_member_update = 24 ,
  ae_member_role_update = 25 , ae_member_move = 26 , ae_member_disconnect = 27 , ae_bot_add = 28 ,
  ae_role_create = 30 , ae_role_update = 31 , ae_role_delete = 32 , ae_invite_create = 40 ,
  ae_invite_update = 41 , ae_invite_delete = 42 , ae_webhook_create = 50 , ae_webhook_update = 51 ,
  ae_webhook_delete = 52 , ae_emoji_create = 60 , ae_emoji_update = 61 , ae_emoji_delete = 62 ,
  ae_message_delete = 72 , ae_message_bulk_delete = 73 , ae_message_pin = 74 , ae_message_unpin = 75 ,
  ae_integration_create = 80 , ae_integration_update = 81 , ae_integration_delete = 82 , ae_stage_instance_create = 83 ,
  ae_stage_instance_update = 84 , ae_stage_instance_delete = 85 , ae_sticker_create = 90 , ae_sticker_update = 91 ,
  ae_sticker_delete = 92 , ae_guild_scheduled_event_create = 100 , ae_guild_scheduled_event_update = 101 , ae_guild_scheduled_event_delete = 102 ,
  ae_thread_create = 110 , ae_thread_update = 111 , ae_thread_delete = 112
}
 Defines types of audit log entry. More...
 
enum  channel_type {
  GUILD_TEXT = 0 , DM = 1 , GUILD_VOICE = 2 , GROUP_DM = 3 ,
  GUILD_CATEGORY = 4 , GUILD_NEWS = 5 , GUILD_STORE = 6 , GUILD_NEWS_THREAD = 10 ,
  GUILD_PUBLIC_THREAD = 11 , GUILD_PRIVATE_THREAD = 12 , GUILD_STAGE = 13
}
 Flag integers as received from and sent to discord. More...
 
enum  channel_flags : uint16_t {
  c_video_quality_auto = 0b0000000000000000 , c_nsfw = 0b0000000000000001 , c_text = 0b0000000000000010 , c_dm = 0b0000000000000100 ,
  c_voice = 0b0000000000001000 , c_group = 0b0000000000010000 , c_category = 0b0000000000100000 , c_news = 0b0000000001000000 ,
  c_store = 0b0000000010000000 , c_stage = 0b0000000011000000 , c_news_thread = 0b0000000011100000 , c_public_thread = 0b0000000011110000 ,
  c_private_thread = 0b0000000011111000 , c_video_quality_720p = 0b0000000100000000
}
 Our flags as stored in the object. More...
 
enum  overwrite_type : uint8_t { ot_role = 0 , ot_member = 1 }
 channel permission overwrite types More...
 
enum  parameter_type {
  pt_string , pt_role , pt_channel , pt_user ,
  pt_integer , pt_double , pt_boolean
}
 Parameter types when registering a command. We don't pass these in when triggering the command in the handler, because it is expected the developer added the command so they know what types to expect for each named parameter. More...
 
enum  image_type { i_png , i_jpg , i_gif }
 Supported image types for profile pictures. More...
 
enum  loglevel {
  ll_trace = 0 , ll_debug , ll_info , ll_warning ,
  ll_error , ll_critical
}
 Log levels. More...
 
enum  time_format : uint8_t {
  tf_long_date = 'D' , tf_long_datetime = 'F' , tf_relative_time = 'R' , tf_long_time = 'T' ,
  tf_short_date = 'd' , tf_short_datetime = 'f' , tf_short_time = 't'
}
 Timestamp formats for dpp::utility::timestamp() More...
 
enum  emoji_flags : uint8_t { e_require_colons = 0b00000001 , e_managed = 0b00000010 , e_animated = 0b00000100 , e_available = 0b00001000 }
 Flags for dpp::emoji. More...
 
enum  etf_token_type : uint8_t {
  ett_distribution = 'D' , ett_new_float = 'F' , ett_bit_binary = 'M' , ett_compressed = 'P' ,
  ett_smallint = 'a' , ett_integer = 'b' , ett_float = 'c' , ett_atom = 'd' ,
  ett_reference = 'e' , ett_port = 'f' , ett_pid = 'g' , ett_small_tuple = 'h' ,
  ett_large_tuple = 'i' , ett_nil = 'j' , ett_string = 'k' , ett_list = 'l' ,
  ett_binary = 'm' , ett_bigint_small = 'n' , ett_bigint_large = 'o' , ett_new_function = 'p' ,
  ett_export = 'q' , ett_new_reference = 'r' , ett_atom_small = 's' , ett_map = 't' ,
  ett_function = 'u' , ett_atom_utf8 = 'v' , ett_atom_utf8_small = 'w'
}
 Represents a token which identifies the type of value which follows it in the ETF binary structure. More...
 
enum  region : uint8_t {
  r_brazil , r_central_europe , r_hong_kong , r_india ,
  r_japan , r_russia , r_singapore , r_south_africa ,
  r_sydney , r_us_central , r_us_east , r_us_south ,
  r_us_west , r_western_europe
}
 Represents voice regions for guilds and channels. More...
 
enum  guild_flags : uint32_t {
  g_large = 0b00000000000000000000000000000001 , g_unavailable = 0b00000000000000000000000000000010 , g_widget_enabled = 0b00000000000000000000000000000100 , g_invite_splash = 0b00000000000000000000000000001000 ,
  g_vip_regions = 0b00000000000000000000000000010000 , g_vanity_url = 0b00000000000000000000000000100000 , g_verified = 0b00000000000000000000000001000000 , g_partnered = 0b00000000000000000000000010000000 ,
  g_community = 0b00000000000000000000000100000000 , g_commerce = 0b00000000000000000000001000000000 , g_news = 0b00000000000000000000010000000000 , g_discoverable = 0b00000000000000000000100000000000 ,
  g_featureable = 0b00000000000000000001000000000000 , g_animated_icon = 0b00000000000000000010000000000000 , g_banner = 0b00000000000000000100000000000000 , g_welcome_screen_enabled = 0b00000000000000001000000000000000 ,
  g_member_verification_gate = 0b00000000000000010000000000000000 , g_preview_enabled = 0b00000000000000100000000000000000 , g_no_join_notifications = 0b00000000000001000000000000000000 , g_no_boost_notifications = 0b00000000000010000000000000000000 ,
  g_has_animated_icon = 0b00000000000100000000000000000000 , g_has_animated_banner = 0b00000000001000000000000000000000 , g_no_setup_tips = 0b00000000010000000000000000000000 , g_no_sticker_greeting = 0b00000000100000000000000000000000 ,
  g_monetization_enabled = 0b00000001000000000000000000000000 , g_more_stickers = 0b00000010000000000000000000000000 , g_private_threads = 0b00000100000000000000000000000000 , g_role_icons = 0b00001000000000000000000000000000 ,
  g_seven_day_thread_archive = 0b00010000000000000000000000000000 , g_three_day_thread_archive = 0b00100000000000000000000000000000 , g_ticketed_events = 0b01000000000000000000000000000000 , g_channel_banners = 0b10000000000000000000000000000000
}
 The various flags that represent the status of a dpp::guild object. More...
 
enum  guild_member_flags : uint8_t { gm_deaf = 0b00001 , gm_mute = 0b00010 , gm_pending = 0b00100 , gm_animated_avatar = 0b01000 }
 Various flags that can be used to indicate the status of a guild member. More...
 
enum  guild_nsfw_level_t : uint8_t { nsfw_default = 0 , nsfw_explicit = 1 , nsfw_safe = 2 , nsfw_age_restricted = 3 }
 Guild NSFW level. Used to represent just how naughty this guild is. Naughty guild, go sit in the corner. More...
 
enum  guild_explicit_content_t : uint8_t { expl_disabled = 0 , expl_members_without_roles = 1 , expl_all_members = 2 }
 explicit content filter level. This is set by a guild admin, but can be forced to a setting if the server is verified, partnered, official etc. More...
 
enum  mfa_level_t : uint8_t { mfa_none = 0 , mfa_elevated = 1 }
 MFA level for server. If set to elevated all moderators need MFA to perform specific actions such as kick or ban. More...
 
enum  verification_level_t : uint8_t {
  ver_none = 0 , ver_low = 1 , ver_medium = 2 , ver_high = 3 ,
  ver_very_high = 4
}
 Guild verification level. More...
 
enum  integration_type { i_twitch , i_youtube , i_discord }
 Integration types. More...
 
enum  integration_flags {
  if_enabled = 0b00000001 , if_syncing = 0b00000010 , if_emoticons = 0b00000100 , if_revoked = 0b00001000 ,
  if_expire_kick = 0b00010000
}
 Integration flags. More...
 
enum  intents {
  i_guilds = (1 << 0) , i_guild_members = (1 << 1) , i_guild_bans = (1 << 2) , i_guild_emojis = (1 << 3) ,
  i_guild_integrations = (1 << 4) , i_guild_webhooks = (1 << 5) , i_guild_invites = (1 << 6) , i_guild_voice_states = (1 << 7) ,
  i_guild_presences = (1 << 8) , i_guild_messages = (1 << 9) , i_guild_message_reactions = (1 << 10) , i_guild_message_typing = (1 << 11) ,
  i_direct_messages = (1 << 12) , i_direct_message_reactions = (1 << 13) , i_direct_message_typing = (1 << 14) , i_guild_scheduled_events = (1 << 16) ,
  i_default_intents = dpp::i_guilds | dpp::i_guild_bans | dpp::i_guild_emojis | dpp::i_guild_integrations | dpp::i_guild_webhooks | dpp::i_guild_invites | dpp::i_guild_voice_states | dpp::i_guild_messages | dpp::i_guild_message_reactions | dpp::i_guild_message_typing | dpp::i_direct_messages | dpp::i_direct_message_typing | dpp::i_direct_message_reactions | dpp::i_guild_scheduled_events , i_privileged_intents = dpp::i_guild_members | dpp::i_guild_presences , i_all_intents = dpp::i_default_intents | dpp::i_privileged_intents
}
 intents are a bitmask of allowed events on your websocket. More...
 
enum  component_type : uint8_t { cot_action_row = 1 , cot_button = 2 , cot_selectmenu = 3 , cot_text = 4 }
 Represents the type of a component. More...
 
enum  text_style_type : uint8_t { text_short = 1 , text_paragraph = 2 }
 Types of text input. More...
 
enum  component_style : uint8_t {
  cos_primary = 1 , cos_secondary , cos_success , cos_danger ,
  cos_link
}
 Represents the style of a button. More...
 
enum  sticker_type : uint8_t { st_standard = 1 , st_guild = 2 }
 Represents the type of a sticker. More...
 
enum  sticker_format : uint8_t { sf_png = 1 , sf_apng = 2 , sf_lottie = 3 }
 The file format (png, apng, lottie) of a sticker. More...
 
enum  message_flags {
  m_crossposted = 1 << 0 , m_is_crosspost = 1 << 1 , m_suppress_embeds = 1 << 2 , m_source_message_deleted = 1 << 3 ,
  m_urgent = 1 << 4 , m_has_thread = 1 << 5 , m_ephemeral = 1 << 6 , m_loading = 1 << 7
}
 Bitmask flags for a dpp::message. More...
 
enum  message_type {
  mt_default = 0 , mt_recipient_add = 1 , mt_recipient_remove = 2 , mt_call = 3 ,
  mt_channel_name_change = 4 , mt_channel_icon_change = 5 , mt_channel_pinned_message = 6 , mt_guild_member_join = 7 ,
  mt_user_premium_guild_subscription = 8 , mt_user_premium_guild_subscription_tier_1 = 9 , mt_user_premium_guild_subscription_tier_2 = 10 , mt_user_premium_guild_subscription_tier_3 = 11 ,
  mt_channel_follow_add = 12 , mt_guild_discovery_disqualified = 14 , mt_guild_discovery_requalified = 15 , mt_guild_discovery_grace_period_initial_warning = 16 ,
  mt_guild_discovery_grace_period_final_warning = 17 , mt_thread_created = 18 , mt_reply = 19 , mt_application_command = 20 ,
  mt_thread_starter_message = 21 , mt_guild_invite_reminder = 22 , mt_context_menu_command = 23
}
 Message types for dpp::message::type. More...
 
enum  cache_policy_setting_t { cp_aggressive = 0 , cp_lazy = 1 , cp_none = 2 }
 Represents the caching policy of a cache in the library. More...
 
enum  presence_flags {
  p_desktop_online = 0b00000001 , p_desktop_dnd = 0b00000010 , p_desktop_idle = 0b00000011 , p_web_online = 0b00000100 ,
  p_web_dnd = 0b00001000 , p_web_idle = 0b00001100 , p_mobile_online = 0b00010000 , p_mobile_dnd = 0b00100000 ,
  p_mobile_idle = 0b00110000 , p_status_online = 0b01000000 , p_status_dnd = 0b10000000 , p_status_idle = 0b11000000
}
 Presence flags bitmask. More...
 
enum  presence_status : uint8_t { ps_offline = 0 , ps_online = 1 , ps_dnd = 2 , ps_idle = 3 }
 Online presence status values. More...
 
enum  activity_type : uint8_t {
  at_game = 0 , at_streaming = 1 , at_listening = 2 , at_watching = 3 ,
  at_custom = 4 , at_competing = 5
}
 Game types. More...
 
enum  activity_flags {
  af_instance = 0b00000001 , af_join = 0b00000010 , af_spectate = 0b00000100 , af_join_request = 0b00001000 ,
  af_sync = 0b00010000 , af_play = 0b00100000
}
 Activity types for rich presence. More...
 
enum  http_error {
  h_success = 0 , h_unknown , h_connection , h_bind_ip_address ,
  h_read , h_write , h_exceed_redirect_count , h_canceled ,
  h_ssl_connection , h_ssl_loading_certs , h_ssl_server_verification , h_unsupported_multipart_boundary_chars ,
  h_compression
}
 Error values. Don't change the order or add extra values here, as they map onto the error values of cpp-httplib. More...
 
enum  http_method {
  m_get , m_post , m_put , m_patch ,
  m_delete
}
 
enum  role_flags : uint8_t { r_hoist = 0b00000001 , r_managed = 0b00000010 , r_mentionable = 0b00000100 , r_premium_subscriber = 0b00001000 }
 
enum  role_permissions : uint64_t {
  p_create_instant_invite = 0x00000000001 , p_kick_members = 0x00000000002 , p_ban_members = 0x00000000004 , p_administrator = 0x00000000008 ,
  p_manage_channels = 0x00000000010 , p_manage_guild = 0x00000000020 , p_add_reactions = 0x00000000040 , p_view_audit_log = 0x00000000080 ,
  p_priority_speaker = 0x00000000100 , p_stream = 0x00000000200 , p_view_channel = 0x00000000400 , p_send_messages = 0x00000000800 ,
  p_send_tts_messages = 0x00000001000 , p_manage_messages = 0x00000002000 , p_embed_links = 0x00000004000 , p_attach_files = 0x00000008000 ,
  p_read_message_history = 0x00000010000 , p_mention_everyone = 0x00000020000 , p_use_external_emojis = 0x00000040000 , p_view_guild_insights = 0x00000080000 ,
  p_connect = 0x00000100000 , p_speak = 0x00000200000 , p_mute_members = 0x00000400000 , p_deafen_members = 0x00000800000 ,
  p_move_members = 0x00001000000 , p_use_vad = 0x00002000000 , p_change_nickname = 0x00004000000 , p_manage_nicknames = 0x00008000000 ,
  p_manage_roles = 0x00010000000 , p_manage_webhooks = 0x00020000000 , p_manage_emojis_and_stickers = 0x00040000000 , p_use_application_commands = 0x00080000000 ,
  p_request_to_speak = 0x00100000000 , p_manage_events = 0x00200000000 , p_manage_threads = 0x00400000000 , p_create_public_threads = 0x00800000000 ,
  p_create_private_threads = 0x01000000000 , p_use_external_stickers = 0x02000000000 , p_send_messages_in_threads = 0x04000000000 , p_start_embedded_activities = 0x08000000000 ,
  p_moderate_members = 0x10000000000
}
 Represents the various discord permissions. More...
 
enum  event_privacy_level : uint8_t { ep_guild_only = 2 }
 Represents the privacy of an event. More...
 
enum  event_entity_type : uint8_t { eet_stage_instance = 1 , eet_voice = 2 , eet_external = 3 }
 Event entity types. More...
 
enum  event_status : uint8_t { es_scheduled = 1 , es_active = 2 , es_completed = 3 , es_cancelled = 4 }
 Event status types. More...
 
enum  stage_privacy_level : uint8_t { sp_public = 1 , sp_guild_only = 2 }
 Represents the privacy of a stage instance. More...
 
enum  user_flags : uint32_t {
  u_bot = 0b00000000000000000000001 , u_system = 0b00000000000000000000010 , u_mfa_enabled = 0b00000000000000000000100 , u_verified = 0b00000000000000000001000 ,
  u_nitro_full = 0b00000000000000000010000 , u_nitro_classic = 0b00000000000000000100000 , u_discord_employee = 0b00000000000000001000000 , u_partnered_owner = 0b00000000000000010000000 ,
  u_hypesquad_events = 0b00000000000000100000000 , u_bughunter_1 = 0b00000000000001000000000 , u_house_bravery = 0b00000000000010000000000 , u_house_brilliance = 0b00000000000100000000000 ,
  u_house_balanace = 0b00000000001000000000000 , u_early_supporter = 0b00000000010000000000000 , u_team_user = 0b00000000100000000000000 , u_bughunter_2 = 0b00000001000000000000000 ,
  u_verified_bot = 0b00000010000000000000000 , u_verified_bot_dev = 0b00000100000000000000000 , u_animated_icon = 0b00001000000000000000000 , u_certified_moderator = 0b00010000000000000000000 ,
  u_bot_http_interactions = 0b00100000000000000000000
}
 Various bitmask flags used to represent information about a dpp::user. More...
 
enum  voiceregion_flags { v_optimal = 0x00000001 , v_deprecated = 0x00000010 , v_custom = 0x00000100 , v_vip = 0x00001000 }
 Flags related to a voice region. More...
 
enum  voicestate_flags {
  vs_deaf = 0b00000001 , vs_mute = 0b00000010 , vs_self_mute = 0b00000100 , vs_self_deaf = 0b00001000 ,
  vs_self_stream = 0b00010000 , vs_self_video = 0b00100000 , vs_suppress = 0b01000000
}
 Bit mask flags relating to voice states. More...
 
enum  webhook_type { w_incoming = 1 , w_channel_follower = 2 }
 Defines types of webhook. More...
 
enum  websocket_protocol_t : uint8_t { ws_json = 0 , ws_etf = 1 }
 
enum  ws_state : uint8_t { HTTP_HEADERS , CONNECTED }
 Websocket connection status. More...
 
enum  ws_opcode : uint8_t {
  OP_CONTINUATION = 0x00 , OP_TEXT = 0x01 , OP_BINARY = 0x02 , OP_CLOSE = 0x08 ,
  OP_PING = 0x09 , OP_PONG = 0x0a
}
 Low-level websocket opcodes for frames. More...
 

Functions

void to_json (nlohmann::json &j, const command_option_choice &choice)
 helper function to serialize a command_option_choice to json More...
 
void to_json (nlohmann::json &j, const command_option &opt)
 helper function to serialize a command_option to json More...
 
void from_json (const nlohmann::json &j, command_data_option &cdo)
 helper function to deserialize a command_data_option from json More...
 
void from_json (const nlohmann::json &j, command_interaction &ci)
 helper function to deserialize a command_interaction from json More...
 
void from_json (const nlohmann::json &j, component_interaction &bi)
 helper function to deserialize a component_interaction from json More...
 
void from_json (const nlohmann::json &j, autocomplete_interaction &ai)
 helper function to deserialize an autocomplete_interaction from json More...
 
void from_json (const nlohmann::json &j, interaction &i)
 helper function to deserialize an interaction from json More...
 
void to_json (nlohmann::json &j, const command_permission &cp)
 helper function to serialize a command_permission to json More...
 
void to_json (nlohmann::json &j, const guild_command_permissions &gcp)
 helper function to serialize a guild_command_permissions to json More...
 
void to_json (nlohmann::json &j, const slashcommand &cmd)
 helper function to serialize a slashcommand to json More...
 
void DPP_EXPORT garbage_collection ()
 
DPP_EXPORT userfind_user (snowflake id)
 
DPP_EXPORT cache< user > * get_user_cache ()
 
DPP_EXPORT uint64_t get_user_count ()
 
DPP_EXPORT guildfind_guild (snowflake id)
 
DPP_EXPORT cache< guild > * get_guild_cache ()
 
DPP_EXPORT uint64_t get_guild_count ()
 
DPP_EXPORT rolefind_role (snowflake id)
 
DPP_EXPORT cache< role > * get_role_cache ()
 
DPP_EXPORT uint64_t get_role_count ()
 
DPP_EXPORT channelfind_channel (snowflake id)
 
DPP_EXPORT cache< channel > * get_channel_cache ()
 
DPP_EXPORT uint64_t get_channel_count ()
 
DPP_EXPORT emojifind_emoji (snowflake id)
 
DPP_EXPORT cache< emoji > * get_emoji_cache ()
 
DPP_EXPORT uint64_t get_emoji_count ()
 
guild_member DPP_EXPORT find_guild_member (const snowflake guild_id, const snowflake user_id)
 Get the guild_member from cache of given IDs. More...
 
void to_json (nlohmann::json &j, const thread_metadata &tmdata)
 
void to_json (nlohmann::json &j, const permission_overwrite &po)
 
uint64_t snowflake_not_null (const nlohmann::json *j, const char *keyname)
 Returns a snowflake id from a json field value, if defined, else returns 0. More...
 
void set_snowflake_not_null (const nlohmann::json *j, const char *keyname, uint64_t &v)
 Sets a snowflake id from a json field value, if defined, else does nothing. More...
 
std::string string_not_null (const nlohmann::json *j, const char *keyname)
 Returns a string from a json field value, if defined, else returns an empty string. More...
 
void set_string_not_null (const nlohmann::json *j, const char *keyname, std::string &v)
 Sets a string from a json field value, if defined, else does nothing. More...
 
uint64_t int64_not_null (const nlohmann::json *j, const char *keyname)
 Returns a 64 bit unsigned integer from a json field value, if defined, else returns 0. DO NOT use this for snowflakes, as usually snowflakes are wrapped in a string! More...
 
void set_int64_not_null (const nlohmann::json *j, const char *keyname, uint64_t &v)
 Sets an unsigned 64 bit integer from a json field value, if defined, else does nothing. More...
 
uint32_t int32_not_null (const nlohmann::json *j, const char *keyname)
 Returns a 32 bit unsigned integer from a json field value, if defined, else returns 0. More...
 
void set_int32_not_null (const nlohmann::json *j, const char *keyname, uint32_t &v)
 Sets an unsigned 32 bit integer from a json field value, if defined, else does nothing. More...
 
uint16_t int16_not_null (const nlohmann::json *j, const char *keyname)
 Returns a 16 bit unsigned integer from a json field value, if defined, else returns 0. More...
 
void set_int16_not_null (const nlohmann::json *j, const char *keyname, uint16_t &v)
 Sets an unsigned 16 bit integer from a json field value, if defined, else does nothing. More...
 
uint8_t int8_not_null (const nlohmann::json *j, const char *keyname)
 Returns an 8 bit unsigned integer from a json field value, if defined, else returns 0. More...
 
void set_int8_not_null (const nlohmann::json *j, const char *keyname, uint8_t &v)
 Sets an unsigned 8 bit integer from a json field value, if defined, else does nothing. More...
 
bool bool_not_null (const nlohmann::json *j, const char *keyname)
 Returns a boolean value from a json field value, if defined, else returns false. More...
 
void set_bool_not_null (const nlohmann::json *j, const char *keyname, bool &v)
 Sets a boolean from a json field value, if defined, else does nothing. More...
 
time_t ts_not_null (const nlohmann::json *j, const char *keyname)
 Returns a time_t from an ISO8601 timestamp field in a json value, if defined, else returns epoch value of 0. More...
 
void set_ts_not_null (const nlohmann::json *j, const char *keyname, time_t &v)
 Sets an timestamp from a json field value containing an ISO8601 string, if defined, else does nothing. More...
 
std::string base64_encode (unsigned char const *buf, unsigned int buffer_length)
 Base64 encode data into a string. More...
 
std::string ts_to_string (time_t ts)
 Convert time_t unix epoch to std::string ISO date/time. More...
 
void from_json (const nlohmann::json &j, guild_member &gm)
 helper function to deserialize a guild_member from json More...
 
std::string url_encode (const std::string &value)
 Encodes a url parameter similar to php urlencode() More...
 
void from_json (const nlohmann::json &j, user &u)
 helper function to deserialize a user from json More...
 
void from_json (const nlohmann::json &j, user_identified &u)
 helper function to deserialize a user_identified from json More...
 

Variables

const size_t AUTOCOMPLETE_MAX_CHOICES = 25
 Discord limits the maximum number of replies to an autocomplete interaction to 25. This value represents that maximum. interaction_response::add_autocomplete_choice does not allow adding more than this number of elements to the vector. More...
 
DPP_EXPORT std::unordered_map< managed *, time_t > deletion_queue
 
DPP_EXPORT std::mutex deletion_mutex
 
DPP_EXPORT event_handle __next_handle
 
const uint8_t FORMAT_VERSION = 131
 

Detailed Description

The main namespace for D++ functions. classes and types.

Typedef Documentation

◆ application_map

typedef std::unordered_map<snowflake, application> dpp::application_map

A group of applications. This is not currently ever sent by Discord API but the DPP standard setup for objects that can be received by REST has the possibility for this, so this exists. Don't ever expect to see one at present.

◆ ban_map

typedef std::unordered_map<snowflake, ban> dpp::ban_map

A group of bans

◆ channel_collector_t

Temlate type for base class of channel collector.

◆ channel_map

typedef std::unordered_map<snowflake, channel> dpp::channel_map

A group of channels.

◆ command_completion_event_t

typedef std::function< void(const confirmation_callback_t &)> dpp::command_completion_event_t

A callback upon command completion.

A function used as a callback for any REST based command.

◆ command_handler

typedef std::function<void(const std::string&, const parameter_list_t&, command_source)> dpp::command_handler

The function definition for a command handler. Expects a command name string, and a list of command parameters.

◆ command_option_range

typedef std::variant<std::monostate, int64_t, double> dpp::command_option_range

A minimum or maximum value for co_number and co_integer dpp::command_option types.

◆ command_parameter

typedef std::variant<std::monostate, std::string, dpp::role, dpp::channel, dpp::resolved_user, int64_t, bool, double> dpp::command_parameter

Represents a received parameter. We use variant so that multiple non-related types can be contained within.

◆ command_value

typedef std::variant<std::monostate, std::string, int64_t, bool, snowflake, double> dpp::command_value

This type is a variant that can hold any of the potential native data types represented by the enum above. It is used in interactions.

std::monostate indicates an invalid parameter value, e.g. an unfilled optional parameter.

◆ confirmable_t

◆ connection_map

typedef std::unordered_map<snowflake, connection> dpp::connection_map

A group of connections

◆ dtemplate_map

typedef std::unordered_map<snowflake, dtemplate> dpp::dtemplate_map

A container of invites

◆ emoji_map

typedef std::unordered_map<snowflake, emoji> dpp::emoji_map

Group of emojis.

◆ event_handle

typedef size_t dpp::event_handle

A returned event handle for an event which was attached.

◆ event_member_map

typedef std::unordered_map<snowflake, event_member> dpp::event_member_map

A group of scheduled event members.

◆ guild_map

typedef std::unordered_map<snowflake, guild> dpp::guild_map

A container of guilds

◆ guild_member_map

typedef std::unordered_map<snowflake, guild_member> dpp::guild_member_map

A container of guild members

◆ http_completion_event

typedef std::function<void(const http_request_completion_t&)> dpp::http_completion_event

Results of HTTP requests are called back to these std::function types.

Note
Returned http_completion_events are called ASYNCRONOUSLY in your code which means they execute in a separate thread. The completion events arrive in order.

◆ integration_map

typedef std::unordered_map<snowflake, integration> dpp::integration_map

A group of integrations

◆ invite_map

typedef std::unordered_map<std::string, invite> dpp::invite_map

A container of invites

◆ json_encode_t

typedef std::function<void(json&, const http_request_completion_t&)> dpp::json_encode_t

Automatically JSON encoded HTTP result.

◆ members_container

typedef std::unordered_map<snowflake, guild_member> dpp::members_container

Guild members container.

◆ message_collector_t

Temlate type for base class of message collector.

◆ message_map

typedef std::unordered_map<snowflake, message> dpp::message_map

A group of messages

◆ parameter_list_t

typedef std::vector<std::pair<std::string, command_parameter> > dpp::parameter_list_t

Parameter list for a called command. See dpp::parameter_registration_t for an explanation as to why vector is used.

◆ parameter_registration_t

typedef std::vector<std::pair<std::string, param_info> > dpp::parameter_registration_t

Parameter list used during registration. Note that use of vector/pair is important here to preserve parameter order, as opposed to unordered_map (which doesnt guarantee any order at all) and std::map, which reorders keys alphabetically.

◆ presence_map

typedef std::unordered_map<snowflake, presence> dpp::presence_map

A container of presences

◆ reaction_collector_t

Temlate type for base class of message reaction collector.

◆ role_collector_t

Temlate type for base class of role collector.

◆ role_map

typedef std::unordered_map<snowflake, role> dpp::role_map

A group of roles

◆ scheduled_event_collector_t

Temlate type for base class of scheduled event collector.

◆ scheduled_event_map

typedef std::unordered_map<snowflake, scheduled_event> dpp::scheduled_event_map

A group of scheduled events.

◆ shard_list

typedef std::map<uint32_t, class discord_client*> dpp::shard_list

A list of shards.

◆ slashcommand_map

typedef std::unordered_map<snowflake, slashcommand> dpp::slashcommand_map

A group of application slash commands.

◆ snowflake

typedef uint64_t dpp::snowflake

A 64 bit unsigned value representing many things on discord. Discord calls the value a 'snowflake' value.

◆ socket

typedef int dpp::socket

◆ socket_callback_t

typedef std::function<dpp::socket()> dpp::socket_callback_t

A callback for socket status.

◆ socket_notification_t

typedef std::function<void()> dpp::socket_notification_t

A socket notification callback.

◆ stage_instance_map

typedef std::unordered_map<snowflake, stage_instance> dpp::stage_instance_map

A group of stage instances

◆ sticker_map

typedef std::unordered_map<snowflake, sticker> dpp::sticker_map

A group of stickers

◆ sticker_pack_map

typedef std::unordered_map<snowflake, sticker_pack> dpp::sticker_pack_map

A group of sticker packs

◆ thread_collector_t

Temlate type for base class of thread collector.

◆ thread_map

typedef std::unordered_map<snowflake, thread> dpp::thread_map

A group of threads.

◆ thread_member_map

typedef std::unordered_map<snowflake, thread_member> dpp::thread_member_map

A group of thread member objects.

◆ timer

typedef size_t dpp::timer

Represents a timer handle. Returned from cluster::start_timer and used by cluster::stop_timer. This is obtained from a simple incrementing value, internally.

◆ timer_callback_t

typedef std::function<void()> dpp::timer_callback_t

The type for a timer callback.

◆ timer_next_t

typedef std::multimap<time_t, timer_t*> dpp::timer_next_t

A map of timers, ordered by earliest first so that map::begin() is always the soonest to be due.

◆ timer_reg_t

typedef std::unordered_map<timer, timer_t*> dpp::timer_reg_t

A map of timers stored by handle.

◆ user_map

typedef std::unordered_map<snowflake, user> dpp::user_map

A group of users

◆ voiceregion_map

typedef std::unordered_map<std::string, voiceregion> dpp::voiceregion_map

A group of voice regions.

◆ voicestate_map

typedef std::unordered_map<std::string, voicestate> dpp::voicestate_map

A container of voicestates

◆ webhook_map

typedef std::unordered_map<snowflake, webhook> dpp::webhook_map

A group of webhooks.

Enumeration Type Documentation

◆ activity_flags

Activity types for rich presence.

Enumerator
af_instance 

In an instance.

af_join 

Joining.

af_spectate 

Spectating.

af_join_request 

Sending join request.

af_sync 

Synchronising.

af_play 

Playing.

◆ activity_type

enum dpp::activity_type : uint8_t

Game types.

Enumerator
at_game 

"Playing ..."

at_streaming 

"Streaming ..."

at_listening 

"Listening to..."

at_watching 

"Watching..."

at_custom 

"Emoji..."

at_competing 

"Competing in..."

◆ application_flags

enum dpp::application_flags : uint32_t

Flags for a bot or application.

Enumerator
apf_gateway_presence 

Has gateway presence intent.

apf_gateway_presence_limited 

Has gateway presence intent for <100 guilds.

apf_gateway_guild_members 

Has guild members intent.

apf_gateway_guild_members_limited 

Has guild members intent for <100 guilds.

apf_verification_pending_guild_limit 

Verification is pending.

apf_embedded 

Embedded.

apf_gateway_message_content 

Has approval for message content.

apf_gateway_message_content_limited 

Has message content, but <100 guilds.

◆ audit_type

Defines types of audit log entry.

Enumerator
ae_guild_update 

Guild update.

ae_channel_create 

Channel create.

ae_channel_update 

Channel update.

ae_channel_delete 

Channel delete.

ae_channel_overwrite_create 

Channel overwrite create.

ae_channel_overwrite_update 

Channel overwrite update.

ae_channel_overwrite_delete 

Channel overwrite delete.

ae_member_kick 

Channel member kick.

ae_member_prune 

Channel member prune.

ae_member_ban_add 

Channel member ban add.

ae_member_ban_remove 

Channel member ban remove.

ae_member_update 

Guild member update.

ae_member_role_update 

Guild member role update.

ae_member_move 

Guild member move.

ae_member_disconnect 

Guild member voice disconnect.

ae_bot_add 

Guild bot add.

ae_role_create 

Guild role create.

ae_role_update 

Guild role update.

ae_role_delete 

Guild role delete.

ae_invite_create 

Guild invite create.

ae_invite_update 

Guild invite update.

ae_invite_delete 

Guild invite delete.

ae_webhook_create 

Guild webhook create.

ae_webhook_update 

Guild webhook update.

ae_webhook_delete 

Guild webhook delete.

ae_emoji_create 

Guild emoji create.

ae_emoji_update 

Guild emoji update.

ae_emoji_delete 

Guild emoji delete.

ae_message_delete 

Guild message delete.

ae_message_bulk_delete 

Guild message bulk delete.

ae_message_pin 

Guild message pin.

ae_message_unpin 

Guild message unpin.

ae_integration_create 

Guild integration create.

ae_integration_update 

Guild integration update.

ae_integration_delete 

Guild integration delete.

ae_stage_instance_create 

Stage instance create.

ae_stage_instance_update 

Stage instance update.

ae_stage_instance_delete 

stage instance delete

ae_sticker_create 

Sticker create.

ae_sticker_update 

Sticker update.

ae_sticker_delete 

Sticker delete.

ae_guild_scheduled_event_create 

Scheduled event creation.

ae_guild_scheduled_event_update 

Scheduled event update.

ae_guild_scheduled_event_delete 

Scheduled event deletion.

ae_thread_create 

Thread create.

ae_thread_update 

Thread update.

ae_thread_delete 

Thread delete.

◆ cache_policy_setting_t

Represents the caching policy of a cache in the library.

Enumerator
cp_aggressive 

request aggressively on seeing new guilds, and also store missing data from messages. This is the default behaviour and the least memory-efficient option. Memory usage will increase over time, initiailly quite rapidly, and then linearly over time. It is the least cpu-intensive setting.

cp_lazy 

only cache when there is relavent activity, e.g. a message to the bot. This is a good middle-ground, memory usage will increase linearly over time.

cp_none 

Don't cache anything. Fill details when we see them. This is the most memory-efficient option but consumes more CPU time.

◆ channel_flags

enum dpp::channel_flags : uint16_t

Our flags as stored in the object.

Enumerator
c_video_quality_auto 

video quality mode 720p This is a dummy value as it does nothing, in comparison to c_video_quality_720p which actually sets the bit!

c_nsfw 

NSFW Gated Channel.

c_text 

Text channel.

c_dm 

Direct Message.

c_voice 

Voice channel.

c_group 

Group.

c_category 

Category.

c_news 

News channel.

c_store 

Store page.

c_stage 

Stage channel.

c_news_thread 

News thread.

c_public_thread 

Public thread.

c_private_thread 

Private thread.

c_video_quality_720p 

Video quality forced to 720p.

◆ channel_type

Flag integers as received from and sent to discord.

Enumerator
GUILD_TEXT 

a text channel within a server

DM 

a direct message between users

GUILD_VOICE 

a voice channel within a server

GROUP_DM 

a direct message between multiple users

GUILD_CATEGORY 

an organizational category that contains up to 50 channels

GUILD_NEWS 

a channel that users can follow and crosspost into their own server

GUILD_STORE 

a channel in which game developers can sell their game on Discord

GUILD_NEWS_THREAD 

a temporary sub-channel within a GUILD_NEWS channel

GUILD_PUBLIC_THREAD 

a temporary sub-channel within a GUILD_TEXT channel

GUILD_PRIVATE_THREAD 

a temporary sub-channel within a GUILD_TEXT channel that is only viewable by those invited and those with the MANAGE_THREADS permission

GUILD_STAGE 

a "stage" channel, like a voice channel with one authorised speaker

◆ command_option_type

enum dpp::command_option_type : uint8_t

Represents command option types. These are the possible parameter value types.

Enumerator
co_sub_command 

A sub-command

co_sub_command_group 

A sub-command group

co_string 

A string value

co_integer 

An integer value

co_boolean 

A boolean value

co_user 

A user snowflake id

co_channel 

A channel snowflake id. Includes all channel types and categories

co_role 

A role snowflake id

co_mentionable 

A mentionable. Includes users and roles

co_number 

Any double between -2^53 and 2^53

◆ command_permission_type

type of permission in the dpp::command_permission class

Enumerator
cpt_role 

Role permission.

cpt_user 

User permission.

◆ component_style

enum dpp::component_style : uint8_t

Represents the style of a button.

Enumerator
cos_primary 

Blurple.

cos_secondary 

Grey.

cos_success 

Green.

cos_danger 

Red.

cos_link 

An external hyperlink to a website.

◆ component_type

enum dpp::component_type : uint8_t

Represents the type of a component.

Enumerator
cot_action_row 

Action row, a container for other components.

cot_button 

Clickable button.

cot_selectmenu 

Select menu.

cot_text 

Text input - Experimental.

◆ component_type_t

Component type, either button or select.

Enumerator
cotype_button 

Button.

cotype_select 

Option select list (drop-down)

◆ emoji_flags

enum dpp::emoji_flags : uint8_t

Flags for dpp::emoji.

Enumerator
e_require_colons 

Emoji requires colons.

e_managed 

Managed (introduced by application)

e_animated 

Animated.

e_available 

Available (false if the guild doesn't meet boosting criteria, etc)

◆ etf_token_type

enum dpp::etf_token_type : uint8_t

Represents a token which identifies the type of value which follows it in the ETF binary structure.

Enumerator
ett_distribution 

68 [Distribution header]

ett_new_float 

70 [Float64:IEEE float]

ett_bit_binary 

77 [UInt32:Len, UInt8:Bits, Len:Data]

ett_compressed 

80 [UInt4:UncompressedSize, N:ZlibCompressedData]

ett_smallint 

97 [UInt8:Int]

ett_integer 

98 [Int32:Int]

ett_float 

99 [31:Float String] Float in string format (formatted "%.20e", sscanf "%lf"). Superseded by ett_new_float

ett_atom 

100 [UInt16:Len, Len:AtomName] max Len is 255

ett_reference 

101 [atom:Node, UInt32:ID, UInt8:Creation]

ett_port 

102 [atom:Node, UInt32:ID, UInt8:Creation]

ett_pid 

103 [atom:Node, UInt32:ID, UInt32:Serial, UInt8:Creation]

ett_small_tuple 

104 [UInt8:Arity, N:Elements]

ett_large_tuple 

105 [UInt32:Arity, N:Elements]

ett_nil 

106 empty list

ett_string 

107 [UInt16:Len, Len:Characters]

ett_list 

108 [UInt32:Len, Elements, Tail]

ett_binary 

109 [UInt32:Len, Len:Data]

ett_bigint_small 

110 [UInt8:n, UInt8:Sign, n:nums]

ett_bigint_large 

111 [UInt32:n, UInt8:Sign, n:nums]

ett_new_function 

112 [UInt32:Size, UInt8:Arity, 16*Uint6-MD5:Uniq, UInt32:Index, UInt32:NumFree, atom:Module, int:OldIndex, int:OldUniq, pid:Pid, NunFree*ext:FreeVars]

ett_export 

113 [atom:Module, atom:Function, smallint:Arity]

ett_new_reference 

114 [UInt16:Len, atom:Node, UInt8:Creation, Len*UInt32:ID]

ett_atom_small 

115 [UInt8:Len, Len:AtomName]

ett_map 

116 [UInt32:Airty, N:Pairs]

ett_function 

117 [UInt4:NumFree, pid:Pid, atom:Module, int:Index, int:Uniq, NumFree*ext:FreeVars]

ett_atom_utf8 

118 [UInt16:Len, Len:AtomName] max Len is 255 characters (up to 4 bytes per)

ett_atom_utf8_small 

119 [UInt8:Len, Len:AtomName]

◆ event_entity_type

enum dpp::event_entity_type : uint8_t

Event entity types.

Enumerator
eet_stage_instance 

A stage instance.

eet_voice 

A voice channel.

eet_external 

External to discord, or a text channel etc.

◆ event_privacy_level

enum dpp::event_privacy_level : uint8_t

Represents the privacy of an event.

Enumerator
ep_guild_only 

The event is visible to only guild members.

◆ event_status

enum dpp::event_status : uint8_t

Event status types.

Enumerator
es_scheduled 

Scheduled.

es_active 

Active now.

es_completed 

Completed.

es_cancelled 

Cancelled.

◆ guild_explicit_content_t

explicit content filter level. This is set by a guild admin, but can be forced to a setting if the server is verified, partnered, official etc.

Enumerator
expl_disabled 

media content will not be scanned

expl_members_without_roles 

media content sent by members without roles will be scanned

expl_all_members 

media content sent by all members will be scanned

◆ guild_flags

enum dpp::guild_flags : uint32_t

The various flags that represent the status of a dpp::guild object.

Enumerator
g_large 

Large guild

g_unavailable 

Unavailable guild (inaccessible due to an outage)

g_widget_enabled 

Guild has widget enabled

g_invite_splash 

Guild can have an invite splash image

g_vip_regions 

Guild can have VIP regions

g_vanity_url 

Guild can have a vanity url

g_verified 

Guild is verified

g_partnered 

Guild is partnered

g_community 

Community features enabled

g_commerce 

Guild has commerce features enabled

g_news 

Guild has news features enabled

g_discoverable 

Guild is discoverable in discovery

g_featureable 

Guild is featureable

g_animated_icon 

Guild can have an animated icon (doesn't mean it actually has one though)

g_banner 

Guild can have a banner image

g_welcome_screen_enabled 

Guild has a welcome screen

g_member_verification_gate 

Guild has a member verification gate

g_preview_enabled 

Guild has a preview

g_no_join_notifications 

Guild join notifications are off

g_no_boost_notifications 

Guild boost notifications are off

g_has_animated_icon 

Guild has an actual animated icon (set by the icon hash starting with 'a_')

g_has_animated_banner 

Guild has an actual animated banner (set by the icon hash starting with 'a_')

g_no_setup_tips 

Guild setup tips are off

g_no_sticker_greeting 

"Wave to say hi" sticker prompt buttons are off

g_monetization_enabled 

guild has enabled monetization

g_more_stickers 

guild has increased custom sticker slots

g_private_threads 

guild has access to create private threads

g_role_icons 

guild is able to set role icons

g_seven_day_thread_archive 

guild has access to the seven day archive time for threads

g_three_day_thread_archive 

guild has access to the three day archive time for threads

g_ticketed_events 

guild has enabled ticketed events

g_channel_banners 

guild can have channel banners

◆ guild_member_flags

enum dpp::guild_member_flags : uint8_t

Various flags that can be used to indicate the status of a guild member.

Enumerator
gm_deaf 

Member deafened in voice channels

gm_mute 

Member muted in voice channels

gm_pending 

Member pending verification by membership screening

gm_animated_avatar 

Member has animated guild-specific avatar

◆ guild_nsfw_level_t

enum dpp::guild_nsfw_level_t : uint8_t

Guild NSFW level. Used to represent just how naughty this guild is. Naughty guild, go sit in the corner.

Note
This is set by Discord, and cannot be set by any bot or user on the guild.
Enumerator
nsfw_default 

Default setting, not configured.

nsfw_explicit 

Explicit content may be in this guild.

nsfw_safe 

Safe for work content only.

nsfw_age_restricted 

Age restricted, 18+.

◆ http_error

Error values. Don't change the order or add extra values here, as they map onto the error values of cpp-httplib.

Enumerator
h_success 

Request successful.

h_unknown 

Status unknown.

h_connection 

Connect failed.

h_bind_ip_address 

Invalid local ip address.

h_read 

Read error.

h_write 

Write error.

h_exceed_redirect_count 

Too many 30x redirects.

h_canceled 

Request cancelled.

h_ssl_connection 

SSL connection error.

h_ssl_loading_certs 

SSL cert loading error.

h_ssl_server_verification 

SSL server verification error.

h_unsupported_multipart_boundary_chars 

Unsupported multipart boundary characters.

h_compression 

Compression error.

◆ http_method

Various types of http method supported by the Discord API

Enumerator
m_get 

GET.

m_post 

POST.

m_put 

PUT.

m_patch 

PATCH.

m_delete 

DELETE.

◆ image_type

Supported image types for profile pictures.

Enumerator
i_png 

image/png

i_jpg 

image/jpeg

i_gif 

image/gif

◆ integration_flags

Integration flags.

Enumerator
if_enabled 

Integration enabled.

if_syncing 

Integration synching.

if_emoticons 

Emoji integration.

if_revoked 

Integration revoked.

if_expire_kick 

Kick users when their subscription expires.

◆ integration_type

Integration types.

Enumerator
i_twitch 

Twitch integration.

i_youtube 

YouTube integration.

i_discord 

Discord integration.

◆ intents

intents are a bitmask of allowed events on your websocket.

Some of these are known as Privileged intents (GUILD_MEMBERS and GUILD_PRESENCES) and require verification of a bot over 100 servers by discord via submission of your real life ID.

Enumerator
i_guilds 

Intent for receipt of guild information.

i_guild_members 

Intent for receipt of guild members.

i_guild_bans 

Intent for receipt of guild bans.

i_guild_emojis 

Intent for receipt of guild emojis.

i_guild_integrations 

Intent for receipt of guild integrations.

i_guild_webhooks 

Intent for receipt of guild webhooks.

i_guild_invites 

Intent for receipt of guild invites.

i_guild_voice_states 

Intent for receipt of guild voice states.

i_guild_presences 

Intent for receipt of guild presences.

i_guild_messages 

Intent for receipt of guild messages.

i_guild_message_reactions 

Intent for receipt of guild message reactions.

i_guild_message_typing 

Intent for receipt of guild message typing notifications.

i_direct_messages 

Intent for receipt of direct messages (DMs)

i_direct_message_reactions 

Intent for receipt of direct message reactions.

i_direct_message_typing 

Intent for receipt of direct message typing notifications.

i_guild_scheduled_events 

Scheduled events.

i_default_intents 

Default D++ intents (all non-privileged intents)

i_privileged_intents 
i_all_intents 

◆ interaction_response_type

Response types when responding to an interaction within on_interaction_create. Do not use ir_acknowledge or ir::channel_message, as these are deprecated in the Discord API spec. They are listed in this enum for completeness.

Enumerator
ir_pong 

ACK a Ping.

ir_channel_message_with_source 

respond to an interaction with a message

ir_deferred_channel_message_with_source 

ACK an interaction and edit a response later, the user sees a loading state.

ir_deferred_update_message 

for components, ACK an interaction and edit the original message later; the user does not see a loading state

ir_update_message 

for components, edit the message the component was attached to

ir_autocomplete_reply 

Reply to autocomplete interaction. Be sure to do this within 500ms of the interaction!

ir_modal_dialog 

A modal dialog box - Experimental.

◆ interaction_type

Types of interaction in the dpp::interaction class

Enumerator
it_ping 

ping

it_application_command 

application command (slash command)

it_component_button 

button click (component interaction)

it_autocomplete 

Autocomplete interaction.

it_modal_submit 

Modal form submission (experimental)

◆ loglevel

Log levels.

Enumerator
ll_trace 

Trace.

ll_debug 

Debug.

ll_info 

Information.

ll_warning 

Warning.

ll_error 

Error.

ll_critical 

Critical.

◆ message_flags

Bitmask flags for a dpp::message.

Enumerator
m_crossposted 

this message has been published to subscribed channels (via Channel Following)

m_is_crosspost 

this message originated from a message in another channel (via Channel Following)

m_suppress_embeds 

do not include any embeds when serializing this message

m_source_message_deleted 

the source message for this crosspost has been deleted (via Channel Following)

m_urgent 

this message came from the urgent message system

m_has_thread 

this message has an associated thread, with the same id as the message

m_ephemeral 

this message is only visible to the user who invoked the Interaction

m_loading 

this message is an Interaction Response and the bot is "thinking"

◆ message_type

Message types for dpp::message::type.

Enumerator
mt_default 

Default.

mt_recipient_add 

Add recipient.

mt_recipient_remove 

Remove recipient.

mt_call 

Call.

mt_channel_name_change 

Channel name change.

mt_channel_icon_change 

Channel icon change.

mt_channel_pinned_message 

Message pinned.

mt_guild_member_join 

Member joined.

mt_user_premium_guild_subscription 

Boost.

mt_user_premium_guild_subscription_tier_1 

Boost level 1.

mt_user_premium_guild_subscription_tier_2 

Boost level 2.

mt_user_premium_guild_subscription_tier_3 

Boost level 3.

mt_channel_follow_add 

Follow channel.

mt_guild_discovery_disqualified 

Disqualified from discovery.

mt_guild_discovery_requalified 

Re-qualified for discovery.

mt_guild_discovery_grace_period_initial_warning 

Discovery grace period warning 1.

mt_guild_discovery_grace_period_final_warning 

Discovery grace period warning 2.

mt_thread_created 

Thread Created.

mt_reply 

Reply.

mt_application_command 

Application command.

mt_thread_starter_message 

Thread starter message.

mt_guild_invite_reminder 

Invite reminder.

mt_context_menu_command 

Context Menu Command.

◆ mfa_level_t

enum dpp::mfa_level_t : uint8_t

MFA level for server. If set to elevated all moderators need MFA to perform specific actions such as kick or ban.

Enumerator
mfa_none 

MFA not elevated.

mfa_elevated 

MFA elevated.

◆ overwrite_type

enum dpp::overwrite_type : uint8_t

channel permission overwrite types

Enumerator
ot_role 

Role.

ot_member 

Member.

◆ parameter_type

Parameter types when registering a command. We don't pass these in when triggering the command in the handler, because it is expected the developer added the command so they know what types to expect for each named parameter.

Enumerator
pt_string 

String value.

pt_role 

Role object.

pt_channel 

Channel object.

pt_user 

User object.

pt_integer 

64 bit signed integer

pt_double 

double floating point

pt_boolean 

boolean

◆ presence_flags

Presence flags bitmask.

Enumerator
p_desktop_online 

Desktop: Online.

p_desktop_dnd 

Desktop: DND.

p_desktop_idle 

Desktop: Idle.

p_web_online 

Web: Online.

p_web_dnd 

Web: DND.

p_web_idle 

Web: Idle.

p_mobile_online 

Mobile: Online.

p_mobile_dnd 

Mobile: DND.

p_mobile_idle 

Mobile: Idle.

p_status_online 

General: Online.

p_status_dnd 

General: DND.

p_status_idle 

General: Idle.

◆ presence_status

enum dpp::presence_status : uint8_t

Online presence status values.

Enumerator
ps_offline 

Offline.

ps_online 

Online.

ps_dnd 

DND.

ps_idle 

Idle.

◆ region

enum dpp::region : uint8_t

Represents voice regions for guilds and channels.

Deprecated:
Deprecated in favour of per-channel regions. Please use channel::rtc_region instead.
Enumerator
r_brazil 

Brazil.

r_central_europe 

Central Europe.

r_hong_kong 

Hong Kong.

r_india 

India.

r_japan 

Japan.

r_russia 

Russia.

r_singapore 

Singapore.

r_south_africa 

South Africa.

r_sydney 

Sydney.

r_us_central 

US Central.

r_us_east 

US East Coast.

r_us_south 

US South.

r_us_west 

US West Coast.

r_western_europe 

Western Europe.

◆ role_flags

enum dpp::role_flags : uint8_t

Various flags related to dpp::role

Enumerator
r_hoist 

Hoisted role.

r_managed 

Managed role (introduced by a bot or application)

r_mentionable 

Mentionable with a ping.

r_premium_subscriber 

This is set for the role given to nitro.

◆ role_permissions

enum dpp::role_permissions : uint64_t

Represents the various discord permissions.

Enumerator
p_create_instant_invite 

allows creation of instant invites

p_kick_members 

allows kicking members

p_ban_members 

allows banning members

p_administrator 

allows all permissions and bypasses channel permission overwrites

p_manage_channels 

allows management and editing of channels

p_manage_guild 

allows management and editing of the guild

p_add_reactions 

allows for the addition of reactions to messages

p_view_audit_log 

allows for viewing of audit logs

p_priority_speaker 

allows for using priority speaker in a voice channel

p_stream 

allows the user to go live

p_view_channel 

allows guild members to view a channel, which includes reading messages in text channels

p_send_messages 

allows for sending messages in a channel

p_send_tts_messages 

allows for sending of /tts messages

p_manage_messages 

allows for deletion of other users messages

p_embed_links 

links sent by users with this permission will be auto-embedded

p_attach_files 

allows for uploading images and files

p_read_message_history 

allows for reading of message history

p_mention_everyone 

allows for using the everyone and the here tag to notify users in a channel

p_use_external_emojis 

allows the usage of custom emojis from other servers

p_view_guild_insights 

allows for viewing guild insights

p_connect 

allows for joining of a voice channel

p_speak 

allows for speaking in a voice channel

p_mute_members 

allows for muting members in a voice channel

p_deafen_members 

allows for deafening of members in a voice channel

p_move_members 

allows for moving of members between voice channels

p_use_vad 

allows for using voice-activity-detection in a voice channel

p_change_nickname 

allows for modification of own nickname

p_manage_nicknames 

allows for modification of other users nicknames

p_manage_roles 

allows management and editing of roles

p_manage_webhooks 

allows management and editing of webhooks

p_manage_emojis_and_stickers 

allows management and editing of emojis and stickers

p_use_application_commands 

allows members to use application commands, including slash commands and context menus

p_request_to_speak 

allows for requesting to speak in stage channels. (Discord: This permission is under active development and may be changed or removed.)

p_manage_events 

allows for management (creation, updating, deleting, starting) of scheduled events

p_manage_threads 

allows for deleting and archiving threads, and viewing all private threads

p_create_public_threads 

allows for creating threads

p_create_private_threads 

allows for creating private threads

p_use_external_stickers 

allows the usage of custom stickers from other servers

p_send_messages_in_threads 

allows for sending messages in threads

p_start_embedded_activities 

allows for launching activities (applications with the EMBEDDED flag) in a voice channel

p_moderate_members 

allows for timing out users to prevent them from sending or reacting to messages in chat and threads, and from speaking in voice and stage channels

◆ slashcommand_contextmenu_type

Right-click context menu types.

Enumerator
ctxm_none 

Undefined context menu type.

ctxm_chat_input 

DEFAULT, these are the slash commands you're used to.

ctxm_user 

Add command to user context menu.

ctxm_message 

Add command to message context menu.

◆ stage_privacy_level

enum dpp::stage_privacy_level : uint8_t

Represents the privacy of a stage instance.

Enumerator
sp_public 

The Stage instance is visible publicly, such as on Stage Discovery.

sp_guild_only 

The Stage instance is visible to only guild members.

◆ sticker_format

enum dpp::sticker_format : uint8_t

The file format (png, apng, lottie) of a sticker.

Enumerator
sf_png 
sf_apng 
sf_lottie 

◆ sticker_type

enum dpp::sticker_type : uint8_t

Represents the type of a sticker.

Enumerator
st_standard 

Nitro pack sticker.

st_guild 

Guild sticker.

◆ team_member_status

enum dpp::team_member_status : uint8_t

status of a member of a team who maintain a bot/application

Enumerator
tms_invited 

User was invited to the team.

tms_accepted 

User has accepted membership onto the team.

◆ text_style_type

enum dpp::text_style_type : uint8_t

Types of text input.

Enumerator
text_short 

Intended for short single-line text.

text_paragraph 

Intended for much longer inputs.

◆ time_format

enum dpp::time_format : uint8_t

Timestamp formats for dpp::utility::timestamp()

Note
These values are the actual character values specified by the Discord API and should not be changed unless the Discord API changes the specification! They have been sorted into numerical order of their ASCII value to keep C++ happy.
Enumerator
tf_long_date 

"20 April 2021" - Long Date

tf_long_datetime 

"Tuesday, 20 April 2021 16:20" - Long Date/Time

tf_relative_time 

"2 months ago" - Relative Time

tf_long_time 

"16:20:30" - Long Time

tf_short_date 

"20/04/2021" - Short Date

tf_short_datetime 

"20 April 2021 16:20" - Short Date/Time

tf_short_time 

"16:20" - Short Time

◆ user_flags

enum dpp::user_flags : uint32_t

Various bitmask flags used to represent information about a dpp::user.

Enumerator
u_bot 

User is a bot.

u_system 

User is a system user (Clyde!)

u_mfa_enabled 

User has multi-factor authentication enabled.

u_verified 

User is verified (verified email address)

u_nitro_full 

User has full nitro.

u_nitro_classic 

User has nitro classic.

u_discord_employee 

User is discord staff.

u_partnered_owner 

User owns a partnered server.

u_hypesquad_events 

User is a member of hypesquad events.

u_bughunter_1 

User has BugHunter level 1.

u_house_bravery 

User is a member of House Bravery.

u_house_brilliance 

User is a member of House Brilliance.

u_house_balanace 

User is a member of House Balance.

u_early_supporter 

User is an early supporter.

u_team_user 

User is a team user.

u_bughunter_2 

User is has Bug Hunter level 2.

u_verified_bot 

User is a verified bot.

u_verified_bot_dev 

User has the Early Verified Bot Developer badge.

u_animated_icon 

User's icon is animated.

u_certified_moderator 

User is a certified moderator.

u_bot_http_interactions 

User is a bot using HTTP interactions (shows online even when not connected to a websocket)

◆ verification_level_t

enum dpp::verification_level_t : uint8_t

Guild verification level.

Enumerator
ver_none 

unrestricted

ver_low 

must have verified email on account

ver_medium 

must be registered on Discord for longer than 5 minutes

ver_high 

must be a member of the server for longer than 10 minutes

ver_very_high 

must have a verified phone number

◆ voiceregion_flags

Flags related to a voice region.

Enumerator
v_optimal 
v_deprecated 
v_custom 
v_vip 

◆ voicestate_flags

Bit mask flags relating to voice states.

Enumerator
vs_deaf 

Deafened.

vs_mute 

Muted.

vs_self_mute 

Self Muted.

vs_self_deaf 

Self Deafened.

vs_self_stream 

Self Streaming.

vs_self_video 

Self Video.

vs_suppress 

Suppression.

◆ webhook_type

Defines types of webhook.

Enumerator
w_incoming 

Incoming webhook.

w_channel_follower 

Channel following webhook.

◆ websocket_protocol_t

enum dpp::websocket_protocol_t : uint8_t
Enumerator
ws_json 
ws_etf 

◆ ws_opcode

enum dpp::ws_opcode : uint8_t

Low-level websocket opcodes for frames.

Enumerator
OP_CONTINUATION 

Continuation.

OP_TEXT 

Text frame.

OP_BINARY 

Binary frame.

OP_CLOSE 

Close notification with close code.

OP_PING 

Low level ping.

OP_PONG 

Low level pong.

◆ ws_state

enum dpp::ws_state : uint8_t

Websocket connection status.

Enumerator
HTTP_HEADERS 

Sending/receiving HTTP headers, acting as a standard HTTP connection. This is the state prior to receiving "HTTP/1.1 101 Switching Protocols" from the server side.

CONNECTED 

Connected as a websocket, and "upgraded". Now talking using binary frames.

Function Documentation

◆ base64_encode()

std::string dpp::base64_encode ( unsigned char const *  buf,
unsigned int  buffer_length 
)

Base64 encode data into a string.

Parameters
bufRaw binary buffer
buffer_lengthBuffer length to encode
Returns
The base64 encoded string

◆ bool_not_null()

bool dpp::bool_not_null ( const nlohmann::json j,
const char *  keyname 
)

Returns a boolean value from a json field value, if defined, else returns false.

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
Returns
found value

◆ find_channel()

DPP_EXPORT channel * dpp::find_channel ( snowflake  id)

◆ find_emoji()

DPP_EXPORT emoji * dpp::find_emoji ( snowflake  id)

◆ find_guild()

DPP_EXPORT guild * dpp::find_guild ( snowflake  id)

◆ find_guild_member()

guild_member DPP_EXPORT dpp::find_guild_member ( const snowflake  guild_id,
const snowflake  user_id 
)

Get the guild_member from cache of given IDs.

Parameters
guild_idID of the guild to find guild_member for
user_idID of the user to find guild_member for
Exceptions
dpp::cache_exceptionif the guild or guild_member is not found in the cache
Returns
guild_member the cached object, if found

◆ find_role()

DPP_EXPORT role * dpp::find_role ( snowflake  id)

◆ find_user()

DPP_EXPORT user * dpp::find_user ( snowflake  id)

◆ from_json() [1/8]

void dpp::from_json ( const nlohmann::json j,
autocomplete_interaction ai 
)

helper function to deserialize an autocomplete_interaction from json

See also
https://github.com/nlohmann/json#arbitrary-types-conversions
Parameters
joutput json object
aiautocomplete_interaction to be deserialized

◆ from_json() [2/8]

void dpp::from_json ( const nlohmann::json j,
command_data_option cdo 
)

helper function to deserialize a command_data_option from json

See also
https://github.com/nlohmann/json#arbitrary-types-conversions
Parameters
joutput json object
cdocommand_data_option to be deserialized

◆ from_json() [3/8]

void dpp::from_json ( const nlohmann::json j,
command_interaction ci 
)

helper function to deserialize a command_interaction from json

See also
https://github.com/nlohmann/json#arbitrary-types-conversions
Parameters
joutput json object
cicommand_interaction to be deserialized

◆ from_json() [4/8]

void dpp::from_json ( const nlohmann::json j,
component_interaction bi 
)

helper function to deserialize a component_interaction from json

See also
https://github.com/nlohmann/json#arbitrary-types-conversions
Parameters
joutput json object
bibutton_interaction to be deserialized

◆ from_json() [5/8]

void dpp::from_json ( const nlohmann::json j,
guild_member gm 
)

helper function to deserialize a guild_member from json

See also
https://github.com/nlohmann/json#arbitrary-types-conversions
Parameters
joutput json object
gmguild_member to be deserialized

◆ from_json() [6/8]

void dpp::from_json ( const nlohmann::json j,
interaction i 
)

helper function to deserialize an interaction from json

See also
https://github.com/nlohmann/json#arbitrary-types-conversions
Parameters
joutput json object
iinteraction to be deserialized

◆ from_json() [7/8]

void dpp::from_json ( const nlohmann::json j,
user u 
)

helper function to deserialize a user from json

See also
https://github.com/nlohmann/json#arbitrary-types-conversions
Parameters
joutput json object
uuser to be deserialized

◆ from_json() [8/8]

void dpp::from_json ( const nlohmann::json j,
user_identified u 
)

helper function to deserialize a user_identified from json

See also
https://github.com/nlohmann/json#arbitrary-types-conversions
Parameters
joutput json object
uuser to be deserialized

◆ garbage_collection()

void DPP_EXPORT dpp::garbage_collection ( )

Run garbage collection across all caches removing deleted items that have been deleted over 60 seconds ago.

◆ get_channel_cache()

DPP_EXPORT cache< channel > * dpp::get_channel_cache ( )

◆ get_channel_count()

DPP_EXPORT uint64_t dpp::get_channel_count ( )

◆ get_emoji_cache()

DPP_EXPORT cache< emoji > * dpp::get_emoji_cache ( )

◆ get_emoji_count()

DPP_EXPORT uint64_t dpp::get_emoji_count ( )

◆ get_guild_cache()

DPP_EXPORT cache< guild > * dpp::get_guild_cache ( )

◆ get_guild_count()

DPP_EXPORT uint64_t dpp::get_guild_count ( )

◆ get_role_cache()

DPP_EXPORT cache< role > * dpp::get_role_cache ( )

◆ get_role_count()

DPP_EXPORT uint64_t dpp::get_role_count ( )

◆ get_user_cache()

DPP_EXPORT cache< user > * dpp::get_user_cache ( )

◆ get_user_count()

DPP_EXPORT uint64_t dpp::get_user_count ( )

◆ int16_not_null()

uint16_t dpp::int16_not_null ( const nlohmann::json j,
const char *  keyname 
)

Returns a 16 bit unsigned integer from a json field value, if defined, else returns 0.

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
Returns
found value

◆ int32_not_null()

uint32_t dpp::int32_not_null ( const nlohmann::json j,
const char *  keyname 
)

Returns a 32 bit unsigned integer from a json field value, if defined, else returns 0.

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
Returns
found value

◆ int64_not_null()

uint64_t dpp::int64_not_null ( const nlohmann::json j,
const char *  keyname 
)

Returns a 64 bit unsigned integer from a json field value, if defined, else returns 0. DO NOT use this for snowflakes, as usually snowflakes are wrapped in a string!

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
Returns
found value

◆ int8_not_null()

uint8_t dpp::int8_not_null ( const nlohmann::json j,
const char *  keyname 
)

Returns an 8 bit unsigned integer from a json field value, if defined, else returns 0.

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
Returns
found value

◆ set_bool_not_null()

void dpp::set_bool_not_null ( const nlohmann::json j,
const char *  keyname,
bool &  v 
)

Sets a boolean from a json field value, if defined, else does nothing.

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
vValue to change

◆ set_int16_not_null()

void dpp::set_int16_not_null ( const nlohmann::json j,
const char *  keyname,
uint16_t &  v 
)

Sets an unsigned 16 bit integer from a json field value, if defined, else does nothing.

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
vValue to change

◆ set_int32_not_null()

void dpp::set_int32_not_null ( const nlohmann::json j,
const char *  keyname,
uint32_t &  v 
)

Sets an unsigned 32 bit integer from a json field value, if defined, else does nothing.

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
vValue to change

◆ set_int64_not_null()

void dpp::set_int64_not_null ( const nlohmann::json j,
const char *  keyname,
uint64_t &  v 
)

Sets an unsigned 64 bit integer from a json field value, if defined, else does nothing.

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
vValue to change

◆ set_int8_not_null()

void dpp::set_int8_not_null ( const nlohmann::json j,
const char *  keyname,
uint8_t &  v 
)

Sets an unsigned 8 bit integer from a json field value, if defined, else does nothing.

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
vValue to change

◆ set_snowflake_not_null()

void dpp::set_snowflake_not_null ( const nlohmann::json j,
const char *  keyname,
uint64_t &  v 
)

Sets a snowflake id from a json field value, if defined, else does nothing.

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
vValue to change

◆ set_string_not_null()

void dpp::set_string_not_null ( const nlohmann::json j,
const char *  keyname,
std::string &  v 
)

Sets a string from a json field value, if defined, else does nothing.

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
vValue to change

◆ set_ts_not_null()

void dpp::set_ts_not_null ( const nlohmann::json j,
const char *  keyname,
time_t &  v 
)

Sets an timestamp from a json field value containing an ISO8601 string, if defined, else does nothing.

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
vValue to change

◆ snowflake_not_null()

uint64_t dpp::snowflake_not_null ( const nlohmann::json j,
const char *  keyname 
)

Returns a snowflake id from a json field value, if defined, else returns 0.

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
Returns
found value

◆ string_not_null()

std::string dpp::string_not_null ( const nlohmann::json j,
const char *  keyname 
)

Returns a string from a json field value, if defined, else returns an empty string.

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
Returns
found value

◆ to_json() [1/7]

void dpp::to_json ( nlohmann::json j,
const command_option opt 
)

helper function to serialize a command_option to json

See also
https://github.com/nlohmann/json#arbitrary-types-conversions
Parameters
joutput json object
optcommand_option to be serialized

◆ to_json() [2/7]

void dpp::to_json ( nlohmann::json j,
const command_option_choice choice 
)

helper function to serialize a command_option_choice to json

See also
https://github.com/nlohmann/json#arbitrary-types-conversions
Parameters
joutput json object
choicecommand_option_choice to be serialized

◆ to_json() [3/7]

void dpp::to_json ( nlohmann::json j,
const command_permission cp 
)

helper function to serialize a command_permission to json

See also
https://github.com/nlohmann/json#arbitrary-types-conversions
Parameters
joutput json object
cpcommand_permission to be serialized

◆ to_json() [4/7]

void dpp::to_json ( nlohmann::json j,
const guild_command_permissions gcp 
)

helper function to serialize a guild_command_permissions to json

See also
https://github.com/nlohmann/json#arbitrary-types-conversions
Parameters
joutput json object
gcpguild_command_permissions to be serialized

◆ to_json() [5/7]

void dpp::to_json ( nlohmann::json j,
const permission_overwrite po 
)

◆ to_json() [6/7]

void dpp::to_json ( nlohmann::json j,
const slashcommand cmd 
)

helper function to serialize a slashcommand to json

See also
https://github.com/nlohmann/json#arbitrary-types-conversions
Parameters
joutput json object
cmdslashcommand to be serialized

◆ to_json() [7/7]

void dpp::to_json ( nlohmann::json j,
const thread_metadata tmdata 
)

◆ ts_not_null()

time_t dpp::ts_not_null ( const nlohmann::json j,
const char *  keyname 
)

Returns a time_t from an ISO8601 timestamp field in a json value, if defined, else returns epoch value of 0.

Parameters
jnlohmann::json instance to retrieve value from
keynamekey name to check for a value
Returns
found value

◆ ts_to_string()

std::string dpp::ts_to_string ( time_t  ts)

Convert time_t unix epoch to std::string ISO date/time.

Parameters
tsTimestamp to convert
Returns
std::string Converted time/date string

◆ url_encode()

std::string dpp::url_encode ( const std::string &  value)

Encodes a url parameter similar to php urlencode()

Parameters
valueString to encode
Returns
* std::string URL encoded string

Variable Documentation

◆ __next_handle

DPP_EXPORT event_handle dpp::__next_handle
extern

◆ AUTOCOMPLETE_MAX_CHOICES

const size_t dpp::AUTOCOMPLETE_MAX_CHOICES = 25

Discord limits the maximum number of replies to an autocomplete interaction to 25. This value represents that maximum. interaction_response::add_autocomplete_choice does not allow adding more than this number of elements to the vector.

◆ deletion_mutex

DPP_EXPORT std::mutex dpp::deletion_mutex
extern

◆ deletion_queue

DPP_EXPORT std::unordered_map<managed*, time_t> dpp::deletion_queue
extern

◆ FORMAT_VERSION

const uint8_t dpp::FORMAT_VERSION = 131

Current ETF format version in use

D++ Library version 10.0.35D++ Library version 10.0.34D++ Library version 10.0.33D++ Library version 10.0.32D++ Library version 10.0.31D++ Library version 10.0.30D++ Library version 10.0.29D++ Library version 10.0.28D++ Library version 10.0.27D++ Library version 10.0.26D++ Library version 10.0.25D++ Library version 10.0.24D++ Library version 10.0.23D++ Library version 10.0.22D++ 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