| D++ (DPP) C++ Discord API Bot Library

Search
Loading...
Searching...
No Matches
dpp Namespace Reference

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

## Namespaces

namespace | cache_policy
| Contains a set of predefined cache policies for use when constructing a dpp::cluster.
namespace | colors
| predefined color constants.
namespace | compat
namespace | dave
namespace | detail
| Implementation details for internal use only.
namespace | embed_type
| Represents possible values for the dpp::embed type field. These are loosely defined by the API docs and do not influence how the client renders embeds.
namespace | events
| Route interaction event.
namespace | unicode_emoji
| Emoji unicodes.
namespace | utility
| Utility helper functions, generally for logging, running programs, time/date manipulation, etc.

## Classes

struct | active_thread_info
| A thread alongside the bot's optional thread_member object tied to it. More...
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...
struct | activity_assets
| An activity asset are the images and the hover text displayed in the rich presence. More...
struct | activity_button
| An activity button is a custom button shown in the rich presence. Can be to join a game or whatever. More...
struct | activity_party
| Information for the current party of the player. More...
struct | activity_secrets
| Secrets for Rich Presence joining and spectating. More...
class | address_t
| Represents an IPv4 address for use with socket functions such as bind(). 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_install_params
| Represents the settings for the bot/application's in-app authorization link. More...
class | application_role_connection
| The application role connection that an application has attached to a user. More...
class | application_role_connection_metadata
| Application Role Connection Metadata. Represents a role connection metadata for an dpp::application. More...
class | async
| A co_await-able object handling an API call in parallel with the caller. More...
struct | async_dummy
struct | attachment
| Represents an attachment in a dpp::message. More...
class | audio_mixer
| A class for audio mixing operations using x64 instructions. 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 entries 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...
struct | automod_action
| Represents an automod action. More...
struct | automod_metadata
| Metadata associated with an automod action. Different fields are relevant based on the value of dpp::automod_rule::trigger_type. More...
class | automod_rule
| Represents an automod rule. More...
struct | automod_rule_create_t
| Create automod rule. More...
struct | automod_rule_delete_t
| Delete automod rule. More...
struct | automod_rule_execute_t
| Execute/trigger automod rule. More...
struct | automod_rule_update_t
| Update automod rule. More...
class | awaitable
| Generic awaitable class, represents a future value that can be co_await-ed on. More...
struct | awaitable_dummy
class | ban
| The ban class represents a ban on a guild. More...
class | basic_awaitable
class | basic_promise
| Generic promise class, represents the owning potion of an asynchronous value. More...
class | bignumber
| An arbitrary length integer number. Officially, the Discord documentation says that permission values can be any arbitrary number of digits. At time of writing there are only 50 bits of permissions, but this is set to grow larger and potentially past 64 bits. They will continue to send this data as a huge single integer at that point, because this is obviously sensible. /s. 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. You can use the interaction::get_resolved_* methods to easily get a resolved set. 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 | 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_default_value
| A Default value structure for components. 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...
struct | context_menu_t
| Base class for context menu interactions, e.g. right click on user or message. More...
class | coroutine
| Base type for a coroutine, starts on co_await. More...
struct | coroutine_dummy
struct | dave_binary_header_t
| DAVE E2EE Binary frame header. 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...
struct | discord_webhook_server
| Creates a HTTP server which listens for incoming Discord interactions, and if verified as valid, raises them as cluster events, returning the response back. Note that Discord requires all interaction endpoints to have a valid SSL certificate (not self signed) so in most cases you should put this port behind a reverse proxy, e.g. nginx, apache, etc. More...
struct | dns_cache_entry
| Represents a cached DNS result. Used by the ssl_connection class to store cached copies of dns lookups. 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 or dpp::component (v2). 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...
class | entitlement
| A definition of a discord entitlement. More...
struct | entitlement_create_t
| Delete stage instance. More...
struct | entitlement_delete_t
| Delete stage instance. More...
struct | entitlement_update_t
| Delete stage instance. 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. Multiple listeners may attach to the event_router_t by means of operator(). Passing a lambda into operator() attaches to the event. 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
| On form submitted. More...
struct | forum_tag
| Represents a tag that is able to be applied to a thread in a forum or media channel. More...
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_audit_log_entry_create_t
| Guild audit log entry create. 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...
struct | http_connect_info
| Represents a HTTP scheme, hostname and port split into parts for easy use in https_client. 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...
struct | http_server
| Creates a simple HTTP server which listens on a TCP port for a plaintext or SSL incoming request, and passes that request to a callback to generate the response. More...
class | http_server_request
class | https_client
| Implements a HTTPS socket client based on the SSL client. More...
class | integration
| Represents an integration on a guild, e.g. a connection to twitch. More...
struct | integration_account
| The account information for an integration. More...
struct | integration_app
| An application that has been integrated. More...
struct | integration_configuration
| Configuration object for an app installation. 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. This is further split into the events on_form_submit, on_slashcommand, on_user_context_menu, on_button_click, on_select_menu, etc. More...
struct | interaction_create_t
| Create interaction. More...
struct | interaction_metadata_type
| Metadata about the interaction, including the source of the interaction and relevant server and user IDs. 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 | invalid_token_exception
| Represents an attempt to construct a cluster with an invalid bot token. 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 | job
| Extremely light coroutine object designed to send off a coroutine to execute on its own. Can be used in conjunction with coroutine events via event routers, or on its own. More...
struct | job_dummy
struct | json_interface
| Represents an interface for an object that can optionally implement functions for converting to and from nlohmann::json. The methods are only present if the actual object also has those methods. 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_context_menu_t
| Event parameter for context menu interactions for messages. 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_file_data
| The data for a file attached to a message. More...
class | message_pin
| Represents a pinned message. More...
struct | message_poll_vote_add_t
| Message poll vote add. More...
struct | message_poll_vote_remove_t
| Message poll vote remove. 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_search_params
| Parameters for searching messages within a guild. More...
struct | message_search_result
| Represents the result of a guild message search. More...
struct | message_snapshot
struct | message_update_t
| Message update. More...
class | moveable_promise
| Generic promise class, represents the owning potion of an asynchronous value. More...
struct | moving_averager
struct | multipart_content
| Represents a multipart mime body and the correct top-level mime type If a non-multipart request is passed in, this is represented as a plain body and the application/json mime type. More...
struct | onboarding
| Represents a guild's onboarding flow. More...
struct | onboarding_prompt
| Represents an onboarding prompt. More...
struct | onboarding_prompt_option
| Represents an onboarding prompt option. 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 | partial_emoji
| An emoji reference for a component (select menus included) or a poll. More...
class | permission
| Represents a permission bitmask (refer to enum dpp::permissions) which are held in an uint64_t. More...
struct | permission_overwrite
| Channel permission overwrites. More...
struct | poll
| Represents a poll. More...
struct | poll_answer
| Represents an answer in a poll. More...
struct | poll_media
| Structure representing a poll media, for example the poll question or a possible poll answer. More...
struct | poll_results
| Represents the results of a poll. 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 | raii_socket
| Allocates a dpp::socket, closing it on destruction. More...
struct | reaction
| Represents 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_concurrency_queue

Represents a timer instance in a pool handling requests to HTTP(S) servers. There are several of these, the total defined by a constant in cluster.cpp, and each one will always receive requests for the same rate limit bucket based on its endpoint portion of the url. This makes rate limit handling reliable and easy to manage. Each of these also has its own mutex, making it thread safe to call and use these from anywhere in the code. 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 | signature_verifier
| Verifies signatures on incoming webhooks using OpenSSL. More...
class | sku
| A definition of a discord SKU. More...
class | slashcommand
| Represents an application command, created by your bot either globally, or on a guild. More...
struct | slashcommand_t
| User has issued a slash command. More...
class | snowflake
| A container for a 64 bit unsigned value representing many things on discord. This value is known in distributed computing as a snowflake value. More...
struct | socket_close_t
| Closure of socket (removal from socket engine). More...
struct | socket_engine_base

This is the base class for socket engines. The actual implementation is OS specific and the correct implementation is detected by CMake. It is then compiled specifically into DPP so only one implementation can exist in the implementation. All implementations should behave identically to the user, abstracting out implementation-specific behaviours (e.g. difference between edge and level triggered event mechanisms etc). More...

struct | socket_events
| Represents an active socket event set in the socket engine. More...
struct | socket_listener
| Listens on a TCP socket for new connections, and whenever a new connection is received, accept it and spawn a new connection of type T. More...
struct | socket_stats
| Contains statistics about the IO loop. More...
class | ssl_connection
| Implements a simple non-blocking SSL stream connection. 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 | task
| A coroutine task. It starts immediately on construction and can be co_await-ed, making it perfect for parallel coroutines returning a value. More...
class | task_cancelled_exception
| Represents the cancellation of a task. Will be thrown to the awaiter of a cancelled task. More...
struct | task_dummy
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_pool
| A thread pool contains 1 or more worker threads which accept thread_pool_task lambadas into a queue, which is processed in-order by whichever thread is free. More...
struct | thread_pool_task
| A task within a thread pool. A simple lambda that accepts no parameters and returns void. More...
struct | thread_pool_task_comparator
| Compares two thread pool tasks by priority. 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_comparator
| Used to compare two timers next tick times in a priority queue. More...
struct | timer_t
| Used internally to store state of active timers. 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...
struct | user_context_menu_t
| Event parameter for context menu interactions for users. 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...
class | voice_channel_effect
| Represents a voice channel effect e.g. a soundboard sound or an emoji reaction. More...
struct | voice_channel_effect_send_t
| Voice channel effect send. More...
struct | voice_client_disconnect_t
| voice client disconnect event More...
struct | voice_client_platform_t
| voice client platform type notification 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 ready 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...
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
| Defines a channel on a server's welcome screen. More...
struct | welcome_screen
| Defines a server's welcome screen. More...
class | when_any
| Experimental class to co_await on a bunch of awaitable objects, resuming when the first one completes. On completion, returns a result object that contains the index of the awaitable that finished first. A user can call result::index() and result::get<N>() on the result object to get the result, similar to std::variant. More...
class | zlibcontext
| This is an opaque class containing zlib library specific structures. This wraps the C pointers needed for zlib with unique_ptr and gives us a nice buffer abstraction so we don't need to wrestle with raw pointers. More...

## Concepts

concept | awaitable_type
| Concept to check if a type can be used with co_await.

## Typedefs

using | active_threads = std::map<snowflake, active_thread_info>
| A map of threads alongside optionally the thread_member tied to the bot if it is in the thread. The map's key is the thread id. Returned from the cluster::threads_get_active method.
typedef std::unordered_map< snowflake, application > | application_map
| A group of applications.
typedef std::vector< application_role_connection_metadata > | application_role_connection_metadata_list
| A group of dpp::application_role_connection_metadata objects.
typedef std::unordered_map< snowflake, automod_rule > | automod_rule_map
typedef std::unordered_map< snowflake, ban > | ban_map
| A group of bans. The key is the user ID.
typedef dpp::collector< dpp::channel_create_t, dpp::channel > | channel_collector_t
| Template type for base class of channel collector.
typedef std::unordered_map< snowflake, channel > | channel_map
| A group of channels.
using | command_completion_event_t = std::function<void(const confirmation_callback_t&)>
| A function used as a callback for any REST based command.
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.
typedef std::variant< std::monostate, int64_t, double > | command_option_range
| A minimum or maximum value/length for dpp::co_number, dpp::co_integer and dpp::co_string types of a dpp::command_option. The int64_t is for the integer range or string length that can be entered. The double is for the decimal range that can be entered.
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.
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 dpp::command_option_type. It is used in interactions.
using | component_emoji = partial_emoji
| An emoji for a component. Alias to partial_emoji, for backwards compatibility.

typedef std::variant< active_threads, application_role_connection, application_role_connection_metadata_list, confirmation, message, message_map, message_pin_map, user, user_identified, user_map, guild_member, guild_member_map, channel, channel_map, thread_member, thread_member_map, guild, guild_map, guild_command_permissions, guild_command_permissions_map, role, role_map, invite, invite_map, dtemplate, dtemplate_map, emoji, emoji_map, ban, ban_map, voiceregion, voiceregion_map, voicestate, 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_map, automod_rule, automod_rule_map, onboarding, welcome_screen, entitlement, entitlement_map, sku, sku_map, message_search_result >

confirmable_t

| A container for types that can be returned for a REST API call.
typedef std::unordered_map< snowflake, connection > | connection_map
| A group of connections.
using | dns_cache_t = std::unordered_map<std::string, std::unique_ptr<dns_cache_entry>>
| Cache container type.
typedef std::unordered_map< snowflake, dtemplate > | dtemplate_map
| A container of invites.
typedef std::unordered_map< snowflake, emoji > | emoji_map
| Group of emojis.
typedef std::unordered_map< snowflake, entitlement > | entitlement_map
| Group of entitlements.
typedef size_t | event_handle
| A returned event handle for an event which was attached.
typedef std::unordered_map< snowflake, event_member > | event_member_map
| A group of scheduled event members.
using | full_reconnection_callback_t = std::function<void()>
| A callback for a full reconnection after the voice client disconnects due to error.
typedef std::unordered_map< snowflake, guild_command_permissions > | guild_command_permissions_map
| A group of guild command permissions.
typedef std::unordered_map< snowflake, guild > | guild_map
| A container of guilds.
typedef std::unordered_map< snowflake, guild_member > | guild_member_map
| A container of guild members.
typedef std::function< void(const http_request_completion_t &)> | http_completion_event
| Results of HTTP requests are called back to these std::function types.
typedef std::multimap< std::string, std::string > | http_headers
| Request headers.
using | http_server_request_event = std::function<void(class http_server_request*)>
| Callback type for HTTP server request callbacks.
using | https_client_completion_event = std::function<void(class https_client*)>
typedef std::unordered_map< snowflake, integration > | integration_map
| A group of integrations.
typedef std::unordered_map< std::string, invite > | invite_map
| A container of invites.
using | json = nlohmann::json
typedef std::function< void(json &, const http_request_completion_t &)> | json_encode_t
| Automatically JSON encoded HTTP result.
typedef std::unordered_map< snowflake, guild_member > | members_container
| Guild members container.
typedef dpp::collector< dpp::message_create_t, dpp::message > | message_collector_t
| Template type for base class of message collector.
typedef std::unordered_map< snowflake, message > | message_map
| A group of messages.
typedef std::unordered_map< snowflake, message_pin > | message_pin_map
| A group of pinned messages.
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.
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 doesn't guarantee any order at all) and std::map, which reorders keys alphabetically.
typedef std::unordered_map< snowflake, presence > | presence_map
| A container of presences.
using | privacy_code_callback_t = std::function<void(const std::string&)>
| A callback for obtaining a user's privacy code. The privacy code is returned as the parameter to the function.
template<typename T>
using | promise = moveable_promise<T>
typedef dpp::collector< dpp::message_reaction_add_t, dpp::collected_reaction > | reaction_collector_t
| Template type for base class of message reaction collector.
typedef std::map< uint32_t, time_t > | reconnect_list
| List of shards awaiting reconnection, by id with earliest possible reconnect time.
typedef dpp::collector< dpp::guild_role_create_t, dpp::role > | role_collector_t
| Template type for base class of role collector.
typedef std::unordered_map< snowflake, role > | role_map
| A group of roles.
using | role_permissions = permissions
| Represents the various discord permissions.
typedef dpp::collector< dpp::guild_scheduled_event_create_t, dpp::scheduled_event > | scheduled_event_collector_t
| Template type for base class of scheduled event collector.
typedef std::unordered_map< snowflake, scheduled_event > | scheduled_event_map
| A group of scheduled events.
typedef std::map< uint32_t, class discord_client * > | shard_list
| A list of shards.
typedef std::unordered_map< snowflake, sku > | sku_map
| Group of SKUs.
typedef std::unordered_map< snowflake, slashcommand > | slashcommand_map
| A group of application slash commands.
using | socket = int
| Represents a socket file descriptor. This is used to ensure parity between windows and unix-like systems.
using | socket_container = std::unordered_map<dpp::socket, std::unique_ptr<socket_events>>
| Container of event sets keyed by socket file descriptor.
using | socket_error_event = std::function<void(dpp::socket fd, const struct socket_events&, int error_code)>
| Error event.
using | socket_read_event = std::function<void(dpp::socket fd, const struct socket_events&)>
| Read ready event.
using | socket_write_event = std::function<void(dpp::socket fd, const struct socket_events&)>
| Write ready event.
typedef std::unordered_map< snowflake, stage_instance > | stage_instance_map
| A group of stage instances.
typedef std::unordered_map< snowflake, sticker > | sticker_map
| A group of stickers.
typedef std::unordered_map< snowflake, sticker_pack > | sticker_pack_map
| A group of sticker packs.
typedef dpp::collector< dpp::thread_create_t, dpp::thread > | thread_collector_t
| Template type for base class of thread collector.
typedef std::unordered_map< snowflake, thread > | thread_map
| A group of threads.
typedef std::unordered_map< snowflake, thread_member > | thread_member_map
| A group of thread member objects. the key is the user_id of the dpp::thread_member.
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.
typedef std::function< void(timer)> | timer_callback_t
| The type for a timer callback.
typedef std::priority_queue< timer_t, std::vector< timer_t >, timer_comparator > | timer_next_t
| A priority timers, ordered by earliest first so that the head is always the soonest to be due.
typedef std::set< timer > | timers_deleted_t
| A set of deleted timer handles.
typedef std::unordered_map< snowflake, user > | user_map
| A group of users.
using | voice_connection_gateway_request_callback_t = std::function<void(discord_client*)>
| Callback to send a Gateway request to start a new voice connection.
typedef std::unordered_map< std::string, voiceregion > | voiceregion_map
| A group of voice regions.
typedef std::unordered_map< std::string, voicestate > | voicestate_map
typedef std::unordered_map< snowflake, webhook > | webhook_map
| A group of webhooks.
using | work_unit = std::function<void()>
| A work unit is a lambda executed in the thread pool.

## Enumerations

enum | activity_flags { af_instance = 0b000000001 , af_join = 0b000000010 , af_spectate = 0b000000100 , af_join_request = 0b000001000 , af_sync = 0b000010000 , af_play = 0b000100000 , af_party_privacy_friends = 0b001000000 , af_party_privacy_voice_channel = 0b010000000 , af_embedded = 0b100000000 }
| Activity types for rich presence. 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 | animation_types : uint8_t { at_premium = 0 , at_basic = 1 }
| Animation types that a voice channel effect can have. More...
enum | application_event_webhook_status : uint8_t { ews_disabled = 1 , ews_enabled = 2 , ews_disabled_by_discord = 3 }
| Status indicating whether event webhooks are enabled or disabled for an application. More...

enum

application_flags : uint32_t {
apf_application_automod_rule_create_badge = (1 << 6) , 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) , apf_application_command_badge = (1 << 23)
}

| Flags for a bot or application. More...
enum | application_integration_types : uint8_t { ait_guild_install = 0 , ait_user_install = 1 }
| Where an app can be installed, also called its supported installation contexts. More...
enum | application_role_connection_metadata_type : uint8_t { rc_integer_less_than_or_equal = 1 , rc_integer_greater_than_or_equal = 2 , rc_integer_equal = 3 , rc_integer_not_equal = 4 , rc_datetime_less_than_or_equal = 5 , rc_datetime_greater_than_or_equal = 6 , rc_boolean_equal = 7 , rc_boolean_not_equal = 8 }
| Application Role Connection Metadata Type. More...
enum | attachment_flags : uint8_t { a_is_remix = 1 << 2 }
| Bitmask flags for a dpp::attachment. More...

enum

audit_type {
aut_guild_update = 1 , aut_channel_create = 10 , aut_channel_update = 11 , aut_channel_delete = 12 ,
aut_channel_overwrite_create = 13 , aut_channel_overwrite_update = 14 , aut_channel_overwrite_delete = 15 , aut_member_kick = 20 ,
aut_member_prune = 21 , aut_member_ban_add = 22 , aut_member_ban_remove = 23 , aut_member_update = 24 ,
aut_member_role_update = 25 , aut_member_move = 26 , aut_member_disconnect = 27 , aut_bot_add = 28 ,
aut_role_create = 30 , aut_role_update = 31 , aut_role_delete = 32 , aut_invite_create = 40 ,
aut_invite_update = 41 , aut_invite_delete = 42 , aut_webhook_create = 50 , aut_webhook_update = 51 ,
aut_webhook_delete = 52 , aut_emoji_create = 60 , aut_emoji_update = 61 , aut_emoji_delete = 62 ,
aut_message_delete = 72 , aut_message_bulk_delete = 73 , aut_message_pin = 74 , aut_message_unpin = 75 ,
aut_integration_create = 80 , aut_integration_update = 81 , aut_integration_delete = 82 , aut_stage_instance_create = 83 ,
aut_stage_instance_update = 84 , aut_stage_instance_delete = 85 , aut_sticker_create = 90 , aut_sticker_update = 91 ,
aut_sticker_delete = 92 , aut_guild_scheduled_event_create = 100 , aut_guild_scheduled_event_update = 101 , aut_guild_scheduled_event_delete = 102 ,
aut_thread_create = 110 , aut_thread_update = 111 , aut_thread_delete = 112 , aut_appcommand_permission_update = 121 ,
aut_automod_rule_create = 140 , aut_automod_rule_update = 141 , aut_automod_rule_delete = 142 , aut_automod_block_message = 143 ,
aut_automod_flag_to_channel = 144 , aut_automod_user_communication_disabled = 145 , aut_creator_monetization_request_created = 150 , aut_creator_monetization_terms_accepted = 151
}

| Defines types of audit log entry. More...
enum | auto_archive_duration_t : uint8_t { arc_1_hour = 1 , arc_1_day = 2 , arc_3_days = 3 , arc_1_week = 4 }
| Auto archive duration of threads which will stop showing in the channel list after the specified period of inactivity. Defined as an enum to fit into 1 byte. Internally it'll be translated to minutes to match the API. More...
enum | automod_action_type : uint8_t { amod_action_block_message = 1 , amod_action_send_alert = 2 , amod_action_timeout = 3 }
| Action types to perform on filtering. More...
enum | automod_event_type : uint8_t { amod_message_send = 1 }
| Event types, only message send is currently supported. More...
enum | automod_preset_type : uint8_t { amod_preset_profanity = 1 , amod_preset_sexual_content = 2 , amod_preset_slurs = 3 }
| Possible types of preset filter lists. More...
enum | automod_trigger_type : uint8_t { amod_type_keyword = 1 , amod_type_harmful_link = 2 , amod_type_spam = 3 , amod_type_keyword_preset = 4 , amod_type_mention_spam = 5 }
| Types of moderation to trigger. More...
enum class | build_type { universal , debug , release }
| Represents a build configuration. On some platforms (e.g. Windows) release isn't compatible with debug, so we use this enum to detect it. 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 | channel_flags : uint16_t { c_nsfw = 0b0000000000010000 , c_video_quality_720p = 0b0000000000100000 , c_lock_permissions = 0b0000000001000000 , c_pinned_thread = 0b0000000010000000 , c_require_tag = 0b0000000100000000 , c_hide_media_download_options = 0b0001000000000000 }
| Our flags as stored in the object. More...
enum | channel_type : uint8_t { CHANNEL_TEXT = 0 , DM = 1 , CHANNEL_VOICE = 2 , GROUP_DM = 3 , CHANNEL_CATEGORY = 4 , CHANNEL_ANNOUNCEMENT = 5 , CHANNEL_STORE = 6 , CHANNEL_ANNOUNCEMENT_THREAD = 10 , CHANNEL_PUBLIC_THREAD = 11 , CHANNEL_PRIVATE_THREAD = 12 , CHANNEL_STAGE = 13 , CHANNEL_DIRECTORY = 14 , CHANNEL_FORUM = 15 , CHANNEL_MEDIA = 16 }
| Flag integers as received from and sent to discord. More...
enum | client_platform_t : uint8_t { client_platform_desktop = 0 , client_platform_mobile = 1 }
| Discord voice platform types. More...
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 , co_attachment = 11 }
| Represents command option types. These are the possible parameter value types. More...
enum | command_permission_type { cpt_role = 1 , cpt_user = 2 }
| type of permission in the dpp::command_permission class More...
enum | component_default_value_type : uint8_t { cdt_user = 0 , cdt_role = 1 , cdt_channel = 2 }
enum | component_style : uint8_t { cos_primary = 1 , cos_secondary , cos_success , cos_danger , cos_link , cos_premium }
| Represents the style of a button. More...

enum

component_type : uint8_t {
cot_action_row = 1 , cot_button = 2 , cot_selectmenu = 3 , cot_text = 4 ,
cot_user_selectmenu = 5 , cot_role_selectmenu = 6 , cot_mentionable_selectmenu = 7 , cot_channel_selectmenu = 8 ,
cot_section = 9 , cot_text_display = 10 , cot_thumbnail = 11 , cot_media_gallery = 12 ,
cot_file = 13 , cot_separator = 14 , cot_content_inventory_entry = 16 , cot_container = 17 ,
cot_label = 18 , cot_file_upload = 19
}

| Represents the type of a component. More...
enum | dave_version_t : uint8_t { dave_version_none = 0 , dave_version_1 = 1 }
| Supported DAVE (Discord Audio Visual Encryption) protocol versions. More...
enum | default_forum_sort_order_t : uint8_t { so_latest_activity = 0 , so_creation_date = 1 }
| Types for sort posts in a forum channel. More...
enum | default_message_notification_t : uint8_t { dmn_all = 0 , dmn_only_mentions = 1 }
| Default message notification level. 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 | entitlement_flags : uint8_t { ent_deleted = 0b0000001 , ent_consumed = 0b0000010 }
| Entitlement flags. More...
enum | entitlement_type : uint8_t { PURCHASE = 1 , PREMIUM_SUBSCRIPTION = 2 , DEVELOPER_GIFT = 3 , TEST_MODE_PURCHASE = 4 , FREE_PURCHASE = 5 , USER_GIFT = 6 , PREMIUM_PURCHASE = 7 , APPLICATION_SUBSCRIPTION = 8 }
| The type of entitlement. 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 | event_entity_type : uint8_t { eet_stage_instance = 1 , eet_voice = 2 , eet_external = 3 }
| Event entity types. More...
enum | event_privacy_level : uint8_t { ep_guild_only = 2 }
| Represents the privacy of an event. More...
enum | event_status : uint8_t { es_scheduled = 1 , es_active = 2 , es_completed = 3 , es_cancelled = 4 }
| Event status types. More...

enum

exception_error_code {
err_no_code_specified = 0 , err_zlib_see_errno = -1 , err_zlib_init_stream = -2 , err_zlib_init_data = -3 ,
err_zlib_init_mem = -4 , err_zlib_init_buffer = -5 , err_zlib_init_version = -6 , err_opus_bad_arg = -11 ,
err_opus_buffer_too_small = -12 , err_opus_internal_error = -13 , err_opus_invalid_packet = -14 , err_opus_unimplemented = -15 ,
err_opus_invalid_state = -16 , err_opus_alloc_fail = -17 , err_dns_bad_flags = -21 , err_name_or_service_unknown = -22 ,
err_dns_again = -23 , err_dns_fail = -24 , err_dns_family = -26 , err_dns_socket_type = -27 ,
err_dns_service = -28 , err_dns_memory = -30 , err_dns_system_error = -31 , err_dns_overflow = -32 ,
err_ssl_new = 1 , err_ssl_connect = 2 , err_write = 3 , err_ssl_write = 4 ,
err_no_sessions_left = 5 , err_auto_shard = 6 , err_reconnection = 7 , err_bind_failure = 8 ,
err_nonblocking_failure = 9 , err_voice_terminating = 10 , err_connect_failure = 11 , err_ssl_context = 12 ,
err_ssl_version = 13 , err_invalid_socket = 14 , err_socket_error = 15 , err_websocket_proto_already_set = 16 ,
err_command_handler_not_ready = 17 , err_no_owning_message = 18 , err_cancelled_event = 19 , err_event_status = 20 ,
err_event_start_time = 21 , err_event_end_time = 22 , err_command_has_caps = 23 , err_choice_autocomplete = 24 ,
err_interaction = 25 , err_too_many_component_rows = 26 , err_invalid_webhook = 27 , err_voice_state_timestamp = 28 ,
err_no_voice_support = 29 , err_invalid_voice_packet_length = 30 , err_opus = 31 , err_cant_start_shard = 32 ,
err_etf = 33 , err_cache = 34 , err_icon_size = 35 , err_massive_audio = 36 ,
err_unknown = 37 , err_bad_request = 400 , err_unauthorized = 401 , err_payment_required = 402 ,
err_forbidden = 403 , err_not_found = 404 , err_method_not_allowed = 405 , err_not_acceptable = 406 ,
err_proxy_auth_required = 407 , err_request_timeout = 408 , err_conflict = 409 , err_gone = 410 ,
err_length_required = 411 , err_precondition_failed = 412 , err_payload_too_large = 413 , err_uri_too_long = 414 ,
err_unsupported_media_type = 415 , err_range_not_satisfiable = 416 , err_expectation_failed = 417 , err_im_a_teapot = 418 ,
err_page_expired = 419 , err_twitter_rate_limited = 420 , err_misdirected_request = 421 , err_unprocessable_content = 422 ,
err_webdav_locked = 423 , err_webdav_failed_dependency = 424 , err_too_early = 425 , err_upgrade_required = 426 ,
err_precondition_required = 428 , err_rate_limited = 429 , err_request_headers_too_large = 431 , err_page_blocked = 450 ,
err_unavailable_for_legal_reasons = 451 , err_http_request_on_https_port = 497 , err_internal_server_error = 500 , err_not_implemented = 501 ,
err_bad_gateway = 502 , err_service_unavailable = 503 , err_gateway_timeout = 504 , err_http_version_not_supported = 505 ,
err_variant_also_negotiates = 506 , err_webdav_insufficient_storage = 507 , err_webdav_loop_detected = 508 , err_bandwidth_limit_exceeded = 509 ,
err_not_extended = 510 , err_network_auth_required = 511 , err_web_server_down = 521 , err_connection_timed_out = 522 ,
err_origin_unreachable = 523 , err_timeout = 524 , err_ssl_handshake_failed = 525 , err_invalid_ssl_certificate = 526 ,
err_railgun = 527 , err_cloudflare = 530 , err_websocket_unknown = 4000 , err_websocket_bad_opcode = 4001 ,
err_websocket_decode = 4002 , err_websocket_not_authenticated = 4003 , err_websocket_authentication_failed = 4004 , err_websocket_already_authenticated = 4005 ,
err_websocket_invalid_seq_number = 4007 , err_websocket_rate_limited = 4008 , err_websocket_session_timeout = 4009 , err_websocket_invalid_shard = 4010 ,
err_websocket_sharding_required = 4011 , err_websocket_invalid_api_version = 4012 , err_websocket_invalid_intents = 4013 , err_websocket_disallowed_intents = 4014 ,
err_websocket_voice_disconnected = 4014 , err_websocket_voice_server_crashed = 4015 , err_websocket_voice_unknown_encryption = 4016 , err_compression_stream = 6000 ,
err_compression_data = 6001 , err_compression_memory = 6002 , err_unknown_account = 10001 , err_unknown_application = 10002 ,
err_unknown_channel = 10003 , err_unknown_guild = 10004 , err_unknown_integration = 10005 , err_unknown_invite = 10006 ,
err_unknown_member = 10007 , err_unknown_message = 10008 , err_unknown_permission_overwrite = 10009 , err_unknown_provider = 10010 ,
err_unknown_role = 10011 , err_unknown_token = 10012 , err_unknown_user = 10013 , err_unknown_emoji = 10014 ,
err_unknown_webhook = 10015 , err_unknown_webhook_service = 10016 , err_unknown_session = 10020 , err_unknown_ban = 10026 ,
err_unknown_sku = 10027 , err_unknown_store_listing = 10028 , err_unknown_entitlement = 10029 , err_unknown_build = 10030 ,
err_unknown_lobby = 10031 , err_unknown_branch = 10032 , err_unknown_store_directory_layout = 10033 , err_unknown_redistributable = 10036 ,
err_unknown_gift_code = 10038 , err_unknown_stream = 10049 , err_unknown_premium_server_subscribe_cooldown = 10050 , err_unknown_guild_template = 10057 ,
err_unknown_discoverable_server_category = 10059 , err_unknown_sticker = 10060 , err_unknown_interaction = 10062 , err_unknown_application_command = 10063 ,
err_unknown_voice_state = 10065 , err_unknown_application_command_permissions = 10066 , err_unknown_stage_instance = 10067 , err_unknown_guild_member_verification_form = 10068 ,
err_unknown_guild_welcome_screen = 10069 , err_unknown_guild_scheduled_event = 10070 , err_unknown_guild_scheduled_event_user = 10071 , err_unknown_tag = 10087 ,
err_bots_cannot_use_this_endpoint = 20001 , err_only_bots_can_use_this_endpoint = 20002 , err_explicit_content = 20009 , err_unauthorized_for_application = 20012 ,
err_slowmode_rate_limit = 20016 , err_owner_only = 20018 , err_announcement_rate_limit = 20022 , err_under_minimum_age = 20024 ,
err_write_rate_limit = 20029 , err_stage_banned_words = 20031 , err_guild_premium_subscription_level_too_low = 20035 , err_guilds = 30001 ,
err_friends = 30002 , err_pins_for_the_channel = 30003 , err_recipients = 30004 , err_guild_roles = 30005 ,
err_webhooks = 30007 , err_emojis = 30008 , err_reactions = 30010 , err_group_dms = 30011 ,
err_guild_channels = 30013 , err_attachments_in_a_message = 30015 , err_invites = 30016 , err_animated_emojis = 30018 ,
err_server_members = 30019 , err_server_categories = 30030 , err_guild_already_has_a_template = 30031 , err_application_commands = 30032 ,
err_thread_participants = 30033 , err_daily_application_command_creates = 30034 , err_bans_for_non_guild_members_have_been_exceeded = 30035 , err_bans_fetches = 30037 ,
err_uncompleted_guild_scheduled_events = 30038 , err_stickers = 30039 , err_prune_requests = 30040 , err_guild_widget_settings_updates = 30042 ,
err_edits_to_messages_older_than_1_hour = 30046 , err_pinned_threads_in_a_forum_channel = 30047 , err_tags_in_a_forum_channel = 30048 , err_bitrate_is_too_high_for_channel_of_this_type = 30052 ,
err_premium_emojis = 30056 , err_webhooks_per_guild = 30058 , err_channel_permission_overwrites = 30060 , err_the_channels_for_this_guild_are_too_large = 30061 ,
err_unauthorized_invalid_token = 40001 , err_verify_your_account = 40002 , err_you_are_opening_direct_messages_too_fast = 40003 , err_send_messages_has_been_temporarily_disabled = 40004 ,
err_request_entity_too_large = 40005 , err_this_feature_has_been_temporarily_disabled_server_side = 40006 , err_the_user_is_banned_from_this_guild = 40007 , err_connection_has_been_revoked = 40012 ,
err_target_user_is_not_connected_to_voice = 40032 , err_this_message_has_already_been_crossposted = 40033 , err_an_application_command_with_that_name_already_exists = 40041 , err_application_interaction_failed_to_send = 40043 ,
err_cannot_send_a_message_in_a_forum_channel = 40058 , err_interaction_has_already_been_acknowledged = 40060 , err_tag_names_must_be_unique = 40061 , err_service_resource_is_being_rate_limited = 40062 ,
err_no_tags_available = 40066 , err_tag_required = 40067 , err_entitlement_already_granted = 40074 , err_missing_access = 50001 ,
err_invalid_account_type = 50002 , err_cannot_execute_action_on_a_dm_channel = 50003 , err_guild_widget_disabled = 50004 , err_cannot_edit_a_message_by_other_user = 50005 ,
err_cannot_send_empty_message = 50006 , err_cannot_send_messages_to_this_user = 50007 , err_cannot_send_messages_in_a_non_text_channel = 50008 , err_channel_verification_level_too_high = 50009 ,
err_oauth2_application_does_not_have_a_bot = 50010 , err_oauth2_application_limit = 50011 , err_invalid_oauth2_state = 50012 , err_permissions = 50013 ,
err_invalid_authentication_token = 50014 , err_note_was_too_long = 50015 , err_too_few_or_too_many_messages = 50016 , err_invalid_mfa_level = 50017 ,
err_invalid_pin = 50019 , err_invite_code_invalid = 50020 , err_system_message = 50021 , err_channel_type = 50024 ,
err_invalid_oauth2_access_token = 50025 , err_missing_required_oauth2_scope = 50026 , err_invalid_webhook_token = 50027 , err_invalid_role = 50028 ,
err_invalid_recipients = 50033 , err_too_old_to_bulk_delete = 50034 , err_invalid_form_body = 50035 , err_invite_error = 50036 ,
err_invalid_activity_action = 50039 , err_invalid_api_version_provided = 50041 , err_file_uploaded_exceeds_the_maximum_size = 50045 , err_invalid_file_uploaded = 50046 ,
err_cannot_self_redeem_this_gift = 50054 , err_invalid_guild = 50055 , err_invalid_sku = 50057 , err_invalid_request_origin = 50067 ,
err_invalid_message_type = 50068 , err_payment_source_required = 50070 , err_cannot_modify_a_system_webhook = 50073 , err_cannot_delete_a_channel_required_for_community_guilds = 50074 ,
err_cannot_edit_stickers_within_a_message = 50080 , err_invalid_sticker_sent = 50081 , err_tried_to_perform_an_operation_on_an_archived_thread = 50083 , err_invalid_thread_notification_settings = 50084 ,
err_before_value_is_earlier_than_the_thread_creation_date = 50085 , err_community_server_channels_must_be_text_channels = 50086 , err_bad_event_entity_type = 50091 , err_this_server_is_not_available_in_your_location = 50095 ,
err_monetization_enabled_in_order_to_perform_this_action = 50097 , err_more_boosts_to_perform_this_action = 50101 , err_the_request_body_contains_invalid_json = 50109 , err_owner_cannot_be_pending_member = 50131 ,
err_ownership_cannot_be_transferred_to_a_bot_user = 50132 , err_failed_to_resize_asset_below_the_maximum_size = 50138 , err_cannot_mix_subscription_and_non_subscription_roles_for_an_emoji = 50144 , err_cannot_convert_between_premium_emoji_and_normal_emoji = 50145 ,
err_uploaded_file_not_found = 50146 , err_voice_messages_do_not_support_additional_content = 50159 , err_voice_messages_must_have_a_single_audio_attachment = 50160 , err_voice_messages_must_have_supporting_metadata = 50161 ,
err_voice_messages_cannot_be_edited = 50162 , err_cannot_delete_guild_subscription_integration = 50163 , err_you_cannot_send_voice_messages_in_this_channel = 50173 , err_the_user_account_must_first_be_verified = 50178 ,
err_you_do_not_have_permission_to_send_this_sticker = 50600 , err_two_factor_is_required_for_this_operation = 60003 , err_no_users_with_discordtag_exist = 80004 , err_reaction_was_blocked = 90001 ,
err_user_cannot_use_burst_reactions = 90002 , err_application_not_yet_available = 110001 , err_api_resource_is_currently_overloaded = 130000 , err_the_stage_is_already_open = 150006 ,
err_cannot_reply_without_permission_to_read_message_history = 160002 , err_a_thread_has_already_been_created_for_this_message = 160004 , err_thread_is_locked = 160005 , err_active_threads = 160006 ,
err_active_announcement_threads = 160007 , err_invalid_json_for_uploaded_lottie_file = 170001 , err_uploaded_lotties_cannot_contain_rasterized_images = 170002 , err_sticker_maximum_framerate = 170003 ,
err_sticker_frame_count = 170004 , err_lottie_animation_dimensions = 170005 , err_sticker_frame_rate = 170006 , err_sticker_animation_duration = 170007 ,
err_cannot_update_a_finished_event = 180000 , err_failed_to_create_stage_needed_for_stage_event = 180002 , err_message_was_blocked_by_automatic_moderation = 200000 , err_title_was_blocked_by_automatic_moderation = 200001 ,
err_webhooks_posted_to_forum_channels_must_have_a_thread_name_or_thread_id = 220001 , err_webhooks_posted_to_forum_channels_cannot_have_both_a_thread_name_and_thread_id = 220002 , err_webhooks_can_only_create_threads_in_forum_channels = 220003 , err_webhook_services_cannot_be_used_in_forum_channels = 220004 ,
err_message_blocked_links = 240000 , err_cannot_enable_onboarding_requirements_are_not_met = 350000 , err_cannot_update_onboarding_below_requirements = 350001
}

| Exception error codes possible for dpp::exception::code(). More...
enum | forum_layout_type : uint8_t { fl_not_set = 0 , fl_list_view = 1 , fl_gallery_view = 2 }
| Types of forum layout views that indicates how the threads in a forum channel will be displayed for users by default. More...
enum | guild_afk_timeout_t : uint8_t { afk_off , afk_60 , afk_300 , afk_900 , afk_1800 , afk_3600 }
| Voice AFK timeout values for guild::afk_timeout. 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

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_role_subscription_enabled = 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_creator_store_page_enabled = 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_flags_extra : uint16_t {
g_premium_progress_bar_enabled = 0b0000000000000001 , g_animated_banner = 0b0000000000000010 , g_auto_moderation = 0b0000000000000100 , g_invites_disabled = 0b0000000000001000 ,
g_developer_support_server = 0b0000000000010000 , g_no_role_subscription_notifications = 0b0000000000100000 , g_no_role_subscription_notification_replies = 0b0000000001000000 , g_role_subscriptions_available_for_purchase = 0b0000000010000000 ,
g_raid_alerts_disabled = 0b0000000100000000
}

| Additional boolean flag values for guild, as guild_flags is full. More...

enum

guild_member_flags : uint16_t {
gm_deaf = 0b0000000000000001 , gm_mute = 0b0000000000000010 , gm_pending = 0b0000000000000100 , gm_animated_avatar = 0b0000000000001000 ,
gm_voice_action = 0b0000000000010000 , gm_did_rejoin = 0b0000000000100000 , gm_completed_onboarding = 0b0000000001000000 , gm_bypasses_verification = 0b0000000010000000 ,
gm_started_onboarding = 0b0000000100000000 , gm_roles_action = 0b0000001000000000 , gm_nickname_action = 0b0000010000000000
}

| 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_premium_tier_t : uint8_t { tier_none = 0 , tier_1 = 1 , tier_2 = 2 , tier_3 = 3 }
| The guild's premium tier. More...
enum | http_error : uint8_t { 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. Most of these are currently unused in https_client. More...
enum | http_method { m_get , m_post , m_put , m_patch , m_delete }
| Various types of http method supported by the Discord API. More...
enum | http_state : uint8_t { HTTPS_HEADERS , HTTPS_CONTENT , HTTPS_DONE , HTTPS_CHUNK_LEN , HTTPS_CHUNK_TRAILER , HTTPS_CHUNK_LAST , HTTPS_CHUNK_CONTENT }
| HTTP connection status. More...
enum | image_type : uint8_t { i_png , i_jpg , i_gif , i_webp }
| Supported image types for profile pictures and CDN endpoints. More...
enum | integration_flags : uint8_t { if_enabled = 0b00000001 , if_syncing = 0b00000010 , if_emoticons = 0b00000100 , if_revoked = 0b00001000 , if_expire_kick = 0b00010000 }
| Integration flags. More...
enum | integration_type : uint8_t { i_twitch , i_youtube , i_discord , i_guild_subscription }
| Integration types. 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_message_content = (1 << 15) ,
i_guild_scheduled_events = (1 << 16) , i_auto_moderation_configuration = (1 << 20) , i_auto_moderation_execution = (1 << 21) , i_guild_message_polls = (1 << 24) ,
i_direct_message_polls = (1 << 25) , i_default_intents , i_privileged_intents = dpp::i_guild_members | dpp::i_guild_presences | dpp::i_message_content , i_all_intents = dpp::i_default_intents | dpp::i_privileged_intents ,
i_unverified_default_intents = dpp::i_default_intents | dpp::i_message_content
}

| intents are a bitmask of allowed events on your websocket. More...
enum | interaction_context_type { itc_guild = 0 , itc_bot_dm = 1 , itc_private_channel = 2 }
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 , ir_premium_required = 10 }
| Response types when responding to an interaction within on_interaction_create. More...
enum | interaction_type { it_ping = 1 , it_application_command = 2 , it_component_button = 3 , it_autocomplete = 4 , it_modal_submit = 5 }
enum | invite_target_t : uint8_t { itt_none = 0 , itt_stream = 1 , itt_embedded_application = 2 }
| Invite target types for dpp::invite. More...
enum | loglevel { ll_trace = 0 , ll_debug , ll_info , ll_warning , ll_error , ll_critical }
| Log levels. More...
enum | media_loading_state : uint8_t { ls_unknown = 0 , ls_loading = 1 , ls_loaded_success = 2 , ls_not_found = 3 }
| Loading state for "unfurled" media, e.g. thumbnails and images in a message or component. More...

enum

message_flags : uint16_t {
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 ,
m_thread_mention_failed = 1 << 8 , m_suppress_notifications = 1 << 12 , m_is_voice_message = 1 << 13 , m_has_snapshot = 1 << 14 ,
m_using_components_v2 = 1 << 15
}

| Bitmask flags for a dpp::message. More...
enum | message_search_has : uint8_t { has_image , has_sound , has_video , has_file , has_sticker , has_embed , has_link , has_poll , has_snapshot }
| Possible values for the "has" filter in message search. More...
enum | message_search_order : uint8_t { sort_desc , sort_asc }
| Sort order for message search results. More...
enum | message_search_sort : uint8_t { sort_timestamp , sort_relevance }
| Sort mode for message search results. More...

enum

message_type : uint8_t {
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 , mt_auto_moderation_action = 24 ,
mt_role_subscription_purchase = 25 , mt_interaction_premium_upsell = 26 , mt_stage_start = 27 , mt_stage_end = 28 ,
mt_stage_speaker = 29 , mt_stage_topic = 31 , mt_application_premium_subscription = 32
}

| Message types for dpp::message::type. 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 | onboarding_mode : uint8_t { gom_default = 0 , gom_advanced = 1 }
| The onboarding mode for the dpp::onboarding object. Defines the criteria used to satisfy Onboarding constraints that are required for enabling. More...
enum | onboarding_prompt_flags : uint8_t { opf_single_select = 1 << 0 , opf_required = 1 << 1 , opf_in_onboarding = 1 << 2 }
| Various flags for dpp::onboarding_prompt. More...
enum | onboarding_prompt_type : uint8_t { opt_multiple_choice = 0 , opt_dropdown = 1 }
| The various types of dpp::onboarding_prompt. 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

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_use_embedded_activities = 0x08000000000 ,
p_moderate_members = 0x10000000000 , p_view_creator_monetization_analytics = 0x20000000000 , p_use_soundboard = 0x40000000000 , p_create_guild_expressions = 0x80000000000 ,
p_create_events = 0x0000100000000000 , p_use_external_sounds = 0x0000200000000000 , p_send_voice_messages = 0x0000400000000000 , p_use_clyde_ai = 0x0000800000000000 ,
p_send_polls = 0x0002000000000000 , p_use_external_apps = 0x0004000000000000 , p_pin_messages = 0x0008000000000000 , p_bypass_slowmode = 0x0010000000000000
}

| Represents the various discord permissions. More...
enum | poll_layout_type { pl_default = 1 }
| Poll layout types. 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 , ps_invisible = 4 }
| Online presence status values. More...
enum | raii_socket_type { rst_udp , rst_tcp }
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 | role_flags : uint8_t { r_hoist = 0b00000001 , r_managed = 0b00000010 , r_mentionable = 0b00000100 , r_premium_subscriber = 0b00001000 , r_available_for_purchase = 0b00010000 , r_guild_connections = 0b00100000 , r_in_prompt = 0b01000000 }
| Various flags related to dpp::role. More...
enum | separator_spacing : uint8_t { sep_small = 1 , sep_large = 2 }
| Spacing types for components v2 separator. More...
enum | shard_frame_type : int { ft_dispatch = 0 , ft_heartbeat = 1 , ft_identify = 2 , ft_presence = 3 , ft_voice_state_update = 4 , ft_resume = 6 , ft_reconnect = 7 , ft_request_guild_members = 8 , ft_invalid_session = 9 , ft_hello = 10 , ft_heartbeat_ack = 11 , ft_request_soundboard_sounds = 31 }
| Represents different event opcodes sent and received on a shard websocket. More...
enum | sku_flags : uint16_t { sku_available = 0b000000000000100 , sku_guild_subscription = 0b000000010000000 , sku_user_subscription = 0b000000100000000 }
| SKU flags. More...
enum | sku_type : uint8_t { DURABLE = 2 , CONSUMABLE = 3 , SUBSCRIPTION = 5 , SUBSCRIPTION_GROUP = 6 }
| The type of SKU. More...
enum | slashcommand_contextmenu_type { ctxm_none = 0 , ctxm_chat_input = 1 , ctxm_user = 2 , ctxm_message = 3 }
| Right-click context menu types. More...
enum | socket_event_flags : uint8_t { WANT_READ = 1 , WANT_WRITE = 2 , WANT_ERROR = 4 , WANT_DELETION = 8 }
| Types of IO events a socket may subscribe to. More...
enum | socket_listener_type : uint8_t { li_plaintext , li_ssl }
enum | stage_privacy_level : uint8_t { sp_public = 1 , sp_guild_only = 2 }
| Represents the privacy of a stage instance. More...
enum | start_type : bool { st_wait = false , st_return = true }
| Types of startup for cluster::start(). More...
enum | sticker_format : uint8_t { sf_png = 1 , sf_apng = 2 , sf_lottie = 3 , sf_gif = 4 }
| The file format (png, apng, lottie) of a sticker. More...
enum | sticker_type : uint8_t { st_standard = 1 , st_guild = 2 }
| Represents the type of a sticker. More...
enum | team_member_role_t : uint8_t { tmr_owner , tmr_admin , tmr_developer , tmr_readonly }
| Team member role types for application team members. 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 | text_style_type : uint8_t { text_short = 1 , text_paragraph = 2 }
| Types of text input. More...

enum

user_flags : uint32_t {
u_bot = 0b00000000000000000000000000000001 , u_system = 0b00000000000000000000000000000010 , u_mfa_enabled = 0b00000000000000000000000000000100 , u_verified = 0b00000000000000000000000000001000 ,
u_nitro_full = 0b00000000000000000000000000010000 , u_nitro_classic = 0b00000000000000000000000000100000 , u_discord_employee = 0b00000000000000000000000001000000 , u_partnered_owner = 0b00000000000000000000000010000000 ,
u_hypesquad_events = 0b00000000000000000000000100000000 , u_bughunter_1 = 0b00000000000000000000001000000000 , u_house_bravery = 0b00000000000000000000010000000000 , u_house_brilliance = 0b00000000000000000000100000000000 ,
u_house_balance = 0b00000000000000000001000000000000 , u_early_supporter = 0b00000000000000000010000000000000 , u_team_user = 0b00000000000000000100000000000000 , u_bughunter_2 = 0b00000000000000001000000000000000 ,
u_verified_bot = 0b00000000000000010000000000000000 , u_verified_bot_dev = 0b00000000000000100000000000000000 , u_animated_icon = 0b00000000000001000000000000000000 , u_certified_moderator = 0b00000000000010000000000000000000 ,
u_bot_http_interactions = 0b00000000000100000000000000000000 , u_nitro_basic = 0b00000000001000000000000000000000 , u_active_developer = 0b00000000010000000000000000000000 , u_animated_banner = 0b00000000100000000000000000000000
}

| Various bitmask flags used to represent information about a dpp::user. 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

voice_websocket_opcode_t : uint8_t {
voice_opcode_connection_identify = 0 , voice_opcode_connection_select_protocol = 1 , voice_opcode_connection_ready = 2 , voice_opcode_connection_heartbeat = 3 ,
voice_opcode_connection_description = 4 , voice_opcode_client_speaking = 5 , voice_opcode_connection_heartbeat_ack = 6 , voice_opcode_connection_resume = 7 ,
voice_opcode_connection_hello = 8 , voice_opcode_connection_resumed = 9 , voice_opcode_multiple_clients_connect = 11 , voice_opcode_client_disconnect = 13 ,
voice_opcode_media_sink = 15 , voice_client_flags = 18 , voice_client_platform = 20 , voice_client_dave_prepare_transition = 21 ,
voice_client_dave_execute_transition = 22 , voice_client_dave_transition_ready = 23 , voice_client_dave_prepare_epoch = 24 , voice_client_dave_mls_external_sender = 25 ,
voice_client_dave_mls_key_package = 26 , voice_client_dave_mls_proposals = 27 , voice_client_dave_mls_commit_message = 28 , voice_client_dave_announce_commit_transition = 29 ,
voice_client_dave_mls_welcome = 30 , voice_client_dave_mls_invalid_commit_welcome = 31
}

| Discord voice websocket opcode types. More...
enum | voiceregion_flags { v_optimal = 0x00000001 , v_deprecated = 0x00000010 , v_custom = 0x00000100 }
| 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 , w_application = 3 }
| Defines types of webhook. More...
enum | websocket_protocol_t : uint8_t { ws_json = 0 , ws_etf = 1 }
| Websocket protocol types available on Discord. More...
enum | ws_opcode : uint8_t { OP_CONTINUATION = 0x00 , OP_TEXT = 0x01 , OP_BINARY = 0x02 , OP_CLOSE = 0x08 , OP_PING = 0x09 , OP_PONG = 0x0a , OP_AUTO = 0xff }
| Low-level websocket opcodes for frames. More...
enum | ws_state : uint8_t { HTTP_HEADERS , CONNECTED }
| Websocket connection status. More...

## Functions

std::string DPP_EXPORT | base64_encode (unsigned char const *buf, unsigned int buffer_length)
| Base64 encode data into a string.
bool DPP_EXPORT | bool_not_null (const nlohmann::json *j, const char *keyname)
| Returns a boolean value from a json field value, if defined, else returns false.
DPP_EXPORT bool | close_socket (dpp::socket sfd)
| Close a socket.
async< confirmation_callback_t > | co_application_emoji_create (const class emoji &newemoji)
| Create an Application Emoji.
async< confirmation_callback_t > | co_application_emoji_delete (snowflake emoji_id)
| Delete an Application Emoji.
async< confirmation_callback_t > | co_application_emoji_edit (const class emoji &newemoji)
| Edit an Application Emoji.
async< confirmation_callback_t > | co_application_emoji_get (snowflake emoji_id)
| Get an Application Emoji.
async< confirmation_callback_t > | co_application_emojis_get ()
| List all Application Emojis.
async< confirmation_callback_t > | co_application_role_connection_get (snowflake application_id)
| Get the application's role connection metadata records.
async< confirmation_callback_t > | co_application_role_connection_update (snowflake application_id, const std::vector< application_role_connection_metadata > &connection_metadata)
| Update the application's role connection metadata records.
async< confirmation_callback_t > | co_automod_rule_create (snowflake guild_id, const automod_rule &r)
| Create an auto moderation rule.
async< confirmation_callback_t > | co_automod_rule_delete (snowflake guild_id, snowflake rule_id)
| Delete an auto moderation rule.
async< confirmation_callback_t > | co_automod_rule_edit (snowflake guild_id, const automod_rule &r)
| Edit an auto moderation rule.
async< confirmation_callback_t > | co_automod_rule_get (snowflake guild_id, snowflake rule_id)
| Get a single auto moderation rule.
async< confirmation_callback_t > | co_automod_rules_get (snowflake guild_id)
| Get all auto moderation rules for a guild.
async< confirmation_callback_t > | co_channel_create (const class channel &c)
| Create a channel.
async< confirmation_callback_t > | co_channel_delete (snowflake channel_id)
| Delete a channel.
async< confirmation_callback_t > | co_channel_delete_permission (const class channel &c, snowflake overwrite_id)
| Remove a permission from a channel.
async< confirmation_callback_t > | co_channel_edit (const class channel &c)
| Edit a channel.
async< confirmation_callback_t > | co_channel_edit_permissions (const class channel &c, const snowflake overwrite_id, const uint64_t allow, const uint64_t deny, const bool member)
| Edit a channel's permissions.
async< confirmation_callback_t > | co_channel_edit_permissions (const snowflake channel_id, const snowflake overwrite_id, const uint64_t allow, const uint64_t deny, const bool member)
| Edit a channel's permissions.
async< confirmation_callback_t > | co_channel_edit_positions (const std::vector< channel > &c)
| Edit multiple channels positions.
async< confirmation_callback_t > | co_channel_follow_news (const class channel &c, snowflake target_channel_id)
| Follow an announcement (news) channel.
async< confirmation_callback_t > | co_channel_get (snowflake c)
| Get a channel.
async< confirmation_callback_t > | co_channel_invite_create (const class channel &c, const class invite &i)
| Create invite for a channel.
async< confirmation_callback_t > | co_channel_invites_get (const class channel &c)
| Get invites for a channel.
async< confirmation_callback_t > | co_channel_pins_get (snowflake channel_id)
| Get a channel's pins.
async< confirmation_callback_t > | co_channel_pins_get (snowflake channel_id, std::optional< time_t > before, std::optional< uint64_t > limit)
| Get a channel's pins.
async< confirmation_callback_t > | co_channel_set_voice_status (snowflake channel_id, const std::string &status)
| Set the status of a voice channel.
async< confirmation_callback_t > | co_channel_typing (const class channel &c)
| Trigger channel typing indicator.
async< confirmation_callback_t > | co_channel_typing (snowflake cid)
| Trigger channel typing indicator.
async< confirmation_callback_t > | co_channels_get (snowflake guild_id)
| Get all channels for a guild.
async< confirmation_callback_t > | co_create_dm_channel (snowflake user_id)
| Create a dm channel.
async< confirmation_callback_t > | co_current_application_get ()
| Get current (bot) application.
async< confirmation_callback_t > | co_current_user_connections_get ()
| Get current user's connections (linked accounts, e.g. steam, xbox). This call requires the oauth2 connections scope and cannot be executed against a bot token.
async< confirmation_callback_t > | co_current_user_edit (const std::string &nickname, const std::string &avatar_blob="", const image_type avatar_type=i_png, const std::string &banner_blob="", const image_type banner_type=i_png)
| Edit current (bot) user.
async< confirmation_callback_t > | co_current_user_get ()
| Get current (bot) user.
async< confirmation_callback_t > | co_current_user_get_dms ()
| Get current user DM channels.
async< confirmation_callback_t > | co_current_user_get_guilds ()
| Get current (bot) user guilds.
async< confirmation_callback_t > | co_current_user_get_voice_state (snowflake guild_id)
| Get the bot's voice state in a guild without a Gateway connection.
async< confirmation_callback_t > | co_current_user_join_thread (snowflake thread_id)
| Join a thread.
async< confirmation_callback_t > | co_current_user_leave_guild (snowflake guild_id)
| Leave a guild.
async< confirmation_callback_t > | co_current_user_leave_thread (snowflake thread_id)
| Leave a thread.
async< confirmation_callback_t > | co_current_user_set_voice_state (snowflake guild_id, snowflake channel_id, bool suppress=false, time_t request_to_speak_timestamp=0)
| Set the bot's voice state on a stage channel.
async< confirmation_callback_t > | co_delete_webhook (snowflake webhook_id)
| Delete a webhook.
async< confirmation_callback_t > | co_delete_webhook_message (const class webhook &wh, snowflake message_id, snowflake thread_id=0)
| Delete webhook message.
async< confirmation_callback_t > | co_delete_webhook_with_token (snowflake webhook_id, const std::string &token)
| Delete webhook with token.
async< confirmation_callback_t > | co_direct_message_create (snowflake user_id, const message &m)
| Create a direct message, also create the channel for the direct message if needed.
async< confirmation_callback_t > | co_edit_webhook (const class webhook &wh)
| Edit webhook.
async< confirmation_callback_t > | co_edit_webhook_message (const class webhook &wh, const struct message &m, snowflake thread_id=0)
| Edit webhook message.
async< confirmation_callback_t > | co_edit_webhook_with_token (const class webhook &wh)
| Edit webhook with token (token is encapsulated in the webhook object).
async< confirmation_callback_t > | co_entitlement_consume (snowflake entitlement_id)
| For One-Time Purchase consumable SKUs, marks a given entitlement for the user as consumed.
async< confirmation_callback_t > | co_entitlement_test_create (const class entitlement &new_entitlement)
| Creates a test entitlement to a given SKU for a given guild or user. Discord will act as though that user or guild has entitlement to your premium offering.
async< confirmation_callback_t > | co_entitlement_test_delete (snowflake entitlement_id)
| Deletes a currently-active test entitlement. Discord will act as though that user or guild no longer has entitlement to your premium offering.
async< confirmation_callback_t > | co_entitlements_get (snowflake user_id=0, const std::vector< snowflake > &sku_ids={}, snowflake before_id=0, snowflake after_id=0, uint8_t limit=100, snowflake guild_id=0, bool exclude_ended=false)
| Returns all entitlements for a given app, active and expired.
async< confirmation_callback_t > | co_execute_webhook (const class webhook &wh, const struct message &m, bool wait=false, snowflake thread_id=0, const std::string &thread_name="")
| Execute webhook.
async< confirmation_callback_t > | co_gdm_add (snowflake channel_id, snowflake user_id, const std::string &access_token, const std::string &nick)
| Adds a recipient to a Group DM using their access token.
async< confirmation_callback_t > | co_gdm_remove (snowflake channel_id, snowflake user_id)
| Removes a recipient from a Group DM.
async< confirmation_callback_t > | co_get_channel_webhooks (snowflake channel_id)
| Get channel webhooks.
async< confirmation_callback_t > | co_get_gateway_bot ()
| Get the gateway information for the bot using the token.
async< confirmation_callback_t > | co_get_guild_webhooks (snowflake guild_id)
| Get guild webhooks.
async< confirmation_callback_t > | co_get_voice_regions ()
| Get all voice regions.
async< confirmation_callback_t > | co_get_webhook (snowflake webhook_id)
| Get webhook.
async< confirmation_callback_t > | co_get_webhook_message (const class webhook &wh, snowflake message_id, snowflake thread_id=0)
| Get webhook message.
async< confirmation_callback_t > | co_get_webhook_with_token (snowflake webhook_id, const std::string &token)
| Get webhook using token.
async< confirmation_callback_t > | co_global_bulk_command_create (const std::vector< slashcommand > &commands)
| Create/overwrite global slash commands. Any existing global slash commands will be deleted and replaced with these.
async< confirmation_callback_t > | co_global_bulk_command_delete ()
| Delete all existing global slash commands.
async< confirmation_callback_t > | co_global_command_create (const slashcommand &s)
| Create a global slash command (a bot can have a maximum of 100 of these).
async< confirmation_callback_t > | co_global_command_delete (snowflake id)
| Delete a global slash command (a bot can have a maximum of 100 of these).
async< confirmation_callback_t > | co_global_command_edit (const slashcommand &s)
| Edit a global slash command (a bot can have a maximum of 100 of these).
async< confirmation_callback_t > | co_global_command_get (snowflake id)
| Get a global slash command.
async< confirmation_callback_t > | co_global_commands_get ()
| Get the application's global slash commands.
async< confirmation_callback_t > | co_guild_add_member (const guild_member &gm, const std::string &access_token)
| Add guild member. Needs a specific oauth2 scope, from which you get the access_token.
async< confirmation_callback_t > | co_guild_auditlog_get (snowflake guild_id, snowflake user_id, uint32_t action_type, snowflake before, snowflake after, uint32_t limit)
| Get the audit log for a guild.
async< confirmation_callback_t > | co_guild_ban_add (snowflake guild_id, snowflake user_id, uint32_t delete_message_seconds=0)
| Add guild ban.
async< confirmation_callback_t > | co_guild_ban_delete (snowflake guild_id, snowflake user_id)
| Delete guild ban.
async< confirmation_callback_t > | co_guild_begin_prune (snowflake guild_id, const struct prune &pruneinfo)
| Begin guild prune.
async< confirmation_callback_t > | co_guild_bulk_command_create (const std::vector< slashcommand > &commands, snowflake guild_id)
| Create/overwrite guild slash commands. Any existing guild slash commands on this guild will be deleted and replaced with these.
async< confirmation_callback_t > | co_guild_bulk_command_delete (snowflake guild_id)
| Delete all existing guild slash commands.
async< confirmation_callback_t > | co_guild_bulk_command_edit_permissions (const std::vector< slashcommand > &commands, snowflake guild_id)
| Edit/Overwrite the permissions of all existing slash commands in a guild.
async< confirmation_callback_t > | co_guild_command_create (const slashcommand &s, snowflake guild_id)
| Create a slash command local to a guild.
async< confirmation_callback_t > | co_guild_command_delete (snowflake id, snowflake guild_id)
| Delete a slash command local to a guild.
async< confirmation_callback_t > | co_guild_command_edit (const slashcommand &s, snowflake guild_id)
| Edit a slash command local to a guild.
async< confirmation_callback_t > | co_guild_command_edit_permissions (const slashcommand &s, snowflake guild_id)
| Edit slash command permissions of a guild.
async< confirmation_callback_t > | co_guild_command_get (snowflake id, snowflake guild_id)
| Get a slash command of a guild.
async< confirmation_callback_t > | co_guild_command_get_permissions (snowflake id, snowflake guild_id)
| Get the permissions for a slash command of a guild.
async< confirmation_callback_t > | co_guild_commands_get (snowflake guild_id)
| Get the application's slash commands for a guild.
async< confirmation_callback_t > | co_guild_commands_get_permissions (snowflake guild_id)
| Get all slash command permissions of a guild.
async< confirmation_callback_t > | co_guild_create (const class guild &g)
| Create a guild.
async< confirmation_callback_t > | co_guild_create_from_template (const std::string &code, const std::string &name)
| Create a new guild based on a template.
async< confirmation_callback_t > | co_guild_current_member_edit (snowflake guild_id, const std::string &nickname, const std::string &banner_blob, const image_type banner_type, const std::string &avatar_blob, const image_type avatar_type, const std::string &bio)
| Modify current member.
async< confirmation_callback_t > | co_guild_delete (snowflake guild_id)
| Delete a guild.
async< confirmation_callback_t > | co_guild_delete_integration (snowflake guild_id, snowflake integration_id)
| Delete guild integration.
async< confirmation_callback_t > | co_guild_edit (const class guild &g)
| Edit a guild.
async< confirmation_callback_t > | co_guild_edit_member (const guild_member &gm)
| Edit the properties of an existing guild member.
async< confirmation_callback_t > | co_guild_edit_onboarding (const struct onboarding &o)
| Edit the guild's onboarding configuration.
async< confirmation_callback_t > | co_guild_edit_welcome_screen (snowflake guild_id, const struct welcome_screen &welcome_screen, bool enabled)
| Edit the guild's welcome screen.
async< confirmation_callback_t > | co_guild_edit_widget (snowflake guild_id, const class guild_widget &gw)
| Edit guild widget.
async< confirmation_callback_t > | co_guild_emoji_create (snowflake guild_id, const class emoji &newemoji)
| Create single emoji. You must ensure that the emoji passed contained image data using the emoji::load_image() method.
async< confirmation_callback_t > | co_guild_emoji_delete (snowflake guild_id, snowflake emoji_id)
| Delete a guild emoji.
async< confirmation_callback_t > | co_guild_emoji_edit (snowflake guild_id, const class emoji &newemoji)
| Edit a single emoji.
async< confirmation_callback_t > | co_guild_emoji_get (snowflake guild_id, snowflake emoji_id)
| Get a single emoji.
async< confirmation_callback_t > | co_guild_emojis_get (snowflake guild_id)
| Get all emojis for a guild.
async< confirmation_callback_t > | co_guild_event_create (const scheduled_event &event)
| Create a scheduled event on a guild.
async< confirmation_callback_t > | co_guild_event_delete (snowflake event_id, snowflake guild_id)
| Delete a scheduled event from a guild.
async< confirmation_callback_t > | co_guild_event_edit (const scheduled_event &event)
| Edit/modify a scheduled event on a guild.
async< confirmation_callback_t > | co_guild_event_get (snowflake guild_id, snowflake event_id)
| Get a scheduled event for a guild.
async< confirmation_callback_t > | co_guild_events_get (snowflake guild_id)
| Get all scheduled events for a guild.
async< confirmation_callback_t > | co_guild_get_ban (snowflake guild_id, snowflake user_id)
| Get single guild ban.
async< confirmation_callback_t > | co_guild_get_bans (snowflake guild_id, snowflake before, snowflake after, snowflake limit)
| Get guild ban list.
async< confirmation_callback_t > | co_guild_get_integrations (snowflake guild_id)
| Get guild integrations.
async< confirmation_callback_t > | co_guild_get_invites (snowflake guild_id)
| Get guild invites.
async< confirmation_callback_t > | co_guild_get_member (snowflake guild_id, snowflake user_id)
| Get a guild member.
async< confirmation_callback_t > | co_guild_get_members (snowflake guild_id, uint16_t limit, snowflake after)
| Get all guild members.
async< confirmation_callback_t > | co_guild_get_onboarding (snowflake guild_id)
| Get the guild's onboarding configuration.
async< confirmation_callback_t > | co_guild_get_prune_counts (snowflake guild_id, const struct prune &pruneinfo)
| Get prune counts.
async< confirmation_callback_t > | co_guild_get_vanity (snowflake guild_id)
| Get guild vanity url, if enabled.
async< confirmation_callback_t > | co_guild_get_voice_regions (snowflake guild_id)
| Get guild voice regions.
async< confirmation_callback_t > | co_guild_get_welcome_screen (snowflake guild_id)
| Get the guild's welcome screen.
async< confirmation_callback_t > | co_guild_get_widget (snowflake guild_id)
| Get guild widget.
async< confirmation_callback_t > | co_guild_member_add_role (snowflake guild_id, snowflake user_id, snowflake role_id)
| Add role to guild member.
async< confirmation_callback_t > | co_guild_member_delete (snowflake guild_id, snowflake user_id)
| Remove (kick) a guild member.
async< confirmation_callback_t > | co_guild_member_delete_role (snowflake guild_id, snowflake user_id, snowflake role_id)
| Remove role from guild member.
async< confirmation_callback_t > | co_guild_member_kick (snowflake guild_id, snowflake user_id)
| Remove (kick) a guild member.
async< confirmation_callback_t > | co_guild_member_move (const snowflake channel_id, const snowflake guild_id, const snowflake user_id)
| Moves the guild member to a other voice channel, if member is connected to one. Set the channel_id to 0 to disconnect the user.
async< confirmation_callback_t > | co_guild_member_remove_role (snowflake guild_id, snowflake user_id, snowflake role_id)
| Remove role from guild member.
async< confirmation_callback_t > | co_guild_member_timeout (snowflake guild_id, snowflake user_id, time_t communication_disabled_until)
| Set the timeout of a guild member.
async< confirmation_callback_t > | co_guild_member_timeout_remove (snowflake guild_id, snowflake user_id)
| Remove the timeout of a guild member. A shortcut for guild_member_timeout(guild_id, user_id, 0, callback) Fires a Guild Member Update Gateway event.
async< confirmation_callback_t > | co_guild_messages_search (snowflake guild_id, const message_search_params &params)
| Search for messages in a guild.
async< confirmation_callback_t > | co_guild_modify_integration (snowflake guild_id, const class integration &i)
| Modify guild integration.
async< confirmation_callback_t > | co_guild_search_members (snowflake guild_id, const std::string &query, uint16_t limit)
| Search for guild members based on whether their username or nickname starts with the given string.
async< confirmation_callback_t > | co_guild_set_nickname (snowflake guild_id, const std::string &nickname)
| Change current user nickname.
async< confirmation_callback_t > | co_guild_sticker_create (const sticker &s)
| Create a sticker in a guild.
async< confirmation_callback_t > | co_guild_sticker_delete (snowflake sticker_id, snowflake guild_id)
| Delete a sticker from a guild.
async< confirmation_callback_t > | co_guild_sticker_get (snowflake id, snowflake guild_id)
| Get a guild sticker.
async< confirmation_callback_t > | co_guild_sticker_modify (const sticker &s)
| Modify a sticker in a guild.
async< confirmation_callback_t > | co_guild_stickers_get (snowflake guild_id)
| Get all guild stickers.
async< confirmation_callback_t > | co_guild_sync_integration (snowflake guild_id, snowflake integration_id)
| Sync guild integration.
async< confirmation_callback_t > | co_guild_template_create (snowflake guild_id, const std::string &name, const std::string &description)
| Creates a template for the guild.
async< confirmation_callback_t > | co_guild_template_delete (snowflake guild_id, const std::string &code)
| Deletes the template.
async< confirmation_callback_t > | co_guild_template_modify (snowflake guild_id, const std::string &code, const std::string &name, const std::string &description)
| Modifies the template's metadata.
async< confirmation_callback_t > | co_guild_template_sync (snowflake guild_id, const std::string &code)
| Syncs the template to the guild's current state.
async< confirmation_callback_t > | co_guild_templates_get (snowflake guild_id)
| Get guild templates.
async< confirmation_callback_t > | co_interaction_followup_create (const std::string &token, const message &m)
| Create a followup message for an interaction.
async< confirmation_callback_t > | co_interaction_followup_delete (const std::string &token)
| Delete the initial interaction response.
async< confirmation_callback_t > | co_interaction_followup_edit (const std::string &token, const message &m)
| Edit followup message for an interaction The message ID in the message you pass should be correctly set to that of a followup message you previously sent.
async< confirmation_callback_t > | co_interaction_followup_edit_original (const std::string &token, const message &m)
| Edit original followup message for an interaction This is an alias for cluster::interaction_response_edit.
async< confirmation_callback_t > | co_interaction_followup_get (const std::string &token, snowflake message_id)
| Get the followup message for an interaction.
async< confirmation_callback_t > | co_interaction_followup_get_original (const std::string &token)
| Get the original followup message for an interaction This is an alias for cluster::interaction_response_get_original.
async< confirmation_callback_t > | co_interaction_response_create (snowflake interaction_id, const std::string &token, const interaction_response &r)
| Respond to a slash command.
async< confirmation_callback_t > | co_interaction_response_edit (const std::string &token, const message &m)
| Edit response to a slash command.
async< confirmation_callback_t > | co_interaction_response_get_original (const std::string &token)
| Get the original response to a slash command.
async< confirmation_callback_t > | co_invite_get (const std::string &invite_code)
| Get details about an invite.
async< confirmation_callback_t > | co_message_add_reaction (const struct message &m, const std::string &reaction)
| Add a reaction to a message. The reaction string must be either an emojiname:id or a unicode character.
async< confirmation_callback_t > | co_message_add_reaction (snowflake message_id, snowflake channel_id, const std::string &reaction)
| Add a reaction to a message by id. The reaction string must be either an emojiname:id or a unicode character.
async< confirmation_callback_t > | co_message_create (const struct message &m)
| Send a message to a channel. The callback function is called when the message has been sent.
async< confirmation_callback_t > | co_message_crosspost (snowflake message_id, snowflake channel_id)
| Crosspost a message. The callback function is called when the message has been sent.
async< confirmation_callback_t > | co_message_delete (snowflake message_id, snowflake channel_id)
| Delete a message from a channel. The callback function is called when the message has been edited.
async< confirmation_callback_t > | co_message_delete_all_reactions (const struct message &m)
| Delete all reactions on a message.
async< confirmation_callback_t > | co_message_delete_all_reactions (snowflake message_id, snowflake channel_id)
| Delete all reactions on a message by id.
async< confirmation_callback_t > | co_message_delete_bulk (const std::vector< snowflake > &message_ids, snowflake channel_id)
| Bulk delete messages from a channel. The callback function is called when the message has been edited.
async< confirmation_callback_t > | co_message_delete_own_reaction (const struct message &m, const std::string &reaction)
| Delete own reaction from a message. The reaction string must be either an emojiname:id or a unicode character.
async< confirmation_callback_t > | co_message_delete_own_reaction (snowflake message_id, snowflake channel_id, const std::string &reaction)
| Delete own reaction from a message by id. The reaction string must be either an emojiname:id or a unicode character.
async< confirmation_callback_t > | co_message_delete_reaction (const struct message &m, snowflake user_id, const std::string &reaction)
| Delete a user's reaction from a message. The reaction string must be either an emojiname:id or a unicode character.
async< confirmation_callback_t > | co_message_delete_reaction (snowflake message_id, snowflake channel_id, snowflake user_id, const std::string &reaction)
| Delete a user's reaction from a message by id. The reaction string must be either an emojiname:id or a unicode character.
async< confirmation_callback_t > | co_message_delete_reaction_emoji (const struct message &m, const std::string &reaction)
| Delete all reactions on a message using a particular emoji. The reaction string must be either an emojiname:id or a unicode character.
async< confirmation_callback_t > | co_message_delete_reaction_emoji (snowflake message_id, snowflake channel_id, const std::string &reaction)
| Delete all reactions on a message using a particular emoji by id. The reaction string must be either an emojiname:id or a unicode character.
async< confirmation_callback_t > | co_message_edit (const struct message &m)
| Edit a message on a channel. The callback function is called when the message has been edited.
async< confirmation_callback_t > | co_message_edit_flags (const struct message &m)
| Edit the flags of a message on a channel. The callback function is called when the message has been edited.
async< confirmation_callback_t > | co_message_get (snowflake message_id, snowflake channel_id)
| Get a message.
async< confirmation_callback_t > | co_message_get_reactions (const struct message &m, const std::string &reaction, snowflake before, snowflake after, snowflake limit)
| Get reactions on a message for a particular emoji. The reaction string must be either an emojiname:id or a unicode character.
async< confirmation_callback_t > | co_message_get_reactions (snowflake message_id, snowflake channel_id, const std::string &reaction, snowflake before, snowflake after, snowflake limit)
| Get reactions on a message for a particular emoji by id. The reaction string must be either an emojiname:id or a unicode character.
async< confirmation_callback_t > | co_message_pin (snowflake channel_id, snowflake message_id)
| Pin a message.
async< confirmation_callback_t > | co_message_unpin (snowflake channel_id, snowflake message_id)
| Unpin a message.
async< confirmation_callback_t > | co_messages_get (snowflake channel_id, snowflake around, snowflake before, snowflake after, uint64_t limit)
| Get multiple messages.
async< confirmation_callback_t > | co_nitro_sticker_get (snowflake id)
| Get a nitro sticker.
async< confirmation_callback_t > | co_poll_end (const message &m)
| Immediately end a poll.
async< confirmation_callback_t > | co_poll_end (snowflake message_id, snowflake channel_id)
| Immediately end a poll.
async< confirmation_callback_t > | co_poll_get_answer_voters (const message &m, uint32_t answer_id, snowflake after, uint64_t limit)
| Get a list of users that voted for this specific answer.
async< confirmation_callback_t > | co_poll_get_answer_voters (snowflake message_id, snowflake channel_id, uint32_t answer_id, snowflake after, uint64_t limit)
| Get a list of users that voted for this specific answer.
async< confirmation_callback_t > | co_role_create (const class role &r)
| Create a role on a guild.
async< confirmation_callback_t > | co_role_delete (snowflake guild_id, snowflake role_id)
| Delete a role.
async< confirmation_callback_t > | co_role_edit (const class role &r)
| Edit a role on a guild.
async< confirmation_callback_t > | co_roles_edit_position (snowflake guild_id, const std::vector< role > &roles)
| Edit multiple role's position in a guild. Returns a list of all roles of the guild on success.
async< confirmation_callback_t > | co_roles_get (snowflake guild_id)
| Get a role for a guild.
async< confirmation_callback_t > | co_skus_get ()
| Returns all SKUs for a given application.
async< confirmation_callback_t > | co_stage_instance_delete (const snowflake channel_id)
| Delete a stage instance.
async< confirmation_callback_t > | co_stage_instance_get (const snowflake channel_id)
| Get the stage instance associated with the channel id, if it exists.
async< confirmation_callback_t > | co_sticker_packs_get ()
| Get a list of available sticker packs.
async< confirmation_callback_t > | co_template_get (const std::string &code)
| Get a template.
async< confirmation_callback_t > | co_thread_create (const std::string &thread_name, snowflake channel_id, uint16_t auto_archive_duration, channel_type thread_type, bool invitable, uint16_t rate_limit_per_user)
| Create a thread.
async< confirmation_callback_t > | co_thread_create_in_forum (const std::string &thread_name, snowflake channel_id, const message &msg, auto_archive_duration_t auto_archive_duration, uint16_t rate_limit_per_user, std::vector< snowflake > applied_tags={})
| Create a thread in a forum or media channel.
async< confirmation_callback_t > | co_thread_create_with_message (const std::string &thread_name, snowflake channel_id, snowflake message_id, uint16_t auto_archive_duration, uint16_t rate_limit_per_user)
| Create a thread with a message (Discord: ID of a thread is same as message ID).
async< confirmation_callback_t > | co_thread_edit (const thread &t)
| Edit a thread.
async< confirmation_callback_t > | co_thread_get (snowflake thread_id)
| Get the thread specified by thread_id. This uses the same call as dpp::cluster::channel_get but returns a thread object.
async< confirmation_callback_t > | co_thread_member_add (snowflake thread_id, snowflake user_id)
| Add a member to a thread.
async< confirmation_callback_t > | co_thread_member_get (const snowflake thread_id, const snowflake user_id)
| Get a thread member.
async< confirmation_callback_t > | co_thread_member_remove (snowflake thread_id, snowflake user_id)
| Remove a member from a thread.
async< confirmation_callback_t > | co_thread_members_get (snowflake thread_id)
| Get members of a thread.
async< confirmation_callback_t > | co_threads_get_active (snowflake guild_id)
| Get all active threads in the guild, including public and private threads. Threads are ordered by their id, in descending order.
async< confirmation_callback_t > | co_threads_get_joined_private_archived (snowflake channel_id, snowflake before_id, uint16_t limit)
| Get private archived threads in a channel which current user has joined (Sorted by ID in descending order).
async< confirmation_callback_t > | co_threads_get_private_archived (snowflake channel_id, time_t before_timestamp, uint16_t limit)
| Get private archived threads in a channel (Sorted by archive_timestamp in descending order).
async< confirmation_callback_t > | co_threads_get_public_archived (snowflake channel_id, time_t before_timestamp, uint16_t limit)
| Get public archived threads in a channel (Sorted by archive_timestamp in descending order).
async< confirmation_callback_t > | co_user_application_role_connection_get (snowflake application_id)
| Get user application role connection.
async< confirmation_callback_t > | co_user_application_role_connection_update (snowflake application_id, const application_role_connection &connection)
| Update user application role connection.
async< confirmation_callback_t > | co_user_get (snowflake user_id)
| Get a user by id, without using the cache.
async< confirmation_callback_t > | co_user_get_cached (snowflake user_id)
| Get a user by id, checking in the cache first.
async< confirmation_callback_t > | co_user_get_voice_state (snowflake guild_id, snowflake user_id)
| Get a user's voice state in a guild without a Gateway connection.
async< confirmation_callback_t > | co_user_set_voice_state (snowflake user_id, snowflake guild_id, snowflake channel_id, bool suppress=false)
| Set a user's voice state on a stage channel.
template<class T>
std::string | comma (T value)
| Add commas to a string (or dots) based on current locale server-side.
DPP_EXPORT std::unique_ptr< socket_engine_base > | create_socket_engine (class cluster *creator)
| This is implemented by whatever derived form socket_engine takes.
double DPP_EXPORT | double_not_null (const nlohmann::json *j, const char *keyname)
| Returns a double from a json field value, if defined, else returns 0.
| DPP_CHECK_ABI_COMPAT (async<>, async_dummy)
| DPP_CHECK_ABI_COMPAT (coroutine< void >, coroutine_dummy) DPP_CHECK_ABI_COMPAT(coroutine< uint64_t >
| DPP_CHECK_ABI_COMPAT (task< void >, task_dummy) DPP_CHECK_ABI_COMPAT(task< uint64_t >
class DPP_EXPORT | DPP_DEPRECATED ("commandhandler should not be used. Please consider using dpp::cluster::register_command instead.") commandhandler
| The commandhandler class represents a group of commands, prefixed or slash commands with handling functions.
DPP_EXPORT class channel * | find_channel (snowflake id)
DPP_EXPORT class emoji * | find_emoji (snowflake id)
DPP_EXPORT class guild * | find_guild (snowflake id)
guild_member DPP_EXPORT | find_guild_member (const snowflake guild_id, const snowflake user_id)
| Get the guild_member from cache of given IDs.
DPP_EXPORT class role * | find_role (snowflake id)
DPP_EXPORT class user * | find_user (snowflake id)
void DPP_EXPORT | for_each_json (nlohmann::json *parent, std::string_view key, const std::function< void(nlohmann::json *)> &fn)
| Applies a function to each element of a json array.
void | from_json (const nlohmann::json &j, autocomplete_interaction &ai)
| helper function to deserialize an autocomplete_interaction from json
void | from_json (const nlohmann::json &j, command_data_option &cdo)
| helper function to deserialize a command_data_option from json
void | from_json (const nlohmann::json &j, command_interaction &ci)
| helper function to deserialize a command_interaction from json
void | from_json (const nlohmann::json &j, component_interaction &bi)
| helper function to deserialize a component_interaction from json
void | from_json (const nlohmann::json &j, guild_member &gm)
| helper function to deserialize a guild_member from json
void | from_json (const nlohmann::json &j, interaction &i)
| helper function to deserialize an interaction from json
void | from_json (const nlohmann::json &j, user &u)
| helper function to deserialize a user from json
void | from_json (const nlohmann::json &j, user_identified &u)
| helper function to deserialize a user_identified from json
template<int>
int | from_string (const std::string &s)
| Specialised conversion of int from string.
template<uint32_t>
uint32_t | from_string (const std::string &s)
| Specialised conversion of uint32_t from string.
template<uint64_t>
uint64_t | from_string (const std::string &s)
| Specialised conversion of uint64_t from string.
template<typename T>
T | from_string (const std::string &s)
| Convert any value from a string to another type using stringstream.
template<typename T>
T | from_string (const std::string &s, std::ios_base &(*f)(std::ios_base &))
| Convert any value from a string to another type using stringstream. The optional second parameter indicates the format of the input string, e.g. std::dec for decimal, std::hex for hex, std::oct for octal.
void DPP_EXPORT | garbage_collection ()
DPP_EXPORT cache< class channel > * | get_channel_cache ()
DPP_EXPORT uint64_t | get_channel_count ()
DPP_EXPORT cache< class emoji > * | get_emoji_cache ()
DPP_EXPORT uint64_t | get_emoji_count ()
DPP_EXPORT cache< class guild > * | get_guild_cache ()
DPP_EXPORT uint64_t | get_guild_count ()
DPP_EXPORT cache< class role > * | get_role_cache ()
DPP_EXPORT uint64_t | get_role_count ()
DPP_EXPORT cache< class user > * | get_user_cache ()
DPP_EXPORT uint64_t | get_user_count ()
uint16_t DPP_EXPORT | 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.
uint32_t DPP_EXPORT | 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.
uint64_t DPP_EXPORT | 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!
uint8_t DPP_EXPORT | 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.
template<typename T>
std::string | leading_zeroes (T i, size_t width)
| Format a numeric type as a string with leading zeroes.
template<typename T>
std::basic_string< T > | lowercase (const std::basic_string< T > &s)
| Convert a string to lowercase using tolower().
std::string | ltrim (std::string s)
| trim from beginning of string (left)
DPP_EXPORT const dns_cache_entry * | resolve_hostname (const std::string &hostname, const std::string &port)
| Resolve a hostname to an addrinfo.
template<class T>
void | rest_request (dpp::cluster *c, const char *basepath, const std::string &major, const std::string &minor, http_method method, const std::string &postdata, command_completion_event_t callback)
| Templated REST request helper to save on typing.
template<>
void | rest_request< confirmation > (dpp::cluster *c, const char *basepath, const std::string &major, const std::string &minor, http_method method, const std::string &postdata, command_completion_event_t callback)
| Templated REST request helper to save on typing (specialised for confirmation).
template<>
void | rest_request< message > (dpp::cluster *c, const char *basepath, const std::string &major, const std::string &minor, http_method method, const std::string &postdata, command_completion_event_t callback)
| Templated REST request helper to save on typing (specialised for message).
template<class T>
void | rest_request_list (dpp::cluster *c, const char *basepath, const std::string &major, const std::string &minor, http_method method, const std::string &postdata, command_completion_event_t callback, const std::string &key, const std::string &root)
| Templated REST request helper to save on typing (for returned lists).
template<class T>
void | rest_request_list (dpp::cluster *c, const char *basepath, const std::string &major, const std::string &minor, http_method method, const std::string &postdata, command_completion_event_t callback, const std::string &key="id")
| Templated REST request helper to save on typing (for returned lists).
template<>
void | rest_request_list< ban > (dpp::cluster *c, const char *basepath, const std::string &major, const std::string &minor, http_method method, const std::string &postdata, command_completion_event_t callback, const std::string &key)
| Templated REST request helper to save on typing (for returned lists, specialised for bans).
template<>
void | rest_request_list< invite > (dpp::cluster *c, const char *basepath, const std::string &major, const std::string &minor, http_method method, const std::string &postdata, command_completion_event_t callback, const std::string &key)
| Templated REST request helper to save on typing (for returned lists, specialised for invites).
template<>
void | rest_request_list< sticker_pack > (dpp::cluster *c, const char *basepath, const std::string &major, const std::string &minor, http_method method, const std::string &postdata, command_completion_event_t callback, const std::string &key)
| Templated REST request helper to save on typing (for returned lists, specialised for sticker packs).
template<>
void | rest_request_list< voiceregion > (dpp::cluster *c, const char *basepath, const std::string &major, const std::string &minor, http_method method, const std::string &postdata, command_completion_event_t callback, const std::string &key)
| Templated REST request helper to save on typing (for returned lists, specialised for voiceregions).
template<class T>
void | rest_request_vector (dpp::cluster *c, const char *basepath, const std::string &major, const std::string &minor, http_method method, const std::string &postdata, command_completion_event_t callback)
| Templated REST request helper to save on typing (for returned lists, specialised for objects which doesn't have ids).
std::string | rtrim (std::string s)
| trim from end of string (right)
template<typename T>
auto | run_once ()
| Run some code within an if() statement only once.
void DPP_EXPORT | 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.
void DPP_EXPORT | set_double_not_null (const nlohmann::json *j, const char *keyname, double &v)
| Sets a double from a json field value, if defined, else does nothing.
void DPP_EXPORT | set_iconhash_not_null (const nlohmann::json *j, const char *keyname, utility::iconhash &v)
| This is a repeat of set_string_not_null, but takes in a iconhash.
void DPP_EXPORT | 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.
void DPP_EXPORT | 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.
void DPP_EXPORT | 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.
void DPP_EXPORT | 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.
DPP_EXPORT bool | set_nonblocking (dpp::socket sockfd, bool non_blocking)
| Set a socket to blocking or non-blocking IO.
template<class T>
void | set_object_array_not_null (nlohmann::json *j, std::string_view key, std::vector< T > &v)
| Sets an array of objects from a json field value, if defined, else does nothing.
void | set_signal_handler (int signal)
| Set up a signal handler to be ignored.
void DPP_EXPORT | set_snowflake_array_not_null (const nlohmann::json *j, const char *keyname, std::vector< class snowflake > &v)
| Sets an array of snowflakes from a json field value, if defined, else does nothing.
void DPP_EXPORT | 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.
void DPP_EXPORT | 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.
void DPP_EXPORT | 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.
uint64_t DPP_EXPORT | snowflake_not_null (const nlohmann::json *j, const char *keyname)
| Returns a snowflake id from a json field value, if defined, else returns 0.
std::string DPP_EXPORT | 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.
template<typename T>
std::string | to_hex (T i, bool leading_zeroes=true)
| Convert a numeric value to hex.
void | to_json (nlohmann::json &j, const command_option &opt)
| helper function to serialize a command_option to json
void | to_json (nlohmann::json &j, const command_option_choice &choice)
| helper function to serialize a command_option_choice to json
void | to_json (nlohmann::json &j, const command_permission &cp)
| helper function to serialize a command_permission to json
void | to_json (nlohmann::json &j, const guild_command_permissions &gcp)
| helper function to serialize a guild_command_permissions to json
void | to_json (nlohmann::json &j, const permission_overwrite &po)
| Serialize a permission_overwrite object to json.
void | to_json (nlohmann::json &j, const slashcommand &cmd)
| helper function to serialize a slashcommand to json
void | to_json (nlohmann::json &j, const thread_metadata &tmdata)
| Serialize a thread_metadata object to json.
std::string | trim (std::string s)
| Trim from both ends of string (right then left).
time_t DPP_EXPORT | 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.
std::string DPP_EXPORT | ts_to_string (time_t ts)
| Convert time_t unix epoch to std::string ISO date/time.
template<typename T>
std::basic_string< T > | uppercase (const std::basic_string< T > &s)
| Convert a string to uppercase using toupper().
template<build_type>
bool | validate_configuration ()
template<typename... Args>
| when_any (Args...) -> when_any< detail::when_any::awaitable_type< Args >... >

## Variables

constexpr 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.
constexpr size_t | DECOMP_BUFFER_SIZE = 512 * 1024
| Size of decompression buffer for zlib compressed traffic.
constexpr uint32_t | DEFAULT_ATTACHMENT_SIZE_LIMIT = 10 * 1024 * 1024
| Discords default attachment size limit is 10MiB, and will be used in case an interaction does not contain its attachment size limit.
DPP_EXPORT std::mutex | deletion_mutex
DPP_EXPORT std::unordered_map< managed *, time_t > | deletion_queue
static constexpr const char * | DISCORD_HOST = "https://discord.com"
constexpr uint16_t | DPP_BUFSIZE {16 * 1024}
| SSL_read buffer size.
constexpr int | ERROR_STATUS {-1}
| Represents a failed socket system call, e.g. connect() failure.
const uint8_t | FORMAT_VERSION = 131
| Current ETF format version in use.
static const std::string | http_version
const bool | is_valid_config = validate_configuration<build_type::universal>()
constexpr uint32_t | MAX_AVATAR_SIZE = 10240 * 1000
constexpr int | MAX_RETRIES {4}
| Maximum number of internal connect() retries on TCP connections.
enum DPP_EXPORT | message_ref_type
| Message Reference type.
enum DPP_EXPORT | mrt_forward = 1
constexpr uint32_t | NO_SHARDS = ~0U
| Pass this value into the constructor of dpp::cluster for the shard count to create a cluster with no shards. A cluster with no shards does not connect to a websocket, but can still use the event loop to dispatch HTTPS API requests to Discord. This is useful for bots that do not need to receive websocket events as it will save a lot of resources.
constexpr int32_t | opus_channel_count = 2
| Channel count for OPUS (stereo).
constexpr int32_t | opus_sample_rate_hz = 48000
| Sample rate for OPUS (48khz).
constexpr time_t | RECONNECT_INTERVAL = 5
| How many seconds to wait between (re)connections. DO NOT change this. It is mandated by the Discord API spec!
constexpr size_t | secret_key_size = 32
constexpr size_t | send_audio_raw_max_length = 11520
constexpr uint8_t | voice_protocol_version = 8
| Discord voice protocol version.

## Detailed Description

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

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

## Typedef Documentation

## ◆ active_threads

using dpp::active_threads = std::map<snowflake, active_thread_info>

A map of threads alongside optionally the thread_member tied to the bot if it is in the thread. The map's key is the thread id. Returned from the cluster::threads_get_active method.

## ◆ 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.

## ◆ application_role_connection_metadata_list

typedef std::vector<application_role_connection_metadata> dpp::application_role_connection_metadata_list

A group of dpp::application_role_connection_metadata objects.

## ◆ automod_rule_map

typedef std::unordered_map<snowflake, automod_rule> dpp::automod_rule_map

A group of automod rules.

## ◆ ban_map

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

A group of bans. The key is the user ID.

## ◆ channel_collector_t

typedef dpp::collector<dpp::channel_create_t, dpp::channel> dpp::channel_collector_t

Template 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 = std::function<void(const confirmation_callback_t&)>

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

A callback upon command completion.

## ◆ 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.

Deprecated
  commandhandler and message commands are deprecated and dpp::slashcommand is encouraged as a replacement.

## ◆ command_option_range

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

A minimum or maximum value/length for dpp::co_number, dpp::co_integer and dpp::co_string types of a dpp::command_option. The int64_t is for the integer range or string length that can be entered. The double is for the decimal range that can be entered.

## ◆ 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 dpp::command_option_type. It is used in interactions.

std::monostate indicates an invalid parameter value, e.g. an unfilled optional parameter. std::int64_t will be for all integer options, double for decimal numbers and dpp::snowflake for anything ID related.

You can retrieve them with std::get().

## ◆ component_emoji

using dpp::component_emoji = partial_emoji

An emoji for a component. Alias to partial_emoji, for backwards compatibility.

See also
  partial_emoji

## ◆ confirmable_t

typedef std::variant< active_threads, application_role_connection, application_role_connection_metadata_list, confirmation, message, message_map, message_pin_map, user, user_identified, user_map, guild_member, guild_member_map, channel, channel_map, thread_member, thread_member_map, guild, guild_map, guild_command_permissions, guild_command_permissions_map, role, role_map, invite, invite_map, dtemplate, dtemplate_map, emoji, emoji_map, ban, ban_map, voiceregion, voiceregion_map, voicestate, 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_map, automod_rule, automod_rule_map, onboarding, welcome_screen, entitlement, entitlement_map, sku, sku_map, message_search_result > dpp::confirmable_t

A container for types that can be returned for a REST API call.

## ◆ connection_map

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

A group of connections.

## ◆ dns_cache_t

using dpp::dns_cache_t = std::unordered_map<std::string, std::unique_ptr<dns_cache_entry>>

Cache container type.

## ◆ 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.

## ◆ entitlement_map

typedef std::unordered_map<snowflake, entitlement> dpp::entitlement_map

Group of entitlements.

## ◆ 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.

## ◆ full_reconnection_callback_t

using dpp::full_reconnection_callback_t = std::function<void()>

A callback for a full reconnection after the voice client disconnects due to error.

## ◆ guild_command_permissions_map

typedef std::unordered_map<snowflake, guild_command_permissions> dpp::guild_command_permissions_map

A group of guild command permissions.

## ◆ 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 ASYNCHRONOUSLY in your code which means they execute in a separate thread, results for the requests going into a dpp::thread_pool. Completion events may not arrive in order depending on if one request takes longer than another. Using the callbacks or using coroutines correctly ensures that the order they arrive in the queue does not negatively affect your code.

## ◆ http_headers

typedef std::multimap<std::string, std::string> dpp::http_headers

Request headers.

## ◆ http_server_request_event

using dpp::http_server_request_event = std::function<void(class http_server_request*)>

Callback type for HTTP server request callbacks.

## ◆ https_client_completion_event

using dpp::https_client_completion_event = std::function<void(class https_client*)>

## ◆ 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

using dpp::json = nlohmann::json

## ◆ 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

typedef dpp::collector<dpp::message_create_t, dpp::message> dpp::message_collector_t

Template type for base class of message collector.

## ◆ message_map

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

A group of messages.

## ◆ message_pin_map

typedef std::unordered_map<snowflake, message_pin> dpp::message_pin_map

A group of pinned 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 doesn't 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.

## ◆ privacy_code_callback_t

using dpp::privacy_code_callback_t = std::function<void(const std::string&)>

A callback for obtaining a user's privacy code. The privacy code is returned as the parameter to the function.

This is a callback function because DAVE requires use of a very resource intensive SCRYPT call, which uses lots of ram and cpu and take significant time.

## ◆ promise

template<typename T>

using dpp::promise = moveable_promise<T>

## ◆ reaction_collector_t

typedef dpp::collector<dpp::message_reaction_add_t, dpp::collected_reaction> dpp::reaction_collector_t

Template type for base class of message reaction collector.

## ◆ reconnect_list

typedef std::map<uint32_t, time_t> dpp::reconnect_list

List of shards awaiting reconnection, by id with earliest possible reconnect time.

## ◆ role_collector_t

typedef dpp::collector<dpp::guild_role_create_t, dpp::role> dpp::role_collector_t

Template type for base class of role collector.

## ◆ role_map

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

A group of roles.

## ◆ role_permissions

using dpp::role_permissions = permissions

Represents the various discord permissions.

Deprecated
  Use dpp::permissions instead.

## ◆ scheduled_event_collector_t

typedef dpp::collector<dpp::guild_scheduled_event_create_t, dpp::scheduled_event> dpp::scheduled_event_collector_t

Template 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.

## ◆ sku_map

typedef std::unordered_map<snowflake, sku> dpp::sku_map

Group of SKUs.

## ◆ slashcommand_map

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

A group of application slash commands.

## ◆ socket

using dpp::socket = int

Represents a socket file descriptor. This is used to ensure parity between windows and unix-like systems.

## ◆ socket_container

using dpp::socket_container = std::unordered_map<dpp::socket, std::unique_ptr<socket_events>>

Container of event sets keyed by socket file descriptor.

## ◆ socket_error_event

using dpp::socket_error_event = std::function<void(dpp::socket fd, const struct socket_events&, int error_code)>

Error event.

## ◆ socket_read_event

using dpp::socket_read_event = std::function<void(dpp::socket fd, const struct socket_events&)>

Read ready event.

## ◆ socket_write_event

using dpp::socket_write_event = std::function<void(dpp::socket fd, const struct socket_events&)>

Write ready event.

## ◆ 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

typedef dpp::collector<dpp::thread_create_t, dpp::thread> dpp::thread_collector_t

Template 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. the key is the user_id of the dpp::thread_member.

## ◆ 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(timer)> dpp::timer_callback_t

The type for a timer callback.

## ◆ timer_next_t

typedef std::priority_queue<timer_t, std::vector<timer_t>, timer_comparator> dpp::timer_next_t

A priority timers, ordered by earliest first so that the head is always the soonest to be due.

## ◆ timers_deleted_t

typedef std::set<timer> dpp::timers_deleted_t

A set of deleted timer handles.

## ◆ user_map

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

A group of users.

## ◆ voice_connection_gateway_request_callback_t

using dpp::voice_connection_gateway_request_callback_t = std::function<void(discord_client*)>

Callback to send a Gateway request to start a new voice connection.

## ◆ 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.

## ◆ work_unit

using dpp::work_unit = std::function<void()>

A work unit is a lambda executed in the thread pool.

## Enumeration Type Documentation

## ◆ activity_flags

enum dpp::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.
af_party_privacy_friends | Party privacy friends.
af_party_privacy_voice_channel | Party privacy voice channel.
af_embedded | Embedded.

## ◆ 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..."

## ◆ animation_types

enum dpp::animation_types : uint8_t

Animation types that a voice channel effect can have.

Enumerator
at_premium |
at_basic |

## ◆ application_event_webhook_status

enum dpp::application_event_webhook_status : uint8_t

Status indicating whether event webhooks are enabled or disabled for an application.

Enumerator
ews_disabled | Webhook events are disabled by developer.
ews_enabled | Webhook events are enabled by developer.
ews_disabled_by_discord | Webhook events are disabled by Discord, usually due to inactivity.

## ◆ application_flags

enum dpp::application_flags : uint32_t

Flags for a bot or application.

Enumerator
apf_application_automod_rule_create_badge | Indicates if an app uses the Auto Moderation API.
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.
apf_application_command_badge | Indicates if the app has registered global application commands.

## ◆ application_integration_types

enum dpp::application_integration_types : uint8_t

Where an app can be installed, also called its supported installation contexts.

Enumerator
ait_guild_install | Installable to servers.
ait_user_install | Installable to users.

## ◆ application_role_connection_metadata_type

enum dpp::application_role_connection_metadata_type : uint8_t

Application Role Connection Metadata Type.

Note
  Each metadata type offers a comparison operation that allows guilds to configure role requirements based on metadata values stored by the bot. Bots specify a metadata value for each user and guilds specify the required guild's configured value within the guild role settings.

Enumerator
rc_integer_less_than_or_equal | The metadata value (integer) is less than or equal to the guild's configured value (integer).
rc_integer_greater_than_or_equal | The metadata value (integer) is greater than or equal to the guild's configured value (integer).
rc_integer_equal | The metadata value (integer) is equal to the guild's configured value (integer).
rc_integer_not_equal | The metadata value (integer) is not equal to the guild's configured value (integer).
rc_datetime_less_than_or_equal | The metadata value (ISO8601 string) is less than or equal to the guild's configured value (integer; days before current date).
rc_datetime_greater_than_or_equal | The metadata value (ISO8601 string) is greater than or equal to the guild's configured value (integer; days before current date).
rc_boolean_equal | The metadata value (integer) is equal to the guild's configured value (integer; 1).
rc_boolean_not_equal | The metadata value (integer) is not equal to the guild's configured value (integer; 1).

## ◆ attachment_flags

enum dpp::attachment_flags : uint8_t

Bitmask flags for a dpp::attachment.

Enumerator
a_is_remix | This attachment has been edited using the remix feature on mobile.

## ◆ audit_type

enum dpp::audit_type

Defines types of audit log entry.

Enumerator
aut_guild_update | Guild update.
aut_channel_create | Channel create.
aut_channel_update | Channel update.
aut_channel_delete | Channel delete.
aut_channel_overwrite_create | Channel overwrite create.
aut_channel_overwrite_update | Channel overwrite update.
aut_channel_overwrite_delete | Channel overwrite delete.
aut_member_kick | Channel member kick.
aut_member_prune | Channel member prune.
aut_member_ban_add | Channel member ban add.
aut_member_ban_remove | Channel member ban remove.
aut_member_update | Guild member update.
aut_member_role_update | Guild member role update.
aut_member_move | Guild member move.
aut_member_disconnect | Guild member voice disconnect.
aut_bot_add | Guild bot add.
aut_role_create | Guild role create.
aut_role_update | Guild role update.
aut_role_delete | Guild role delete.
aut_invite_create | Guild invite create.
aut_invite_update | Guild invite update.
aut_invite_delete | Guild invite delete.
aut_webhook_create | Guild webhook create.
aut_webhook_update | Guild webhook update.
aut_webhook_delete | Guild webhook delete.
aut_emoji_create | Guild emoji create.
aut_emoji_update | Guild emoji update.
aut_emoji_delete | Guild emoji delete.
aut_message_delete | Guild message delete.
aut_message_bulk_delete | Guild message bulk delete.
aut_message_pin | Guild message pin.
aut_message_unpin | Guild message unpin.
aut_integration_create | Guild integration create.
aut_integration_update | Guild integration update.
aut_integration_delete | Guild integration delete.
aut_stage_instance_create | Stage instance create.
aut_stage_instance_update | Stage instance update.
aut_stage_instance_delete | stage instance delete
aut_sticker_create | Sticker create.
aut_sticker_update | Sticker update.
aut_sticker_delete | Sticker delete.
aut_guild_scheduled_event_create | Scheduled event creation.
aut_guild_scheduled_event_update | Scheduled event update.
aut_guild_scheduled_event_delete | Scheduled event deletion.
aut_thread_create | Thread create.
aut_thread_update | Thread update.
aut_thread_delete | Thread delete.
aut_appcommand_permission_update | Application command permissions update.
aut_automod_rule_create | Auto moderation rule creation.
aut_automod_rule_update | Auto moderation rule update.
aut_automod_rule_delete | Auto moderation rule deletion.
aut_automod_block_message | Message was blocked by Auto Moderation.
aut_automod_flag_to_channel | Message was flagged by Auto Moderation.
aut_automod_user_communication_disabled | Member was timed out by Auto Moderation.
aut_creator_monetization_request_created | Creator monetization request was created.
aut_creator_monetization_terms_accepted | Creator monetization terms were accepted.

## ◆ auto_archive_duration_t

enum dpp::auto_archive_duration_t : uint8_t

Auto archive duration of threads which will stop showing in the channel list after the specified period of inactivity. Defined as an enum to fit into 1 byte. Internally it'll be translated to minutes to match the API.

Enumerator
arc_1_hour | Auto archive duration of 1 hour (60 minutes).
arc_1_day | Auto archive duration of 1 day (1440 minutes).
arc_3_days | Auto archive duration of 3 days (4320 minutes).
arc_1_week | Auto archive duration of 1 week (10080 minutes).

## ◆ automod_action_type

enum dpp::automod_action_type : uint8_t

Action types to perform on filtering.

Enumerator
amod_action_block_message | Blocks the message and prevents it from being posted. A custom explanation can be specified and shown to members whenever their message is blocked.
amod_action_send_alert | Send an alert to a given channel.

amod_action_timeout

timeout the user

Note
  Can only be set up for rules with trigger types of dpp::amod_type_keyword and dpp::amod_type_mention_spam

## ◆ automod_event_type

enum dpp::automod_event_type : uint8_t

Event types, only message send is currently supported.

Enumerator
amod_message_send | Trigger on message send or edit.

## ◆ automod_preset_type

enum dpp::automod_preset_type : uint8_t

Possible types of preset filter lists.

Enumerator
amod_preset_profanity | Strong swearing.
amod_preset_sexual_content | Sexual phrases and words.
amod_preset_slurs | Racial and other slurs, hate speech.

## ◆ automod_trigger_type

enum dpp::automod_trigger_type : uint8_t

Types of moderation to trigger.

Enumerator
amod_type_keyword | Check if content contains words from a user defined list of keywords (max 6 of this type per guild).

amod_type_harmful_link

Harmful/malware links.

Deprecated
  Removed by Discord

amod_type_spam | Check if content represents generic spam (max 1 of this type per guild).
amod_type_keyword_preset | Check if content contains words from discord pre-defined wordsets (max 1 of this type per guild).
amod_type_mention_spam | Check if content contains more mentions than allowed (max 1 of this type per guild).

## ◆ build_type

enum class dpp::build_type

strong

Represents a build configuration. On some platforms (e.g. Windows) release isn't compatible with debug, so we use this enum to detect it.

Enumerator
universal | Universal build, works with both debug and release.
debug | Debug build.
release | Release build.

## ◆ cache_policy_setting_t

enum dpp::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, initially quite rapidly, and then linearly over time. It is the least cpu-intensive setting.
cp_lazy | only cache when there is relevant 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.

Note
  The bottom four bits of this flag are reserved to contain the channel_type values listed above as provided by Discord. If discord add another value > 15, we will have to shuffle these values upwards by one bit.

Enumerator
c_nsfw | NSFW Gated Channel.
c_video_quality_720p | Video quality forced to 720p.
c_lock_permissions | Lock permissions (only used when updating channel positions).
c_pinned_thread | Thread is pinned to the top of its parent forum or media channel.
c_require_tag | Whether a tag is required to be specified when creating a thread in a forum or media channel. Tags are specified in the thread::applied_tags field.
c_hide_media_download_options | When set hides the embedded media download options. Available only for media channels.

## ◆ channel_type

enum dpp::channel_type : uint8_t

Flag integers as received from and sent to discord.

Enumerator
CHANNEL_TEXT | A text channel within a server.
DM | A direct message between users.
CHANNEL_VOICE | A voice channel within a server.

GROUP_DM

a direct message between multiple users

Deprecated
  this channel type was intended to be used with the now deprecated GameBridge SDK. Existing group dms with bots will continue to function, but newly created channels will be unusable.

CHANNEL_CATEGORY | An organizational category that contains up to 50 channels.
CHANNEL_ANNOUNCEMENT | A channel that users can follow and cross-post into their own server.

CHANNEL_STORE

A channel in which game developers can sell their game on Discord.

Deprecated
  Store channels are deprecated by Discord.

CHANNEL_ANNOUNCEMENT_THREAD | A temporary sub-channel within a GUILD_ANNOUNCEMENT channel.
CHANNEL_PUBLIC_THREAD | A temporary sub-channel within a GUILD_TEXT or GUILD_FORUM channel.
CHANNEL_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.
CHANNEL_STAGE | A "stage" channel, like a voice channel with one authorised speaker.

CHANNEL_DIRECTORY

The channel in a hub containing the listed servers.

See also
  https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ

CHANNEL_FORUM | Forum channel that can only contain threads.
CHANNEL_MEDIA | Media channel that can only contain threads, similar to forum channels.

## ◆ client_platform_t

enum dpp::client_platform_t : uint8_t

Discord voice platform types.

Enumerator
client_platform_desktop | Web, Desktop.
client_platform_mobile | Mobile device.

## ◆ 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 id (snowflake).
co_mentionable | A mentionable (users and roles).
co_number | Any double between -2^53 and 2^53.
co_attachment | File attachment type.

## ◆ command_permission_type

enum dpp::command_permission_type

type of permission in the dpp::command_permission class

Enumerator
cpt_role | Role permission.
cpt_user | User permission.

## ◆ component_default_value_type

enum dpp::component_default_value_type : uint8_t

Represents the type of a dpp::component_default_value

Note
  They're different to discord's value types

Enumerator
cdt_user |
cdt_role |
cdt_channel |

## ◆ component_style

enum dpp::component_style : uint8_t

Represents the style of a button.

Enumerator
cos_primary | Blurple; Primary.
cos_secondary | Grey; Secondary.
cos_success | Green; Success.
cos_danger | Red; danger.

cos_link

An external hyperlink to a website, requires url to be set.

Note
  Will not work unless url is set

cos_premium

Premium upsell button, requires sku_id to be set.

Note
  Will not work unless sku is set

## ◆ 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 for picking from defined text options.
cot_text | Text input.
cot_user_selectmenu | Select menu for users.
cot_role_selectmenu | Select menu for roles.
cot_mentionable_selectmenu | Select menu for mentionables (users and roles).
cot_channel_selectmenu | Select menu for channels.

cot_section

Section.

Note
  Available in components v2 only

cot_text_display

Simple text.

Note
  Available in components v2 only

cot_thumbnail

Image thumbnail, clickable to expand.

Note
  Available in components v2 only

cot_media_gallery

Collection of media (images, videos).

Note
  Available in components v2 only

cot_file

File attachment from the uploads of the message.

Note
  Available in components v2 only

cot_separator

Separator between sections or other components.

Note
  Available in components v2 only

cot_content_inventory_entry | Content inventory entry.

cot_container

Container for other components.

Note
  Available in components v2 only

cot_label | Container associating a label and description with a component.
cot_file_upload | Component for uploading files.

## ◆ dave_version_t

enum dpp::dave_version_t : uint8_t

Supported DAVE (Discord Audio Visual Encryption) protocol versions.

Enumerator
dave_version_none | DAVE disabled (default for now).
dave_version_1 | DAVE enabled, version 1 (E2EE encryption on top of openssl).

## ◆ default_forum_sort_order_t

enum dpp::default_forum_sort_order_t : uint8_t

Types for sort posts in a forum channel.

Enumerator
so_latest_activity | Sort forum posts by activity (default).
so_creation_date | Sort forum posts by creation time (from most recent to oldest).

## ◆ default_message_notification_t

enum dpp::default_message_notification_t : uint8_t

Default message notification level.

Enumerator
dmn_all | Members will receive notifications for all messages by default.
dmn_only_mentions | Members will receive notifications only for messages that @mention them by default.

## ◆ 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 emoji.
e_available | Available (false if the guild doesn't meet boosting criteria, etc).

## ◆ entitlement_flags

enum dpp::entitlement_flags : uint8_t

Entitlement flags.

Enumerator

ent_deleted

Entitlement was deleted.

Note
  Only discord staff can delete an entitlement via their internal tooling. It should rarely happen except in cases of fraud or chargeback.

ent_consumed

Entitlement was consumed.

Note
  A consumed entitlement is a used-up one-off purchase.

## ◆ entitlement_type

enum dpp::entitlement_type : uint8_t

The type of entitlement.

Enumerator
PURCHASE | Entitlement was purchased by user.
PREMIUM_SUBSCRIPTION | Entitlement for Discord Nitro subscription.
DEVELOPER_GIFT | Entitlement was gifted by developer.
TEST_MODE_PURCHASE | Entitlement was purchased by a dev in application test mode.
FREE_PURCHASE | Entitlement was granted when the SKU was free.
USER_GIFT | Entitlement was gifted by another user.
PREMIUM_PURCHASE | Entitlement was claimed by user for free as a Nitro Subscriber.
APPLICATION_SUBSCRIPTION | Entitlement was purchased as an app subscription.

## ◆ 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").

Note
  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.

## ◆ exception_error_code

enum dpp::exception_error_code

Exception error codes possible for dpp::exception::code().

This list is a combined list of Discord's error codes, HTTP error codes, zlib, opus and C library codes (e.g. DNS, socket etc). You may use these to easily identify a type of exception without having to resort to string comparison against dpp::exception::what()

For detailed descriptions of each error code, see the text description returned in what().

Note
  Some exceptions MAY have error codes which are NOT in this list in the event a C library is updated and adds new codes we did not document here. In this case, or where the code is not specific, refer to what().

Enumerator
err_no_code_specified |
err_zlib_see_errno |
err_zlib_init_stream |
err_zlib_init_data |
err_zlib_init_mem |
err_zlib_init_buffer |
err_zlib_init_version |
err_opus_bad_arg |
err_opus_buffer_too_small |
err_opus_internal_error |
err_opus_invalid_packet |
err_opus_unimplemented |
err_opus_invalid_state |
err_opus_alloc_fail |
err_dns_bad_flags |
err_name_or_service_unknown |
err_dns_again |
err_dns_fail |
err_dns_family |
err_dns_socket_type |
err_dns_service |
err_dns_memory |
err_dns_system_error |
err_dns_overflow |
err_ssl_new |
err_ssl_connect |
err_write |
err_ssl_write |
err_no_sessions_left |
err_auto_shard |
err_reconnection |
err_bind_failure |
err_nonblocking_failure |
err_voice_terminating |
err_connect_failure |
err_ssl_context |
err_ssl_version |
err_invalid_socket |
err_socket_error |
err_websocket_proto_already_set |
err_command_handler_not_ready |
err_no_owning_message |
err_cancelled_event |
err_event_status |
err_event_start_time |
err_event_end_time |
err_command_has_caps |
err_choice_autocomplete |
err_interaction |
err_too_many_component_rows |
err_invalid_webhook |
err_voice_state_timestamp |
err_no_voice_support |
err_invalid_voice_packet_length |
err_opus |
err_cant_start_shard |
err_etf |
err_cache |
err_icon_size |
err_massive_audio |
err_unknown |
err_bad_request |
err_unauthorized |
err_payment_required |
err_forbidden |
err_not_found |
err_method_not_allowed |
err_not_acceptable |
err_proxy_auth_required |
err_request_timeout |
err_conflict |
err_gone |
err_length_required |
err_precondition_failed |
err_payload_too_large |
err_uri_too_long |
err_unsupported_media_type |
err_range_not_satisfiable |
err_expectation_failed |
err_im_a_teapot |
err_page_expired |
err_twitter_rate_limited |
err_misdirected_request |
err_unprocessable_content |
err_webdav_locked |
err_webdav_failed_dependency |
err_too_early |
err_upgrade_required |
err_precondition_required |
err_rate_limited |
err_request_headers_too_large |
err_page_blocked |
err_unavailable_for_legal_reasons |
err_http_request_on_https_port |
err_internal_server_error |
err_not_implemented |
err_bad_gateway |
err_service_unavailable |
err_gateway_timeout |
err_http_version_not_supported |
err_variant_also_negotiates |
err_webdav_insufficient_storage |
err_webdav_loop_detected |
err_bandwidth_limit_exceeded |
err_not_extended |
err_network_auth_required |
err_web_server_down |
err_connection_timed_out |
err_origin_unreachable |
err_timeout |
err_ssl_handshake_failed |
err_invalid_ssl_certificate |
err_railgun |
err_cloudflare |
err_websocket_unknown |
err_websocket_bad_opcode |
err_websocket_decode |
err_websocket_not_authenticated |
err_websocket_authentication_failed |
err_websocket_already_authenticated |
err_websocket_invalid_seq_number |
err_websocket_rate_limited |
err_websocket_session_timeout |
err_websocket_invalid_shard |
err_websocket_sharding_required |
err_websocket_invalid_api_version |
err_websocket_invalid_intents |
err_websocket_disallowed_intents |
err_websocket_voice_disconnected |
err_websocket_voice_server_crashed |
err_websocket_voice_unknown_encryption |
err_compression_stream |
err_compression_data |
err_compression_memory |
err_unknown_account |
err_unknown_application |
err_unknown_channel |
err_unknown_guild |
err_unknown_integration |
err_unknown_invite |
err_unknown_member |
err_unknown_message |
err_unknown_permission_overwrite |
err_unknown_provider |
err_unknown_role |
err_unknown_token |
err_unknown_user |
err_unknown_emoji |
err_unknown_webhook |
err_unknown_webhook_service |
err_unknown_session |
err_unknown_ban |
err_unknown_sku |
err_unknown_store_listing |
err_unknown_entitlement |
err_unknown_build |
err_unknown_lobby |
err_unknown_branch |
err_unknown_store_directory_layout |
err_unknown_redistributable |
err_unknown_gift_code |
err_unknown_stream |
err_unknown_premium_server_subscribe_cooldown |
err_unknown_guild_template |
err_unknown_discoverable_server_category |
err_unknown_sticker |
err_unknown_interaction |
err_unknown_application_command |
err_unknown_voice_state |
err_unknown_application_command_permissions |
err_unknown_stage_instance |
err_unknown_guild_member_verification_form |
err_unknown_guild_welcome_screen |
err_unknown_guild_scheduled_event |
err_unknown_guild_scheduled_event_user |
err_unknown_tag |
err_bots_cannot_use_this_endpoint |
err_only_bots_can_use_this_endpoint |
err_explicit_content |
err_unauthorized_for_application |
err_slowmode_rate_limit |
err_owner_only |
err_announcement_rate_limit |
err_under_minimum_age |
err_write_rate_limit |
err_stage_banned_words |
err_guild_premium_subscription_level_too_low |
err_guilds |
err_friends |
err_pins_for_the_channel |
err_recipients |
err_guild_roles |
err_webhooks |
err_emojis |
err_reactions |
err_group_dms |
err_guild_channels |
err_attachments_in_a_message |
err_invites |
err_animated_emojis |
err_server_members |
err_server_categories |
err_guild_already_has_a_template |
err_application_commands |
err_thread_participants |
err_daily_application_command_creates |
err_bans_for_non_guild_members_have_been_exceeded |
err_bans_fetches |
err_uncompleted_guild_scheduled_events |
err_stickers |
err_prune_requests |
err_guild_widget_settings_updates |
err_edits_to_messages_older_than_1_hour |
err_pinned_threads_in_a_forum_channel |
err_tags_in_a_forum_channel |
err_bitrate_is_too_high_for_channel_of_this_type |
err_premium_emojis |
err_webhooks_per_guild |
err_channel_permission_overwrites |
err_the_channels_for_this_guild_are_too_large |
err_unauthorized_invalid_token |
err_verify_your_account |
err_you_are_opening_direct_messages_too_fast |
err_send_messages_has_been_temporarily_disabled |
err_request_entity_too_large |
err_this_feature_has_been_temporarily_disabled_server_side |
err_the_user_is_banned_from_this_guild |
err_connection_has_been_revoked |
err_target_user_is_not_connected_to_voice |
err_this_message_has_already_been_crossposted |
err_an_application_command_with_that_name_already_exists |
err_application_interaction_failed_to_send |
err_cannot_send_a_message_in_a_forum_channel |
err_interaction_has_already_been_acknowledged |
err_tag_names_must_be_unique |
err_service_resource_is_being_rate_limited |
err_no_tags_available |
err_tag_required |
err_entitlement_already_granted |
err_missing_access |
err_invalid_account_type |
err_cannot_execute_action_on_a_dm_channel |
err_guild_widget_disabled |
err_cannot_edit_a_message_by_other_user |
err_cannot_send_empty_message |
err_cannot_send_messages_to_this_user |
err_cannot_send_messages_in_a_non_text_channel |
err_channel_verification_level_too_high |
err_oauth2_application_does_not_have_a_bot |
err_oauth2_application_limit |
err_invalid_oauth2_state |
err_permissions |
err_invalid_authentication_token |
err_note_was_too_long |
err_too_few_or_too_many_messages |
err_invalid_mfa_level |
err_invalid_pin |
err_invite_code_invalid |
err_system_message |
err_channel_type |
err_invalid_oauth2_access_token |
err_missing_required_oauth2_scope |
err_invalid_webhook_token |
err_invalid_role |
err_invalid_recipients |
err_too_old_to_bulk_delete |
err_invalid_form_body |
err_invite_error |
err_invalid_activity_action |
err_invalid_api_version_provided |
err_file_uploaded_exceeds_the_maximum_size |
err_invalid_file_uploaded |
err_cannot_self_redeem_this_gift |
err_invalid_guild |
err_invalid_sku |
err_invalid_request_origin |
err_invalid_message_type |
err_payment_source_required |
err_cannot_modify_a_system_webhook |
err_cannot_delete_a_channel_required_for_community_guilds |
err_cannot_edit_stickers_within_a_message |
err_invalid_sticker_sent |
err_tried_to_perform_an_operation_on_an_archived_thread |
err_invalid_thread_notification_settings |
err_before_value_is_earlier_than_the_thread_creation_date |
err_community_server_channels_must_be_text_channels |
err_bad_event_entity_type |
err_this_server_is_not_available_in_your_location |
err_monetization_enabled_in_order_to_perform_this_action |
err_more_boosts_to_perform_this_action |
err_the_request_body_contains_invalid_json |
err_owner_cannot_be_pending_member |
err_ownership_cannot_be_transferred_to_a_bot_user |
err_failed_to_resize_asset_below_the_maximum_size |
err_cannot_mix_subscription_and_non_subscription_roles_for_an_emoji |
err_cannot_convert_between_premium_emoji_and_normal_emoji |
err_uploaded_file_not_found |
err_voice_messages_do_not_support_additional_content |
err_voice_messages_must_have_a_single_audio_attachment |
err_voice_messages_must_have_supporting_metadata |
err_voice_messages_cannot_be_edited |
err_cannot_delete_guild_subscription_integration |
err_you_cannot_send_voice_messages_in_this_channel |
err_the_user_account_must_first_be_verified |
err_you_do_not_have_permission_to_send_this_sticker |
err_two_factor_is_required_for_this_operation |
err_no_users_with_discordtag_exist |
err_reaction_was_blocked |
err_user_cannot_use_burst_reactions |
err_application_not_yet_available |
err_api_resource_is_currently_overloaded |
err_the_stage_is_already_open |
err_cannot_reply_without_permission_to_read_message_history |
err_a_thread_has_already_been_created_for_this_message |
err_thread_is_locked |
err_active_threads |
err_active_announcement_threads |
err_invalid_json_for_uploaded_lottie_file |
err_uploaded_lotties_cannot_contain_rasterized_images |
err_sticker_maximum_framerate |
err_sticker_frame_count |
err_lottie_animation_dimensions |
err_sticker_frame_rate |
err_sticker_animation_duration |
err_cannot_update_a_finished_event |
err_failed_to_create_stage_needed_for_stage_event |
err_message_was_blocked_by_automatic_moderation |
err_title_was_blocked_by_automatic_moderation |
err_webhooks_posted_to_forum_channels_must_have_a_thread_name_or_thread_id |
err_webhooks_posted_to_forum_channels_cannot_have_both_a_thread_name_and_thread_id |
err_webhooks_can_only_create_threads_in_forum_channels |
err_webhook_services_cannot_be_used_in_forum_channels |
err_message_blocked_links |
err_cannot_enable_onboarding_requirements_are_not_met |
err_cannot_update_onboarding_below_requirements |

## ◆ forum_layout_type

enum dpp::forum_layout_type : uint8_t

Types of forum layout views that indicates how the threads in a forum channel will be displayed for users by default.

Enumerator
fl_not_set | No default has been set for the forum channel.
fl_list_view | Display posts as a list.
fl_gallery_view | Display posts as a collection of tiles.

## ◆ guild_afk_timeout_t

enum dpp::guild_afk_timeout_t : uint8_t

Voice AFK timeout values for guild::afk_timeout.

Enumerator
afk_off | AFK timeout disabled.
afk_60 | AFK timeout of 1 Minute.
afk_300 | AFK timeout of 5 Minutes.
afk_900 | AFK timeout of 15 Minutes.
afk_1800 | AFK timeout of 30 Minutes.
afk_3600 | AFK timeout of 1 Hour.

## ◆ guild_explicit_content_t

enum dpp::guild_explicit_content_t : uint8_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_role_subscription_enabled | Guild has enabled role subscriptions.
g_news | Guild has access to create announcement channels.
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_creator_store_page_enabled | Guild has enabled the role subscription promo page.
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.

Deprecated
  Removed by Discord

g_three_day_thread_archive

Guild has access to the three day archive time for threads.

Deprecated
  Removed by Discord

g_ticketed_events | Guild has enabled ticketed events.

g_channel_banners

Guild can have channel banners.

Deprecated
  Removed by Discord

## ◆ guild_flags_extra

enum dpp::guild_flags_extra : uint16_t

Additional boolean flag values for guild, as guild_flags is full.

Enumerator
g_premium_progress_bar_enabled | Guild has premium progress bar enabled.
g_animated_banner | Guild can have an animated banner (doesn't mean it actually has one though).
g_auto_moderation | Guild has auto moderation.
g_invites_disabled | Guild has paused invites, preventing new users from joining.
g_developer_support_server | Guild has been set as support server of an app in the App Directory.
g_no_role_subscription_notifications | Guild role subscription purchase and renewal notifications are off.
g_no_role_subscription_notification_replies | Guild role subscription sticker reply buttons are off.
g_role_subscriptions_available_for_purchase | Guild has role subscriptions that can be purchased.
g_raid_alerts_disabled | Guild has disabled alerts for join raids in the configured safety alerts channel.

## ◆ guild_member_flags

enum dpp::guild_member_flags : uint16_t

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

Note
  Use the setter functions in dpp::guild_member and do not toggle the bits yourself.

Enumerator
gm_deaf | Member deafened in voice channel.
gm_mute | Member muted in voice channels.
gm_pending | Member pending verification by membership screening.
gm_animated_avatar | Member has animated guild-specific avatar.
gm_voice_action | gm_deaf or gm_mute has been toggled
gm_did_rejoin | Member has left and rejoined the guild.
gm_completed_onboarding | Member has completed onboarding.
gm_bypasses_verification | Member is exempt from guild verification requirements.
gm_started_onboarding | Member has started onboarding.

gm_roles_action

Should change roles on next call to edit guild_member?

Warning
  This is set by dpp::guild_member::add_role, dpp::guild_member::remove_role, and dpp::guild_member::set_roles. You should only ever use this value if you know what you're doing, otherwise stick to the three functions listed.

gm_nickname_action

Should nicknames on next call to edit guild_member?

Warning
  This is set by dpp::guild_member::set_nickname. You should only ever use this value if you know what you're doing, otherwise stick to the function listed.

## ◆ 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+.

## ◆ guild_premium_tier_t

enum dpp::guild_premium_tier_t : uint8_t

The guild's premium tier.

Enumerator
tier_none | Guild has not unlocked any Server Boost perks.
tier_1 | Guild has unlocked Server Boost level 1 perks.
tier_2 | Guild has unlocked Server Boost level 2 perks.
tier_3 | Guild has unlocked Server Boost level 3 perks.

## ◆ http_error

enum dpp::http_error : uint8_t

Error values. Most of these are currently unused in https_client.

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

enum dpp::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.

## ◆ http_state

enum dpp::http_state : uint8_t

HTTP connection status.

Enumerator
HTTPS_HEADERS | Sending/receiving HTTP headers and request body.
HTTPS_CONTENT | Receiving body content.
HTTPS_DONE | Completed connection, as it was closed or the body is >= Content-Length.
HTTPS_CHUNK_LEN | Received chunk length.
HTTPS_CHUNK_TRAILER | Received chunk trailing CRLF.
HTTPS_CHUNK_LAST | The last received chunk is the final chunk.
HTTPS_CHUNK_CONTENT | Receiving contents of a chunk.

## ◆ image_type

enum dpp::image_type : uint8_t

Supported image types for profile pictures and CDN endpoints.

Enumerator
i_png | image/png
i_jpg | image/jpeg.
i_gif | image/gif.
i_webp | Webp.

## ◆ integration_flags

enum dpp::integration_flags : uint8_t

Integration flags.

Enumerator
if_enabled | Is this integration enabled?

if_syncing

Is this integration syncing?

Warning
  This is not provided for discord bot integrations.

if_emoticons

Whether emoticons should be synced for this integration (twitch only currently).

Warning
  This is not provided for discord bot integrations.

if_revoked

Has this integration been revoked?

Warning
  This is not provided for discord bot integrations.

if_expire_kick

Kick user when their subscription expires, otherwise only remove the role that is specified by role_id.

Warning
  This is not provided for discord bot integrations.

## ◆ integration_type

enum dpp::integration_type : uint8_t

Integration types.

Enumerator
i_twitch | Twitch integration.
i_youtube | YouTube integration.
i_discord | Discord integration.
i_guild_subscription | Subscription.

## ◆ intents

enum dpp::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_message_content | Intent for receipt of message content.
i_guild_scheduled_events | Scheduled events.
i_auto_moderation_configuration | Auto moderation configuration.
i_auto_moderation_execution | Auto moderation configuration.
i_guild_message_polls | Intent for receipt of guild message poll votes.
i_direct_message_polls | Intent for receipt of direct message poll votes.
i_default_intents | Default D++ intents (all non-privileged intents).
i_privileged_intents | Privileged intents requiring ID.
i_all_intents | Every single intent (dpp::i_default_intents and dpp::i_privileged_intents).
i_unverified_default_intents | Unverified bots default intents.

## ◆ interaction_context_type

enum dpp::interaction_context_type

Enumerator
itc_guild | Interaction can be used within servers.
itc_bot_dm | Interaction can be used within DMs with the app's bot user.
itc_private_channel | Interaction can be used within Group DMs and DMs other than the app's bot user.

## ◆ interaction_response_type

enum dpp::interaction_response_type

Response types when responding to an interaction within on_interaction_create.

Enumerator
ir_pong | Acknowledge a Ping.
ir_channel_message_with_source | Respond to an interaction with a message.
ir_deferred_channel_message_with_source | Acknowledge an interaction and edit a response later, the user sees a loading state.
ir_deferred_update_message | For components, acknowledge 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.

Note
  Be sure to do this within 500ms of the interaction!

ir_modal_dialog

A modal dialog box.

Note
  Not available for modal submit and ping interactions.

ir_premium_required

Acknowledge a interaction with an upgrade button, only available for apps with monetization enabled.

See also
  https://discord.com/developers/docs/monetization/entitlements#premiumrequired-interaction-response

Note
  Not available for autocomplete and ping interactions.

Warning
  This response does not support using content, embeds, or attachments, so reply with no data when using this!

@depreciated Replaced with buttons with a style of cos_premium This interaction type may stop working at any point

## ◆ interaction_type

enum dpp::interaction_type

Types of interaction in the dpp::interaction class

Enumerator
it_ping | A ping interaction.
it_application_command | Application command (slash command) interaction.
it_component_button | Button click or select menu chosen (component interaction).
it_autocomplete | Autocomplete interaction.
it_modal_submit | Modal form submission.

## ◆ invite_target_t

enum dpp::invite_target_t : uint8_t

Invite target types for dpp::invite.

Enumerator
itt_none | Undefined invite target type.
itt_stream | Stream target type.
itt_embedded_application | Embedded Application target type.

## ◆ loglevel

enum dpp::loglevel

Log levels.

Enumerator
ll_trace | Trace.
ll_debug | Debug.
ll_info | Information.
ll_warning | Warning.
ll_error | Error.
ll_critical | Critical.

## ◆ media_loading_state

enum dpp::media_loading_state : uint8_t

Loading state for "unfurled" media, e.g. thumbnails and images in a message or component.

Enumerator
ls_unknown | Loading state is unknown.
ls_loading | Discord is loading the media.
ls_loaded_success | The image was processed and loaded successfully.
ls_not_found | The media was not found.

## ◆ message_flags

enum dpp::message_flags : uint16_t

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".
m_thread_mention_failed | This message failed to mention some roles and add their members to the thread.
m_suppress_notifications | This message will not trigger push and desktop notifications.
m_is_voice_message | This message is a voice message.
m_has_snapshot | Contains forwarded snapshot.
m_using_components_v2 | Message components vector contains v2 components.

## ◆ message_search_has

enum dpp::message_search_has : uint8_t

Possible values for the "has" filter in message search.

Enumerator
has_image |
has_sound |
has_video |
has_file |
has_sticker |
has_embed |
has_link |
has_poll |
has_snapshot |

## ◆ message_search_order

enum dpp::message_search_order : uint8_t

Sort order for message search results.

Enumerator
sort_desc |
sort_asc |

## ◆ message_search_sort

enum dpp::message_search_sort : uint8_t

Sort mode for message search results.

Enumerator
sort_timestamp |
sort_relevance |

## ◆ message_type

enum dpp::message_type : uint8_t

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.
mt_auto_moderation_action | Auto moderation action.
mt_role_subscription_purchase | Role subscription purchase.
mt_interaction_premium_upsell | Interaction premium upsell @depreciated Replaced with buttons with a style of cos_premium This message type may stop working at any point.
mt_stage_start | Stage start.
mt_stage_end | Stage end.
mt_stage_speaker | Stage speaker.
mt_stage_topic | Stage topic.
mt_application_premium_subscription | Guild application premium subscription.

## ◆ 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.

## ◆ onboarding_mode

enum dpp::onboarding_mode : uint8_t

The onboarding mode for the dpp::onboarding object. Defines the criteria used to satisfy Onboarding constraints that are required for enabling.

Enumerator
gom_default | Counts only Default Channels towards constraints.
gom_advanced | Counts Default Channels and Questions towards constraints.

## ◆ onboarding_prompt_flags

enum dpp::onboarding_prompt_flags : uint8_t

Various flags for dpp::onboarding_prompt.

Enumerator
opf_single_select | Indicates whether users are limited to selecting one option for the prompt.
opf_required | Indicates whether the prompt is required before a user completes the onboarding flow.
opf_in_onboarding | Indicates whether the prompt is present in the onboarding flow. If set, the prompt will only appear in the Channels & Roles tab.

## ◆ onboarding_prompt_type

enum dpp::onboarding_prompt_type : uint8_t

The various types of dpp::onboarding_prompt.

Enumerator
opt_multiple_choice | Multiple choice.
opt_dropdown | Dropdown.

## ◆ overwrite_type

enum dpp::overwrite_type : uint8_t

channel permission overwrite types

Enumerator
ot_role | Role.
ot_member | Member.

## ◆ parameter_type

enum dpp::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 parameter.
pt_role | Role object parameter.
pt_channel | Channel object parameter.
pt_user | User object parameter.
pt_integer | 64 bit signed integer parameter.
pt_double | double floating point parameter.
pt_boolean | Boolean parameter.

## ◆ permissions

enum dpp::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 and joining voice 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.

Warning
  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 public and announcement 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_use_embedded_activities | Allows for using 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.
p_view_creator_monetization_analytics | Allows for viewing role subscription insights.
p_use_soundboard | Allows for using soundboard in a voice channel.

p_create_guild_expressions

Allows for creating emojis, stickers, and soundboard sounds, and editing and deleting those created by the current user.

Note
  Not yet available to developers.

See also
  https://discord.com/developers/docs/change-log#clarification-on-permission-splits-for-expressions-and-events

p_create_events

Allows for creating scheduled events, and editing and deleting those created by the current user.

Note
  Not yet available to developers.

See also
  https://discord.com/developers/docs/change-log#clarification-on-permission-splits-for-expressions-and-events

p_use_external_sounds | Allows the usage of custom soundboard sounds from other servers.
p_send_voice_messages | Allows sending voice messages.
p_use_clyde_ai | Allows use of Clyde AI.
p_send_polls | Allows sending polls.

p_use_external_apps

Allows user-installed apps to send public responses. When disabled, users will still be allowed to use their apps but the responses will be ephemeral.

Note
  This only applies to apps not also installed to the server.

p_pin_messages | Allows pinning and unpinning messages.
p_bypass_slowmode | Allows members to bypass the slow mode rate limit for sending messages in a channel.

## ◆ poll_layout_type

enum dpp::poll_layout_type

Poll layout types.

Note
  At the time of writing Discord only has 1, "The, uhm, default layout type."

See also
  https://discord.com/developers/docs/resources/poll#layout-type

Enumerator
pl_default | According to Discord, quote, "The, uhm, default layout type.".

## ◆ presence_flags

enum dpp::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.
ps_invisible | Invisible (show as offline).

## ◆ raii_socket_type

enum dpp::raii_socket_type

Enumerator
rst_udp |
rst_tcp |

## ◆ region

enum dpp::region : uint8_t

Represents voice regions for guilds and channels.

Deprecated
  Deprecated in favour of per-channel regions. Please use dpp::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 (if the role is pinned in the user listing).
r_managed | Managed role (introduced by a bot or application).
r_mentionable | Whether this role is mentionable with a ping.
r_premium_subscriber | Whether this is the guild's booster role.
r_available_for_purchase | Whether the role is available for purchase.
r_guild_connections | Whether the role is a guild's linked role.
r_in_prompt | Whether the role can be selected by members in an onboarding prompt.

## ◆ separator_spacing

enum dpp::separator_spacing : uint8_t

Spacing types for components v2 separator.

Enumerator
sep_small | Small separator.
sep_large | Large separator.

## ◆ shard_frame_type

enum dpp::shard_frame_type : int

Represents different event opcodes sent and received on a shard websocket.

These are used internally to route frames.

Enumerator

ft_dispatch

An event was dispatched.

Note
  Receive only

ft_heartbeat

Fired periodically by the client to keep the connection alive.

Note
  Send/Receive

ft_identify

Starts a new session during the initial handshake.

Note
  Send only

ft_presence

Update the client's presence.

Note
  Send only

ft_voice_state_update

Used to join/leave or move between voice channels.

Note
  Send only

ft_resume

Resume a previous session that was disconnected.

Note
  Send only

ft_reconnect

You should attempt to reconnect and resume immediately.

Note
  Receive only

ft_request_guild_members

Request information about offline guild members in a large guild.

Note
  Send only

ft_invalid_session

The session has been invalidated. You should reconnect and identify/resume accordingly.

Note
  Receive only

ft_hello

Sent immediately after connecting, contains the heartbeat interval to use.

Note
  Receive only

ft_heartbeat_ack

Sent in response to receiving a heartbeat to acknowledge that it has been received.

Note
  Receive only

ft_request_soundboard_sounds

Request information about soundboard sounds in a set of guilds.

Note
  Send only

## ◆ sku_flags

enum dpp::sku_flags : uint16_t

SKU flags.

Enumerator
sku_available | SKU is available for purchase.
sku_guild_subscription | Recurring SKU that can be purchased by a user and applied to a single server. Grants access to every user in that server.
sku_user_subscription | Recurring SKU purchased by a user for themselves. Grants access to the purchasing user in every server.

## ◆ sku_type

enum dpp::sku_type : uint8_t

The type of SKU.

Enumerator
DURABLE | Represents a durable one-time purchase.
CONSUMABLE | Consumable one-time purchase.
SUBSCRIPTION | Represents a recurring subscription.

SUBSCRIPTION_GROUP

System-generated group for each SUBSCRIPTION SKU created.

Warning
  These are automatically created for each subscription SKU and are not used at this time. Please refrain from using these.

## ◆ slashcommand_contextmenu_type

enum dpp::slashcommand_contextmenu_type

Right-click context menu types.

Enumerator
ctxm_none | Undefined context menu type.
ctxm_chat_input | DEFAULT: these are the generic slash commands (e.g. /ping, /pong, etc).
ctxm_user | A slashcommand that goes in the user context menu.
ctxm_message | A slashcommand that goes in the message context menu.

## ◆ socket_event_flags

enum dpp::socket_event_flags : uint8_t

Types of IO events a socket may subscribe to.

Enumerator
WANT_READ | Socket wants to receive events when it can be read from. This is provided by the underlying implementation.
WANT_WRITE | Socket wants to receive events when it can be written to. This is provided by the underlying implementation, and will be a one-off event. If you want to receive ongoing write events you must re-request this event type each time.
WANT_ERROR | Socket wants to receive events that indicate an error condition. Note that EOF (graceful close) is not an error condition and is indicated by errno being 0 and ::read() returning 0.
WANT_DELETION | Socket should be removed as soon as is safe to do so. Generally, this is after the current iteration through the active event list.

## ◆ socket_listener_type

enum dpp::socket_listener_type : uint8_t

Enumerator
li_plaintext |
li_ssl |

## ◆ 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.

## ◆ start_type

enum dpp::start_type : bool

Types of startup for cluster::start().

Enumerator
st_wait | Wait forever on a condition variable. The cluster will spawn threads for each shard and start() will not return in normal operation.
st_return | Return immediately after starting shard threads. If you set the parameter of cluster::start() to this value, you will have to manage the lifetime and scope of your cluster object yourself. Taking it out of scope or deleting its pointer will terminate the bot.

## ◆ sticker_format

enum dpp::sticker_format : uint8_t

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

Enumerator
sf_png |
sf_apng |
sf_lottie |
sf_gif |

## ◆ sticker_type

enum dpp::sticker_type : uint8_t

Represents the type of a sticker.

Enumerator
st_standard | An official sticker in a pack.
st_guild | Guild sticker.

## ◆ team_member_role_t

enum dpp::team_member_role_t : uint8_t

Team member role types for application team members.

These are hard coded to string forms by discord. If further types are added, this enum will be extended to support them.

Enumerator
tmr_owner | Team owner.
tmr_admin | Team admin.
tmr_developer | Developer.
tmr_readonly | Read-Only.

## ◆ 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.

## ◆ 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_balance | 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.

Note
  shows online even when not connected to a websocket.

u_nitro_basic | User has nitro basic.
u_active_developer | User has the active developer badge.
u_animated_banner | User's banner is animated.

## ◆ 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.

## ◆ voice_websocket_opcode_t

enum dpp::voice_websocket_opcode_t : uint8_t

Discord voice websocket opcode types.

Enumerator
voice_opcode_connection_identify |
voice_opcode_connection_select_protocol |
voice_opcode_connection_ready |
voice_opcode_connection_heartbeat |
voice_opcode_connection_description |
voice_opcode_client_speaking |
voice_opcode_connection_heartbeat_ack |
voice_opcode_connection_resume |
voice_opcode_connection_hello |
voice_opcode_connection_resumed |
voice_opcode_multiple_clients_connect |
voice_opcode_client_disconnect |
voice_opcode_media_sink |
voice_client_flags |
voice_client_platform |
voice_client_dave_prepare_transition |
voice_client_dave_execute_transition |
voice_client_dave_transition_ready |
voice_client_dave_prepare_epoch |
voice_client_dave_mls_external_sender |
voice_client_dave_mls_key_package |
voice_client_dave_mls_proposals |
voice_client_dave_mls_commit_message |
voice_client_dave_announce_commit_transition |
voice_client_dave_mls_welcome |
voice_client_dave_mls_invalid_commit_welcome |

## ◆ voiceregion_flags

enum dpp::voiceregion_flags

Flags related to a voice region.

Enumerator
v_optimal | The closest (optimal) voice region.
v_deprecated | A Deprecated voice region (avoid switching to these).
v_custom | A custom voice region (used for events/etc).

## ◆ voicestate_flags

enum dpp::voicestate_flags

Bit mask flags relating to voice states.

Enumerator
vs_deaf | Deafened by the server.
vs_mute | Muted by the server.
vs_self_mute | Locally Muted.
vs_self_deaf | Locally deafened.
vs_self_stream | Whether this user is streaming using "Go Live".
vs_self_video | Whether this user's camera is enabled.
vs_suppress | Whether this user's permission to speak is denied.

## ◆ webhook_type

enum dpp::webhook_type

Defines types of webhook.

Enumerator
w_incoming | Incoming webhook.
w_channel_follower | Channel following webhook.
w_application | Application webhooks for interactions.

## ◆ websocket_protocol_t

enum dpp::websocket_protocol_t : uint8_t

Websocket protocol types available on Discord.

Enumerator
ws_json | JSON data, text, UTF-8 character set.
ws_etf | Erlang Term Format (ETF) binary protocol.

## ◆ 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.
OP_AUTO | Automatic selection of type.

## ◆ 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_EXPORT dpp::base64_encode | ( | unsigned char const * | buf,
|  | unsigned int | buffer_length )

Base64 encode data into a string.

Parameters

  buf | Raw binary buffer
  buffer_length | Buffer length to encode

Returns
  The base64 encoded string

## ◆ bool_not_null()

bool DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value

Returns
  found value

## ◆ close_socket()

DPP_EXPORT bool dpp::close_socket | ( | dpp::socket | sfd | ) |

Close a socket.

Parameters

  sfd | Socket to close

Returns
  false on error, true on success

## ◆ comma()

template<class T>

std::string dpp::comma | ( | T | value | ) |

Add commas to a string (or dots) based on current locale server-side.

Template Parameters

  T | type of numeric value

Parameters

  value | Value

Returns
  std::string number with commas added

## ◆ create_socket_engine()

DPP_EXPORT std::unique_ptr< socket_engine_base > dpp::create_socket_engine | ( | class cluster * | creator | ) |

This is implemented by whatever derived form socket_engine takes.

Parameters

  creator | Creating cluster

## ◆ double_not_null()

double DPP_EXPORT dpp::double_not_null | ( | const nlohmann::json * | j,
|  | const char * | keyname )

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

Parameters

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value

Returns
  found value

## ◆ DPP_CHECK_ABI_COMPAT() [1/3]

dpp::DPP_CHECK_ABI_COMPAT | ( | async<> | ,
|  | async_dummy | )

## ◆ DPP_CHECK_ABI_COMPAT() [2/3]

dpp::DPP_CHECK_ABI_COMPAT | ( | coroutine< void > | ,
|  | coroutine_dummy | )

## ◆ DPP_CHECK_ABI_COMPAT() [3/3]

dpp::DPP_CHECK_ABI_COMPAT | ( | task< void > | ,
|  | task_dummy | )

## ◆ DPP_DEPRECATED()

class DPP_EXPORT dpp::DPP_DEPRECATED | ( | "commandhandler should not be used. Please consider using dpp::cluster::register_command instead." |  | ) |

The commandhandler class represents a group of commands, prefixed or slash commands with handling functions.

It can automatically register slash commands, and handle routing of messages and interactions to separated command handler functions.

Deprecated
  commandhandler and message commands are deprecated and dpp::slashcommand is encouraged as a replacement.

List of guild commands to bulk register

List of global commands to bulk register

Commands in the handler

Valid prefixes

Set to true automatically if one of the prefixes added is "/"

Cluster we are attached to for issuing REST calls

Application ID

Interaction event handle

Message event handle

Returns true if the string has a known prefix on the start. Modifies string to remove prefix if it returns true.

Parameters

  str | String to check and modify

Returns
  true string contained a prefix, prefix removed from string
  false string did not contain a prefix

Construct a new commandhandler object

Parameters

  o | Owning cluster to attach to
  auto_hook_events | Set to true to automatically hook the on_slashcommand and on_message events. You should not need to set this to false unless you have a specific use case, as D++ supports multiple listeners to an event, so will allow the commandhandler to hook to your command events without disrupting other uses for the events you may have.
  application_id | The application id of the bot. If not specified, the class will look within the cluster object and use cluster::me::id instead.

Destroy the commandhandler object

Set the application id after construction

Parameters

  o | Owning cluster to attach to

Add a prefix to the command handler

Parameters

  prefix | Prefix to be handled by the command handler

Returns
  commandhandler& reference to self

Add a command to the command handler

Parameters

  command | Command to be handled. Note that if any one of your prefixes is "/" this will attempt to register a global command using the API and you will receive notification of this command via an interaction event.
  handler | Handler function
  parameters | Parameters to use for the command
  description | The description of the command, shown for slash commands
  guild_id | The guild ID to restrict the command to. For slash commands causes registration of a guild command as opposed to a global command.

Returns
  commandhandler& reference to self

Exceptions

  dpp::logic_exception | if application ID cannot be determined

Register all slash commands with Discord This method must be called at least once if you are using the "/" prefix to mark the end of commands being added to the handler. Note that this uses bulk registration and will replace any existing slash commands.

Note that if you have previously registered your commands and they have not changed, you do not need to call this again. Discord retains a cache of previously added commands.

Returns
  commandhandler& Reference to self for chaining method calls

Route a command from the on_message_create function. Call this method from within your on_message_create with the received dpp::message object if you have disabled automatic registration of events.

Parameters

  event | message create event to parse

Route a command from the on_slashcommand function. Call this method from your on_slashcommand with the received dpp::interaction_create_t object if you have disabled automatic registration of events.

Parameters

  event | command interaction event to parse

Reply to a command. You should use this method rather than cluster::message_create as the way you reply varies between slash commands and message commands. Note you should ALWAYS reply. Slash commands will emit an ugly error to the user if you do not emit some form of reply within 3 seconds.

Parameters

  m | message to reply with.
  source | source of the command
  callback | User function to execute when the api call completes.

Reply to a command without a message, causing the discord client to display "Bot name is thinking...". The "thinking" message will persist for a maximum of 15 minutes. This counts as a reply for a slash command. Slash commands will emit an ugly error to the user if you do not emit some form of reply within 3 seconds.

Parameters

  source | source of the command
  callback | User function to execute when the api call completes.

Easter egg (redefinition of dpp::commandhandler::thinking).

## ◆ find_channel()

DPP_EXPORT class channel * dpp::find_channel | ( | snowflake | id | ) |

Find an object in the cache by id.

Returns
  channel* Pointer to the object or nullptr when it's not found

## ◆ find_emoji()

DPP_EXPORT class emoji * dpp::find_emoji | ( | snowflake | id | ) |

Find an object in the cache by id.

Returns
  emoji* Pointer to the object or nullptr when it's not found

## ◆ find_guild()

DPP_EXPORT class guild * dpp::find_guild | ( | snowflake | id | ) |

Find an object in the cache by id.

Returns
  guild* Pointer to the object or nullptr when it's not found

## ◆ 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_id | ID of the guild to find guild_member for
  user_id | ID of the user to find guild_member for

Exceptions

  dpp::cache_exception | if the guild or guild_member is not found in the cache

Returns
  guild_member the cached object, if found

## ◆ find_role()

DPP_EXPORT class role * dpp::find_role | ( | snowflake | id | ) |

Find an object in the cache by id.

Returns
  role* Pointer to the object or nullptr when it's not found

## ◆ find_user()

DPP_EXPORT class user * dpp::find_user | ( | snowflake | id | ) |

Find an object in the cache by id.

Returns
  user* Pointer to the object or nullptr when it's not found

## ◆ for_each_json()

void DPP_EXPORT dpp::for_each_json | ( | nlohmann::json * | parent,
|  | std::string_view | key,
|  | const std::function< void(nlohmann::json *)> & | fn )

Applies a function to each element of a json array.

Parameters

  parent | nlohmann::json instance to retrieve value from
  key | key name to check for the values
  fn | function to apply to each element

## ◆ 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

  j | output json object
  ai | autocomplete_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

  j | output json object
  cdo | command_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

  j | output json object
  ci | command_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

  j | output json object
  bi | button_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

  j | output json object
  gm | guild_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

  j | output json object
  i | interaction 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

  j | output json object
  u | user 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

  j | output json object
  u | user to be deserialized

## ◆ from_string() [1/5]

template<int>

int dpp::from_string | ( | const std::string & | s | ) |

Specialised conversion of int from string.

Template Parameters

  int |

Parameters

  s | string to convert

Returns
  int return value

## ◆ from_string() [2/5]

template<uint32_t>

uint32_t dpp::from_string | ( | const std::string & | s | ) |

Specialised conversion of uint32_t from string.

Template Parameters

  uint32_t |

Parameters

  s | string to convert

Returns
  uint32_t return value

## ◆ from_string() [3/5]

template<uint64_t>

uint64_t dpp::from_string | ( | const std::string & | s | ) |

Specialised conversion of uint64_t from string.

Template Parameters

  int64_t |

Parameters

  s | string to convert

Returns
  uint64_t return value

## ◆ from_string() [4/5]

template<typename T>

T dpp::from_string | ( | const std::string & | s | ) |

Convert any value from a string to another type using stringstream.

Template Parameters

  T | Type to convert to

Parameters

  s | String to convert from

Returns
  T Returned numeric value

Note
  Base 10 for numeric conversions.

## ◆ from_string() [5/5]

template<typename T>

T dpp::from_string | ( | const std::string & | s,
|  | std::ios_base &(* | f )(std::ios_base &) )

Convert any value from a string to another type using stringstream. The optional second parameter indicates the format of the input string, e.g. std::dec for decimal, std::hex for hex, std::oct for octal.

Template Parameters

  T | Type to convert to

Parameters

  s | String to convert from
  f | Numeric base, e.g. std::dec or std::hex

Returns
  T Returned numeric value

## ◆ 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< class channel > * dpp::get_channel_cache | ( |  | ) |

## ◆ get_channel_count()

DPP_EXPORT uint64_t dpp::get_channel_count | ( |  | ) |

Get the amount of cached channel objects.

## ◆ get_emoji_cache()

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

## ◆ get_emoji_count()

DPP_EXPORT uint64_t dpp::get_emoji_count | ( |  | ) |

Get the amount of cached emoji objects.

## ◆ get_guild_cache()

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

## ◆ get_guild_count()

DPP_EXPORT uint64_t dpp::get_guild_count | ( |  | ) |

Get the amount of cached guild objects.

## ◆ get_role_cache()

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

## ◆ get_role_count()

DPP_EXPORT uint64_t dpp::get_role_count | ( |  | ) |

Get the amount of cached role objects.

## ◆ get_user_cache()

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

## ◆ get_user_count()

DPP_EXPORT uint64_t dpp::get_user_count | ( |  | ) |

Get the amount of cached user objects.

## ◆ int16_not_null()

uint16_t DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value

Returns
  found value

## ◆ int32_not_null()

uint32_t DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value

Returns
  found value

## ◆ int64_not_null()

uint64_t DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value

Returns
  found value

## ◆ int8_not_null()

uint8_t DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value

Returns
  found value

## ◆ leading_zeroes()

template<typename T>

std::string dpp::leading_zeroes | ( | T | i,
|  | size_t | width )

Format a numeric type as a string with leading zeroes.

Template Parameters

  T | numeric type

Parameters

  i | numeric value
  width | width of type including the leading zeroes

Returns
  std::string resultant string with leading zeroes

## ◆ lowercase()

template<typename T>

std::basic_string< T > dpp::lowercase | ( | const std::basic_string< T > & | s | ) |

Convert a string to lowercase using tolower().

Template Parameters

  T | type of string

Parameters

  s | String to lowercase

Returns
  std::basic_string<T> lowercased string

## ◆ ltrim()

std::string dpp::ltrim | ( | std::string | s | ) |

inline

trim from beginning of string (left)

Parameters

  s | string to trim

Returns
  std::string trimmed string

## ◆ resolve_hostname()

DPP_EXPORT const dns_cache_entry * dpp::resolve_hostname | ( | const std::string & | hostname,
|  | const std::string & | port )

Resolve a hostname to an addrinfo.

Parameters

  hostname | Hostname to resolve
  port | A port number or named service, e.g. "80"

Returns
  dns_cache_entry* First IP address associated with the hostname DNS record

Exceptions

  dpp::connection_exception | On failure to resolve hostname

## ◆ rest_request()

template<class T>

void dpp::rest_request | ( | dpp::cluster * | c,
|  | const char * | basepath,
|  | const std::string & | major,
|  | const std::string & | minor,
|  | http_method | method,
|  | const std::string & | postdata,
|  | command_completion_event_t | callback )

inline

Templated REST request helper to save on typing.

Template Parameters

  T | type to return in lambda callback

Parameters

  c | calling cluster
  basepath | base path for API call
  major | major API function
  minor | minor API function
  method | HTTP method
  postdata | Post data or empty string
  callback | Callback lambda

## ◆ rest_request< confirmation >()

template<>

void dpp::rest_request< confirmation > | ( | dpp::cluster * | c,
|  | const char * | basepath,
|  | const std::string & | major,
|  | const std::string & | minor,
|  | http_method | method,
|  | const std::string & | postdata,
|  | command_completion_event_t | callback )

inline

Templated REST request helper to save on typing (specialised for confirmation).

Template Parameters

  T | type to return in lambda callback

Parameters

  c | calling cluster
  basepath | base path for API call
  major | major API function
  minor | minor API function
  method | HTTP method
  postdata | Post data or empty string
  callback | Callback lambda

## ◆ rest_request< message >()

template<>

void dpp::rest_request< message > | ( | dpp::cluster * | c,
|  | const char * | basepath,
|  | const std::string & | major,
|  | const std::string & | minor,
|  | http_method | method,
|  | const std::string & | postdata,
|  | command_completion_event_t | callback )

inline

Templated REST request helper to save on typing (specialised for message).

Template Parameters

  T | type to return in lambda callback

Parameters

  c | calling cluster
  basepath | base path for API call
  major | major API function
  minor | minor API function
  method | HTTP method
  postdata | Post data or empty string
  callback | Callback lambda

## ◆ rest_request_list() [1/2]

template<class T>

void dpp::rest_request_list | ( | dpp::cluster * | c,
|  | const char * | basepath,
|  | const std::string & | major,
|  | const std::string & | minor,
|  | http_method | method,
|  | const std::string & | postdata,
|  | command_completion_event_t | callback,
|  | const std::string & | key,
|  | const std::string & | root )

inline

Templated REST request helper to save on typing (for returned lists).

Template Parameters

  T | singular type to return in lambda callback
  T | map type to return in lambda callback

Parameters

  c | calling cluster
  basepath | base path for API call
  major | major API function
  minor | minor API function
  method | HTTP method
  postdata | Post data or empty string
  key | Key name of elements in the json list
  root | Root element to look for
  callback | Callback lambda

## ◆ rest_request_list() [2/2]

template<class T>

void dpp::rest_request_list | ( | dpp::cluster * | c,
|  | const char * | basepath,
|  | const std::string & | major,
|  | const std::string & | minor,
|  | http_method | method,
|  | const std::string & | postdata,
|  | command_completion_event_t | callback,
|  | const std::string & | key = "id" )

inline

Templated REST request helper to save on typing (for returned lists).

Template Parameters

  T | singular type to return in lambda callback
  T | map type to return in lambda callback

Parameters

  c | calling cluster
  basepath | base path for API call
  major | major API function
  minor | minor API function
  method | HTTP method
  postdata | Post data or empty string
  key | Key name of elements in the json list
  callback | Callback lambda

## ◆ rest_request_list< ban >()

template<>

void dpp::rest_request_list< ban > | ( | dpp::cluster * | c,
|  | const char * | basepath,
|  | const std::string & | major,
|  | const std::string & | minor,
|  | http_method | method,
|  | const std::string & | postdata,
|  | command_completion_event_t | callback,
|  | const std::string & | key )

inline

Templated REST request helper to save on typing (for returned lists, specialised for bans).

Template Parameters

  T | singular type to return in lambda callback
  T | map type to return in lambda callback

Parameters

  c | calling cluster
  basepath | base path for API call
  major | major API function
  minor | minor API function
  method | HTTP method
  postdata | Post data or empty string
  key | Key name of elements in the json list
  callback | Callback lambda

## ◆ rest_request_list< invite >()

template<>

void dpp::rest_request_list< invite > | ( | dpp::cluster * | c,
|  | const char * | basepath,
|  | const std::string & | major,
|  | const std::string & | minor,
|  | http_method | method,
|  | const std::string & | postdata,
|  | command_completion_event_t | callback,
|  | const std::string & | key )

inline

Templated REST request helper to save on typing (for returned lists, specialised for invites).

Template Parameters

  T | singular type to return in lambda callback
  T | map type to return in lambda callback

Parameters

  c | calling cluster
  basepath | base path for API call
  major | major API function
  minor | minor API function
  method | HTTP method
  postdata | Post data or empty string
  key | Key name of elements in the json list
  callback | Callback lambda

## ◆ rest_request_list< sticker_pack >()

template<>

void dpp::rest_request_list< sticker_pack > | ( | dpp::cluster * | c,
|  | const char * | basepath,
|  | const std::string & | major,
|  | const std::string & | minor,
|  | http_method | method,
|  | const std::string & | postdata,
|  | command_completion_event_t | callback,
|  | const std::string & | key )

inline

Templated REST request helper to save on typing (for returned lists, specialised for sticker packs).

Template Parameters

  T | singular type to return in lambda callback
  T | map type to return in lambda callback

Parameters

  c | calling cluster
  basepath | base path for API call
  major | major API function
  minor | minor API function
  method | HTTP method
  postdata | Post data or empty string
  key | Key name of elements in the json list
  callback | Callback lambda

## ◆ rest_request_list< voiceregion >()

template<>

void dpp::rest_request_list< voiceregion > | ( | dpp::cluster * | c,
|  | const char * | basepath,
|  | const std::string & | major,
|  | const std::string & | minor,
|  | http_method | method,
|  | const std::string & | postdata,
|  | command_completion_event_t | callback,
|  | const std::string & | key )

inline

Templated REST request helper to save on typing (for returned lists, specialised for voiceregions).

Template Parameters

  T | singular type to return in lambda callback
  T | map type to return in lambda callback

Parameters

  c | calling cluster
  basepath | base path for API call
  major | major API function
  minor | minor API function
  method | HTTP method
  postdata | Post data or empty string
  key | Key name of elements in the json list
  callback | Callback lambda

## ◆ rest_request_vector()

template<class T>

void dpp::rest_request_vector | ( | dpp::cluster * | c,
|  | const char * | basepath,
|  | const std::string & | major,
|  | const std::string & | minor,
|  | http_method | method,
|  | const std::string & | postdata,
|  | command_completion_event_t | callback )

inline

Templated REST request helper to save on typing (for returned lists, specialised for objects which doesn't have ids).

Template Parameters

  T | singular type to return in lambda callback
  T | vector type to return in lambda callback

Parameters

  c | calling cluster
  basepath | base path for API call
  major | major API function
  minor | minor API function
  method | HTTP method
  postdata | Post data or empty string
  callback | Callback lambda

## ◆ rtrim()

std::string dpp::rtrim | ( | std::string | s | ) |

inline

trim from end of string (right)

Parameters

  s | String to trim

Returns
  std::string trimmed string

## ◆ run_once()

template<typename T>

auto dpp::run_once | ( |  | ) |

Run some code within an if() statement only once.

Use this template like this:

if (dpp::run_once<struct any_unique_name_you_like_here>()) {
// Your code here
}
dpp::run_once
auto run_once()
Run some code within an if() statement only once.
Definition once.h:41

Template Parameters

  T | any unique 'tag' identifier name

Returns
  auto a true/false return to say if we should execute or not

## ◆ set_bool_not_null()

void DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value
  v | Value to change

## ◆ set_double_not_null()

void DPP_EXPORT dpp::set_double_not_null | ( | const nlohmann::json * | j,
|  | const char * | keyname,
|  | double & | v )

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

Parameters

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value
  v | Value to change

## ◆ set_iconhash_not_null()

void DPP_EXPORT dpp::set_iconhash_not_null | ( | const nlohmann::json * | j,
|  | const char * | keyname,
|  | utility::iconhash & | v )

This is a repeat of set_string_not_null, but takes in a iconhash.

Parameters

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value
  v | Value to change

## ◆ set_int16_not_null()

void DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value
  v | Value to change

## ◆ set_int32_not_null()

void DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value
  v | Value to change

## ◆ set_int64_not_null()

void DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value
  v | Value to change

## ◆ set_int8_not_null()

void DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value
  v | Value to change

## ◆ set_nonblocking()

DPP_EXPORT bool dpp::set_nonblocking | ( | dpp::socket | sockfd,
|  | bool | non_blocking )

Set a socket to blocking or non-blocking IO.

Parameters

  sockfd | socket to act upon
  non_blocking | should socket be non-blocking?

Returns
  false on error, true on success

## ◆ set_object_array_not_null()

template<class T>

void dpp::set_object_array_not_null | ( | nlohmann::json * | j,
|  | std::string_view | key,
|  | std::vector< T > & | v )

Sets an array of objects from a json field value, if defined, else does nothing.

Template Parameters

  T | The class of which the array consists of. Must be derived from dpp::json_interface

Parameters

  j | nlohmann::json instance to retrieve value from
  key | key name to check for the values
  v | Value to change

## ◆ set_signal_handler()

void dpp::set_signal_handler | ( | int | signal | ) |

Set up a signal handler to be ignored.

Parameters

  signal | Signal to set. If the signal is already set up with a handler, this will do nothing.

## ◆ set_snowflake_array_not_null()

void DPP_EXPORT dpp::set_snowflake_array_not_null | ( | const nlohmann::json * | j,
|  | const char * | keyname,
|  | std::vector< class snowflake > & | v )

Sets an array of snowflakes from a json field value, if defined, else does nothing.

Parameters

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for the values
  v | Value to change

## ◆ set_snowflake_not_null()

void DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value
  v | Value to change

## ◆ set_string_not_null()

void DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value
  v | Value to change

## ◆ set_ts_not_null()

void DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value
  v | Value to change

## ◆ snowflake_not_null()

uint64_t DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value

Returns
  found value

## ◆ string_not_null()

std::string DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value

Returns
  found value

## ◆ to_hex()

template<typename T>

std::string dpp::to_hex | ( | T | i,
|  | bool | leading_zeroes = true )

Convert a numeric value to hex.

Template Parameters

  T | numeric type

Parameters

  i | numeric value
  leading_zeroes | set to false if you don't want the leading zeroes in the output

Returns
  std::string value in hex, the length will be 2* the raw size of the type

## ◆ 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

  j | output json object
  opt | command_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

  j | output json object
  choice | command_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

  j | output json object
  cp | command_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

  j | output json object
  gcp | guild_command_permissions to be serialized

## ◆ to_json() [5/7]

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

Serialize a permission_overwrite object to json.

Parameters

  j | JSON object to serialize to
  po | object to serialize

## ◆ 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

  j | output json object
  cmd | slashcommand to be serialized

## ◆ to_json() [7/7]

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

Serialize a thread_metadata object to json.

Parameters

  j | JSON object to serialize to
  tmdata | object to serialize

## ◆ trim()

std::string dpp::trim | ( | std::string | s | ) |

inline

Trim from both ends of string (right then left).

Parameters

  s | string to trim

Returns
  std::string trimmed string

## ◆ ts_not_null()

time_t DPP_EXPORT 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

  j | nlohmann::json instance to retrieve value from
  keyname | key name to check for a value

Returns
  found value

## ◆ ts_to_string()

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

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

Parameters

  ts | Timestamp to convert

Returns
  std::string Converted time/date string

## ◆ uppercase()

template<typename T>

std::basic_string< T > dpp::uppercase | ( | const std::basic_string< T > & | s | ) |

Convert a string to uppercase using toupper().

Template Parameters

  T | type of string

Parameters

  s | String to uppercase

Returns
  std::basic_string<T> uppercased string

## ◆ validate_configuration()

template<build_type>

bool dpp::validate_configuration | ( |  | ) |

extern

## ◆ when_any()

template<typename... Args>

dpp::when_any | ( | Args... |  | ) | ->when_any< detail::when_any::awaitable_type< Args >... >

## Variable Documentation

## ◆ AUTOCOMPLETE_MAX_CHOICES

size_t dpp::AUTOCOMPLETE_MAX_CHOICES = 25

inline constexpr

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.

## ◆ DECOMP_BUFFER_SIZE

size_t dpp::DECOMP_BUFFER_SIZE = 512 * 1024

constexpr

Size of decompression buffer for zlib compressed traffic.

## ◆ DEFAULT_ATTACHMENT_SIZE_LIMIT

uint32_t dpp::DEFAULT_ATTACHMENT_SIZE_LIMIT = 10 * 1024 * 1024

inline constexpr

Discords default attachment size limit is 10MiB, and will be used in case an interaction does not contain its attachment size limit.

## ◆ deletion_mutex

DPP_EXPORT std::mutex dpp::deletion_mutex

extern

## ◆ deletion_queue

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

extern

## ◆ DISCORD_HOST

const char* dpp::DISCORD_HOST = "https://discord.com"

inline static constexpr

## ◆ DPP_BUFSIZE

uint16_t dpp::DPP_BUFSIZE {16 * 1024}

constexpr

SSL_read buffer size.

You'd think that we would get better performance with a bigger buffer, but SSL frames are 16k each. SSL_read in non-blocking mode will only read 16k at a time. There's no point in a bigger buffer as it'd go unused.

## ◆ ERROR_STATUS

int dpp::ERROR_STATUS {-1}

constexpr

Represents a failed socket system call, e.g. connect() failure.

## ◆ FORMAT_VERSION

const uint8_t dpp::FORMAT_VERSION = 131

Current ETF format version in use.

## ◆ http_version

const std::string dpp::http_version

inline static

Initial value:
= "DiscordBot (https://github.com/brainboxdotcc/DPP, "
+ to_hex(DPP_VERSION_MAJOR, false) + "." + to_hex(DPP_VERSION_MINOR, false) + "." + to_hex(DPP_VERSION_PATCH, false) + ")"
dpp::to_hex
std::string to_hex(T i, bool leading_zeroes=true)
Convert a numeric value to hex.
Definition stringops.h:195

## ◆ is_valid_config

const bool dpp::is_valid_config = validate_configuration<build_type::universal>()

inline

Version checking, making sure the program is in a configuration compatible with DPP's.

Do NOT make these variables constexpr. We want them to initialize at runtime so the function can be pulled from the shared library object.

## ◆ MAX_AVATAR_SIZE

uint32_t dpp::MAX_AVATAR_SIZE = 10240 * 1000

constexpr

## ◆ MAX_RETRIES

int dpp::MAX_RETRIES {4}

constexpr

Maximum number of internal connect() retries on TCP connections.

## ◆ message_ref_type

enum DPP_EXPORT dpp::message_ref_type

Message Reference type.

## ◆ mrt_forward

enum DPP_EXPORT dpp::mrt_forward = 1

A forwarded message

## ◆ NO_SHARDS

uint32_t dpp::NO_SHARDS = ~0U

constexpr

Pass this value into the constructor of dpp::cluster for the shard count to create a cluster with no shards. A cluster with no shards does not connect to a websocket, but can still use the event loop to dispatch HTTPS API requests to Discord. This is useful for bots that do not need to receive websocket events as it will save a lot of resources.

## ◆ opus_channel_count

int32_t dpp::opus_channel_count = 2

inline constexpr

Channel count for OPUS (stereo).

## ◆ opus_sample_rate_hz

int32_t dpp::opus_sample_rate_hz = 48000

inline constexpr

Sample rate for OPUS (48khz).

## ◆ RECONNECT_INTERVAL

time_t dpp::RECONNECT_INTERVAL = 5

constexpr

How many seconds to wait between (re)connections. DO NOT change this. It is mandated by the Discord API spec!

## ◆ secret_key_size

size_t dpp::secret_key_size = 32

inline constexpr

## ◆ send_audio_raw_max_length

size_t dpp::send_audio_raw_max_length = 11520

inline constexpr

## ◆ voice_protocol_version

uint8_t dpp::voice_protocol_version = 8

inline constexpr

Discord voice protocol version.

D++ Library version 9.0.13 D++ Library version 9.0.12 D++ Library version 9.0.11 D++ Library version 9.0.10 D++ Library version 9.0.9 D++ Library version 9.0.8 D++ Library version 9.0.7 D++ Library version 9.0.6 D++ Library version 9.0.5 D++ Library version 9.0.4 D++ Library version 9.0.3 D++ Library version 9.0.2 D++ Library version 9.0.1 D++ Library version 9.0.0 D++ Library version 1.0.2 D++ Library version 1.0.1 D++ Library version 1.0.0