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

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

Namespaces

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

Classes

class  activity
 An activity is a representation of what a user is doing. It might be a game, or a website, or a movie. Whatever. More...
 
struct  application_command_create_t
 Create application slash command. More...
 
struct  application_command_delete_t
 
struct  application_command_update_t
 Update application slash command. More...
 
struct  audit_change
 Defines audit log changes. More...
 
struct  audit_entry
 An individual audit log entry. More...
 
struct  audit_extra
 Extra information for an audit log entry. More...
 
class  auditlog
 The auditlog class represents the audit log entry of a guild. More...
 
class  ban
 The ban class represents a ban on a guild. More...
 
struct  bucket_t
 
class  cache
 A cache object maintains a cache of dpp::managed objects. This is for example users, channels or guilds. More...
 
class  channel
 A definition of a discord channel. 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...
 
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_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...
 
struct  command_resolved
 Resolved snowflake ids to usernames. TODO: Needs implementation. Not needed something that functions as we have cache. 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  DiscordClient
 Implements a discord client. Each DiscordClient connects to one shard and derives from a websocket client. More...
 
class  DiscordVoiceClient
 Implements a discord voice connection. Each DiscordVoiceClient connects to one voice channel and derives from a websocket client. More...
 
class  dispatcher
 The dispatcher class contains a set of std::functions representing hooked events that the user code is interested in. These are modified via the on_eventname style methods in the cluster class. More...
 
class  dtemplate
 Represents a guild template. More...
 
struct  embed
 A rich embed for display within a dpp::message. More...
 
struct  embed_author
 Author within a dpp::embed object. More...
 
struct  embed_field
 A dpp::embed may contain zero or more fields. More...
 
struct  embed_footer
 A footer in a dpp::embed. More...
 
struct  embed_image
 An video, image or thumbnail in a dpp::embed. More...
 
struct  embed_provider
 Embed provider in a dpp::embed. Received from discord but cannot be sent. More...
 
class  emoji
 Represents an emoji for a dpp::guild. More...
 
struct  event_dispatch_t
 Base event parameter struct. 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_ban_add_t
 Guild ban add. More...
 
struct  guild_ban_remove_t
 Guild ban remove. 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. 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_update_t
 Guild update. More...
 
class  guild_widget
 Represents a guild widget, simple web widget of member list. More...
 
class  http_request
 A HTTP request. More...
 
struct  http_request_completion_t
 The result of any HTTP request. Contains the headers, vital rate limit figures, and returned request body. More...
 
class  integration
 
struct  integration_app
 An application that has been integrated. More...
 
struct  integration_create_t
 Integration create. More...
 
struct  integration_delete_t
 Integration delete. More...
 
struct  integration_update_t
 Integration update. More...
 
class  interaction
 An interaction represents a user running a command and arrives via the dpp::cluster::on_interaction_create event. More...
 
struct  interaction_create_t
 Create interaction. More...
 
struct  interaction_response
 A response to an interaction, used to reply to a command and initiate a message, which can be hidden from others (ephemeral) or visible to all. More...
 
class  invite
 Represents an invite to a discord guild or channel. More...
 
struct  invite_create_t
 Invite create. More...
 
struct  invite_delete_t
 Invite delete. More...
 
struct  log_t
 Log messages. 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...
 
struct  message_create_t
 Create message. More...
 
struct  message_delete_bulk_t
 Message delete bulk. More...
 
struct  message_delete_t
 Message Deleted. More...
 
struct  message_reaction_add_t
 Message reaction add. More...
 
struct  message_reaction_remove_all_t
 Message remove all reactions. More...
 
struct  message_reaction_remove_emoji_t
 Message remove emoji. More...
 
struct  message_reaction_remove_t
 Message reaction remove. More...
 
struct  message_update_t
 Message update. More...
 
struct  permission_overwrite
 channel permission overwrites More...
 
class  presence
 Represents user presence, e.g. what game they are playing and if they are online. More...
 
struct  presence_update_t
 Presence update. More...
 
struct  prune
 Defines a request to count prunable users, or start a prune operation. More...
 
struct  reaction
 Represets a reaction to a dpp::message. More...
 
struct  ready_t
 Session ready. More...
 
class  request_queue
 The request_queue class manages rate limits and marshalls HTTP requests that have been built as http_request objects. More...
 
struct  resumed_t
 Session resumed. More...
 
class  role
 Represents a role within a dpp::guild. More...
 
class  slashcommand
 Represents an application command, created by your bot either globally, or on a guild. More...
 
class  SSLClient
 Implements a simple non-blocking SSL stream client. More...
 
struct  stage_instance_create_t
 Create stage instance. More...
 
struct  stage_instance_delete_t
 Delete stage instance. 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_update_t
 
struct  voice_buffer_send_t
 voice buffer send More...
 
struct  voice_ready_t
 voice user talking More...
 
struct  voice_receive_t
 voice receive packet More...
 
struct  voice_server_update_t
 Voice server update. More...
 
struct  voice_state_update_t
 Voice state update. More...
 
struct  voice_track_marker_t
 Voice state update. More...
 
struct  voice_user_talking_t
 voice user talking More...
 
class  voiceconn
 Represents a connection to a voice channel. A client can only connect to one voice channel per guild at a time, so these are stored in a map in the dpp::DiscordClient 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  WSClient
 Implements a websocket client based on the SSL client. More...
 

Typedefs

typedef std::unordered_map< snowflake, banban_map
 
typedef std::unordered_map< uint64_t, managed * > cache_container
 A set of cached managed objects. More...
 
typedef std::unordered_map< snowflake, channelchannel_map
 A group of channels. More...
 
typedef std::map< uint32_t, class DiscordClient * > shard_list
 A list of shards. More...
 
typedef std::variant< confirmation, message, message_map, user, user_map, guild_member, guild_member_map, channel, channel_map, guild, guild_map, role, role_map, invite, invite_map, dtemplate, dtemplate_map, emoji, emoji_map, ban, ban_map, voiceregion, voiceregion_map, integration, integration_map, webhook, webhook_map, prune, guild_widget, gateway, interaction, interaction_response, auditlogconfirmable_t
 A container for types that can be returned for a REST API call. More...
 
typedef std::function< void(const confirmation_callback_t &)> command_completion_event_t
 A callback upon command completion. More...
 
typedef std::function< void(json &, const http_request_completion_t &)> json_encode_t
 Automatically JSON encoded HTTP result. More...
 
typedef uint64_t snowflake
 A 64 bit unsigned value representing many things on discord. Discord calls the value a 'snowflake' value. More...
 
typedef std::unordered_map< snowflake, dtemplatedtemplate_map
 
typedef std::unordered_map< snowflake, emojiemoji_map
 Group of emojis. More...
 
typedef std::unordered_map< snowflake, class guild_member * > members_container
 Guild members container. More...
 
typedef std::unordered_map< snowflake, guildguild_map
 
typedef std::unordered_map< snowflake, guild_memberguild_member_map
 
typedef std::unordered_map< snowflake, integrationintegration_map
 
typedef std::unordered_map< std::string, inviteinvite_map
 
typedef std::unordered_map< snowflake, messagemessage_map
 
typedef std::unordered_map< std::string, presencepresence_map
 
typedef std::function< void(const http_request_completion_t &)> http_completion_event
 Results of HTTP requests are called back to these std::function types. More...
 
typedef std::unordered_map< snowflake, rolerole_map
 
typedef std::variant< std::string, uint32_t, bool, snowflakecommand_value
 This type is a variant that can hold any of the potential native data types represented by the enum above. It is used in interactions. More...
 
typedef std::unordered_map< std::string, slashcommandslashcommand_map
 A group of application slash commands. More...
 
typedef std::unordered_map< snowflake, useruser_map
 
typedef std::unordered_map< std::string, voiceregionvoiceregion_map
 A group of voice regions. More...
 
typedef std::unordered_map< std::string, voicestatevoicestate_map
 
typedef std::unordered_map< snowflake, webhookwebhook_map
 A group of webhooks. More...
 

Enumerations

enum  audit_type {
  ae_guild_update = 1 , ae_channel_create = 10 , ae_channel_update = 11 , ae_channel_delete = 12 ,
  ae_channel_overwrite_create = 13 , ae_channel_overwrite_update = 14 , ae_channel_overwrite_delete = 15 , ae_member_kick = 20 ,
  ae_member_prune = 21 , ae_member_ban_add = 22 , ae_member_ban_remove = 23 , ae_member_update = 24 ,
  ae_member_role_update = 25 , ae_member_move = 26 , ae_member_disconnect = 27 , ae_bot_add = 28 ,
  ae_role_create = 30 , ae_role_update = 31 , ae_role_delete = 32 , ae_invite_create = 40 ,
  ae_invite_update = 41 , ae_invite_delete = 42 , ae_webhook_create = 50 , ae_webhook_update = 51 ,
  ae_webhook_delete = 52 , ae_emoji_create = 60 , ae_emoji_update = 61 , ae_emoji_delete = 62 ,
  ae_message_delete = 72 , ae_message_bulk_delete = 73 , ae_message_pin = 74 , ae_message_unpin = 75 ,
  ae_integration_create = 80 , ae_integration_update = 81 , ae_integration_delete = 82
}
 Defines types of audit log entry. More...
 
enum  channel_flags {
  c_nsfw = 0b00000001 , c_text = 0b00000010 , c_dm = 0b00000100 , c_voice = 0b00001000 ,
  c_group = 0b00010000 , c_category = 0b00100000 , c_news = 0b01000000 , c_store = 0b10000000 ,
  c_stage = 0b11000000
}
 Our flags as stored in the object. More...
 
enum  overwrite_type : uint8_t { ot_role = 0 , ot_member = 1 }
 channel permission overwrite types More...
 
enum  image_type { i_png , i_jpg , i_gif }
 Supported image types for profile pictures. More...
 
enum  loglevel {
  ll_trace = 0 , ll_debug , ll_info , ll_warning ,
  ll_error , ll_critical
}
 Log levels. More...
 
enum  emoji_flags { e_require_colons = 0b00000001 , e_managed = 0b00000010 , e_animated = 0b00000100 , e_available = 0b00001000 }
 Flags for dpp::emoji. More...
 
enum  region : uint8_t {
  r_brazil , r_central_europe , r_hong_kong , r_india ,
  r_japan , r_russia , r_singapore , r_south_africa ,
  r_sydney , r_us_central , r_us_east , r_us_south ,
  r_us_west , r_western_europe
}
 Represents voice regions for guilds and channels. More...
 
enum  guild_flags {
  g_large = 0b000000000000000000001 , g_unavailable = 0b000000000000000000010 , g_widget_enabled = 0b000000000000000000100 , g_invite_splash = 0b000000000000000001000 ,
  g_vip_regions = 0b000000000000000010000 , g_vanity_url = 0b000000000000000100000 , g_verified = 0b000000000000001000000 , g_partnered = 0b000000000000010000000 ,
  g_community = 0b000000000000100000000 , g_commerce = 0b000000000001000000000 , g_news = 0b000000000010000000000 , g_discoverable = 0b000000000100000000000 ,
  g_featureable = 0b000000001000000000000 , g_animated_icon = 0b000000010000000000000 , g_banner = 0b000000100000000000000 , g_welcome_screen_enabled = 0b000001000000000000000 ,
  g_member_verification_gate = 0b000010000000000000000 , g_preview_enabled = 0b000100000000000000000 , g_no_join_notifications = 0b001000000000000000000 , g_no_boost_notifications = 0b010000000000000000000 ,
  g_has_animated_icon = 0b100000000000000000000
}
 The various flags that represent the status of a dpp::guild object. More...
 
enum  guild_member_flags { gm_deaf = 0b00001 , gm_mute = 0b00010 , gm_pending = 0b00100 }
 Various flags that can be used to indicate the status of a guild member. More...
 
enum  integration_type { i_twitch , i_youtube , i_discord }
 Integration types. More...
 
enum  integration_flags {
  if_enabled = 0b00000001 , if_syncing = 0b00000010 , if_emoticons = 0b00000100 , if_revoked = 0b00001000 ,
  if_expire_kick = 0b00010000
}
 Integration flags. More...
 
enum  intents {
  i_guilds = (1 << 0) , i_guild_members = (1 << 1) , i_guild_bans = (1 << 2) , i_guild_emojis = (1 << 3) ,
  i_guild_integrations = (1 << 4) , i_guild_webhooks = (1 << 5) , i_guild_invites = (1 << 6) , i_guild_voice_states = (1 << 7) ,
  i_guild_presences = (1 << 8) , i_guild_messages = (1 << 9) , i_guild_message_reactions = (1 << 10) , i_guild_message_typing = (1 << 11) ,
  i_direct_messages = (1 << 12) , i_direct_message_reactions = (1 << 13) , i_direct_message_typing = (1 << 14) , i_default_intents = dpp::i_guilds | dpp::i_guild_bans | dpp::i_guild_emojis | dpp::i_guild_integrations | dpp::i_guild_webhooks | dpp::i_guild_invites | dpp::i_guild_voice_states | dpp::i_guild_messages | dpp::i_guild_message_reactions | dpp::i_guild_message_typing | dpp::i_direct_messages | dpp::i_direct_message_typing | dpp::i_direct_message_reactions ,
  i_privileged_intents = dpp::i_guild_members | dpp::i_guild_presences , i_all_intents = dpp::i_default_intents | dpp::i_privileged_intents
}
 intents are a bitmask of allowed events on your websocket. More...
 
enum  message_flags {
  m_crossposted = 1 << 0 , m_is_crosspost = 1 << 1 , m_supress_embeds = 1 << 2 , m_source_message_deleted = 1 << 3 ,
  m_urgent = 1 << 4 , m_ephemeral = 1 << 6 , m_loading = 1 << 7
}
 Bitmask flags for a dpp::message. More...
 
enum  message_type {
  mt_default = 0 , mt_recipient_add = 1 , mt_recipient_remove = 2 , mt_call = 3 ,
  mt_channel_name_change = 4 , mt_channel_icon_change = 5 , mt_channel_pinned_message = 6 , mt_guild_member_join = 7 ,
  mt_user_premium_guild_subscription = 8 , mt_user_premium_guild_subscription_tier_1 = 9 , mt_user_premium_guild_subscription_tier_2 = 10 , mt_user_premium_guild_subscription_tier_3 = 11 ,
  mt_channel_follow_add = 12 , mt_guild_discovery_disqualified = 14 , mt_guild_discovery_requalified = 15 , mt_guild_discovery_grace_period_initial_warning = 16 ,
  mt_guild_discovery_grace_period_final_warning = 17 , mt_reply = 19 , mt_application_command = 20 , mt_guild_invite_reminder = 22
}
 Mesage types for dpp::message::type. More...
 
enum  presence_flags {
  p_desktop_online = 0b00000001 , p_desktop_dnd = 0b00000010 , p_desktop_idle = 0b00000011 , p_web_online = 0b00000100 ,
  p_web_dnd = 0b00001000 , p_web_idle = 0b00001100 , p_mobile_online = 0b00010000 , p_mobile_dnd = 0b00100000 ,
  p_mobile_idle = 0b00110000 , p_status_online = 0b01000000 , p_status_dnd = 0b10000000 , p_status_idle = 0b11000000
}
 Presence flags bitmask. More...
 
enum  presence_status : uint8_t { ps_offline = 0 , ps_online = 1 , ps_dnd = 2 , ps_idle = 3 }
 Online presence status values. More...
 
enum  activity_type : uint8_t {
  at_game = 0 , at_streaming = 1 , at_listening = 2 , at_custom = 3 ,
  at_competing = 4
}
 Game types. More...
 
enum  activity_flags {
  af_instance = 0b00000001 , af_join = 0b00000010 , af_spectate = 0b00000100 , af_join_request = 0b00001000 ,
  af_sync = 0b00010000 , af_play = 0b00100000
}
 Activity types for rich presence. More...
 
enum  http_error {
  h_success = 0 , h_unknown , h_connection , h_bind_ip_address ,
  h_read , h_write , h_exceed_redirect_count , h_canceled ,
  h_ssl_connection , h_ssl_loading_certs , h_ssl_server_verification , h_unsupported_multipart_boundary_chars ,
  h_compression
}
 
enum  http_method {
  m_get , m_post , m_put , m_patch ,
  m_delete
}
 
enum  role_flags { r_hoist = 0b00000001 , r_managed = 0b00000010 , r_mentionable = 0b00000100 , r_premium_subscriber = 0b00001000 }
 
enum  role_permissions {
  p_create_instant_invite = 0x00000001 , p_kick_members = 0x00000002 , p_ban_members = 0x00000004 , p_administrator = 0x00000008 ,
  p_manage_channels = 0x00000010 , p_manage_guild = 0x00000020 , p_add_reactions = 0x00000040 , p_view_audit_log = 0x00000080 ,
  p_priority_speaker = 0x00000100 , p_stream = 0x00000200 , p_view_channel = 0x00000400 , p_send_messages = 0x00000800 ,
  p_send_tts_messages = 0x00001000 , p_manage_messages = 0x00002000 , p_embed_links = 0x00004000 , p_attach_files = 0x00008000 ,
  p_read_message_history = 0x00010000 , p_mention_everyone = 0x00020000 , p_use_external_emojis = 0x00040000 , p_view_guild_insights = 0x00080000 ,
  p_connect = 0x00100000 , p_speak = 0x00200000 , p_mute_members = 0x00400000 , p_deafen_members = 0x00800000 ,
  p_move_members = 0x01000000 , p_use_vad = 0x02000000 , p_change_nickname = 0x04000000 , p_manage_nicknames = 0x08000000 ,
  p_manage_roles = 0x10000000 , p_manage_webhooks = 0x20000000 , p_manage_emojis = 0x40000000
}
 Represents the various discord permissions. 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
}
 Represents command option types. These are the possible parameter value types. More...
 
enum  interaction_response_type {
  ir_pong = 1 , ir_acknowledge = 2 , ir_channel_message = 3 , ir_channel_message_with_source = 4 ,
  ir_deferred_channel_message_with_source = 5
}
 Response types when responding to an interaction within on_interaction_create. Do not use ir_acknowledge or ir::channel_message, as these are deprecated in the Discord API spec. They are listed in this enum for completeness. More...
 
enum  user_flags {
  u_bot = 0b00000000000000000000001 , u_system = 0b00000000000000000000010 , u_mfa_enabled = 0b00000000000000000000100 , u_verified = 0b00000000000000000001000 ,
  u_nitro_full = 0b00000000000000000010000 , u_nitro_classic = 0b00000000000000000100000 , u_discord_employee = 0b00000000000000001000000 , u_partnered_owner = 0b00000000000000010000000 ,
  u_hypesquad_events = 0b00000000000000100000000 , u_bughunter_1 = 0b00000000000001000000000 , u_house_bravery = 0b00000000000010000000000 , u_house_brilliance = 0b00000000000100000000000 ,
  u_house_balanace = 0b00000000001000000000000 , u_early_supporter = 0b00000000010000000000000 , u_team_user = 0b00000000100000000000000 , u_bughunter_2 = 0b00000001000000000000000 ,
  u_verified_bot = 0b00000010000000000000000 , u_verified_bot_dev = 0b00000100000000000000000 , u_animated_icon = 0b00001000000000000000000
}
 Various bitmask flags used to represent information about a dpp::user. More...
 
enum  voiceregion_flags { v_optimal = 0x00000001 , v_deprecated = 0x00000010 , v_custom = 0x00000100 , v_vip = 0x00001000 }
 Flags related to a voice region. More...
 
enum  voicestate_flags {
  vs_deaf = 0b00000001 , vs_mute = 0b00000010 , vs_self_mute = 0b00000100 , vs_self_deaf = 0b00001000 ,
  vs_self_stream = 0b00010000 , vs_self_video = 0b00100000 , vs_supress = 0b01000000
}
 Bit mask flags relating to voice states. More...
 
enum  webhook_type { w_incoming = 1 , w_channel_follower = 2 }
 Defines types of webhook. More...
 
enum  WSState { HTTP_HEADERS , CONNECTED }
 Websocket connection status. More...
 
enum  OpCode {
  OP_CONTINUATION = 0x00 , OP_TEXT = 0x01 , OP_BINARY = 0x02 , OP_CLOSE = 0x08 ,
  OP_PING = 0x09 , OP_PONG = 0x0a
}
 Low-level websocket opcodes for frames. More...
 

Functions

void garbage_collection ()
 
userfind_user (snowflake id)
 
cacheget_user_cache ()
 
uint64_t get_user_count ()
 
guildfind_guild (snowflake id)
 
cacheget_guild_cache ()
 
uint64_t get_guild_count ()
 
rolefind_role (snowflake id)
 
cacheget_role_cache ()
 
uint64_t get_role_count ()
 
channelfind_channel (snowflake id)
 
cacheget_channel_cache ()
 
uint64_t get_channel_count ()
 
emojifind_emoji (snowflake id)
 
cacheget_emoji_cache ()
 
uint64_t get_emoji_count ()
 
uint64_t SnowflakeNotNull (nlohmann::json *j, const char *keyname)
 Returns a snowflake id from a json field value, if defined, else returns 0. More...
 
std::string StringNotNull (nlohmann::json *j, const char *keyname)
 Returns a string from a json field value, if defined, else returns an empty string. More...
 
uint64_t Int64NotNull (nlohmann::json *j, const char *keyname)
 Returns a 64 bit unsigned integer from a json field value, if defined, else returns 0. DO NOT use this for snowflakes, as usually snowflakes are wrapped in a string! More...
 
uint32_t Int32NotNull (nlohmann::json *j, const char *keyname)
 Returns a 32 bit unsigned integer from a json field value, if defined, else returns 0. More...
 
uint16_t Int16NotNull (nlohmann::json *j, const char *keyname)
 Returns a 16 bit unsigned integer from a json field value, if defined, else returns 0. More...
 
uint8_t Int8NotNull (nlohmann::json *j, const char *keyname)
 Returns an 8 bit unsigned integer from a json field value, if defined, else returns 0. More...
 
bool BoolNotNull (nlohmann::json *j, const char *keyname)
 Returns a boolean value from a json field value, if defined, else returns false. More...
 
time_t TimestampNotNull (nlohmann::json *j, const char *keyname)
 Returns a time_t from an ISO8601 timestamp field in a json value, if defined, else returns epoch value of 0. More...
 
std::string base64_encode (unsigned char const *buf, unsigned int buffer_length)
 Base64 encode data. More...
 
std::string url_encode (const std::string &value)
 

Detailed Description

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

Typedef Documentation

◆ ban_map

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

A group of bans

◆ cache_container

typedef std::unordered_map<uint64_t, managed*> dpp::cache_container

A set of cached managed objects.

◆ channel_map

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

A group of channels.

◆ command_completion_event_t

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

A callback upon command completion.

◆ command_value

typedef std::variant<std::string, uint32_t, bool, snowflake> dpp::command_value

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

◆ confirmable_t

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

◆ guild_map

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

A container of guilds

◆ guild_member_map

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

A container of guild members

◆ http_completion_event

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

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

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

◆ integration_map

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

A group of integrations

◆ invite_map

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

A container of invites

◆ json_encode_t

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

Automatically JSON encoded HTTP result.

◆ members_container

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

Guild members container.

◆ message_map

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

A group of messages

◆ presence_map

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

A container of presences

◆ role_map

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

A group of roles

◆ shard_list

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

A list of shards.

◆ slashcommand_map

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

A group of application slash commands.

◆ snowflake

typedef uint64_t dpp::snowflake

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

◆ user_map

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

A group of users

◆ voiceregion_map

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

A group of voice regions.

◆ voicestate_map

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

A container of voicestates

◆ webhook_map

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

A group of webhooks.

Enumeration Type Documentation

◆ activity_flags

Activity types for rich presence.

Enumerator
af_instance 
af_join 
af_spectate 
af_join_request 
af_sync 
af_play 

◆ activity_type

enum dpp::activity_type : uint8_t

Game types.

Enumerator
at_game 
at_streaming 
at_listening 
at_custom 
at_competing 

◆ audit_type

Defines types of audit log entry.

Enumerator
ae_guild_update 
ae_channel_create 
ae_channel_update 
ae_channel_delete 
ae_channel_overwrite_create 
ae_channel_overwrite_update 
ae_channel_overwrite_delete 
ae_member_kick 
ae_member_prune 
ae_member_ban_add 
ae_member_ban_remove 
ae_member_update 
ae_member_role_update 
ae_member_move 
ae_member_disconnect 
ae_bot_add 
ae_role_create 
ae_role_update 
ae_role_delete 
ae_invite_create 
ae_invite_update 
ae_invite_delete 
ae_webhook_create 
ae_webhook_update 
ae_webhook_delete 
ae_emoji_create 
ae_emoji_update 
ae_emoji_delete 
ae_message_delete 
ae_message_bulk_delete 
ae_message_pin 
ae_message_unpin 
ae_integration_create 
ae_integration_update 
ae_integration_delete 

◆ channel_flags

Our flags as stored in the object.

Enumerator
c_nsfw 
c_text 
c_dm 
c_voice 
c_group 
c_category 
c_news 
c_store 
c_stage 

◆ 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

co_role 

A role snowflake id

◆ emoji_flags

Flags for dpp::emoji.

Enumerator
e_require_colons 
e_managed 
e_animated 
e_available 

◆ guild_flags

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

Enumerator
g_large 
g_unavailable 
g_widget_enabled 
g_invite_splash 
g_vip_regions 
g_vanity_url 
g_verified 
g_partnered 
g_community 
g_commerce 
g_news 
g_discoverable 
g_featureable 
g_animated_icon 
g_banner 
g_welcome_screen_enabled 
g_member_verification_gate 
g_preview_enabled 
g_no_join_notifications 
g_no_boost_notifications 
g_has_animated_icon 

◆ guild_member_flags

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

Enumerator
gm_deaf 

Member deafened

gm_mute 

Member muted

gm_pending 

Member pending verification by membership screening

◆ http_error

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

Enumerator
h_success 
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 

◆ http_method

Various types of http method supported by the Discord API

Enumerator
m_get 
m_post 
m_put 
m_patch 
m_delete 

◆ image_type

Supported image types for profile pictures.

Enumerator
i_png 
i_jpg 
i_gif 

◆ integration_flags

Integration flags.

Enumerator
if_enabled 
if_syncing 
if_emoticons 
if_revoked 
if_expire_kick 

◆ integration_type

Integration types.

Enumerator
i_twitch 
i_youtube 
i_discord 

◆ 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 
i_guild_members 
i_guild_bans 
i_guild_emojis 
i_guild_integrations 
i_guild_webhooks 
i_guild_invites 
i_guild_voice_states 
i_guild_presences 
i_guild_messages 
i_guild_message_reactions 
i_guild_message_typing 
i_direct_messages 
i_direct_message_reactions 
i_direct_message_typing 
i_default_intents 
i_privileged_intents 
i_all_intents 

◆ interaction_response_type

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

Enumerator
ir_pong 
ir_acknowledge 
ir_channel_message 
ir_channel_message_with_source 
ir_deferred_channel_message_with_source 

◆ loglevel

Log levels.

Enumerator
ll_trace 
ll_debug 
ll_info 
ll_warning 
ll_error 
ll_critical 

◆ message_flags

Bitmask flags for a dpp::message.

Enumerator
m_crossposted 
m_is_crosspost 
m_supress_embeds 
m_source_message_deleted 
m_urgent 
m_ephemeral 
m_loading 

◆ message_type

Mesage types for dpp::message::type.

Enumerator
mt_default 
mt_recipient_add 
mt_recipient_remove 
mt_call 
mt_channel_name_change 
mt_channel_icon_change 
mt_channel_pinned_message 
mt_guild_member_join 
mt_user_premium_guild_subscription 
mt_user_premium_guild_subscription_tier_1 
mt_user_premium_guild_subscription_tier_2 
mt_user_premium_guild_subscription_tier_3 
mt_channel_follow_add 
mt_guild_discovery_disqualified 
mt_guild_discovery_requalified 
mt_guild_discovery_grace_period_initial_warning 
mt_guild_discovery_grace_period_final_warning 
mt_reply 
mt_application_command 
mt_guild_invite_reminder 

◆ OpCode

Low-level websocket opcodes for frames.

Enumerator
OP_CONTINUATION 
OP_TEXT 
OP_BINARY 
OP_CLOSE 
OP_PING 
OP_PONG 

◆ overwrite_type

enum dpp::overwrite_type : uint8_t

channel permission overwrite types

Enumerator
ot_role 
ot_member 

◆ presence_flags

Presence flags bitmask.

Enumerator
p_desktop_online 
p_desktop_dnd 
p_desktop_idle 
p_web_online 
p_web_dnd 
p_web_idle 
p_mobile_online 
p_mobile_dnd 
p_mobile_idle 
p_status_online 
p_status_dnd 
p_status_idle 

◆ presence_status

enum dpp::presence_status : uint8_t

Online presence status values.

Enumerator
ps_offline 
ps_online 
ps_dnd 
ps_idle 

◆ region

enum dpp::region : uint8_t

Represents voice regions for guilds and channels.

Note
Largely deprecated in favour of per-channel regions.
Enumerator
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 

◆ role_flags

Various flags related to dpp::role

Enumerator
r_hoist 
r_managed 
r_mentionable 
r_premium_subscriber 

◆ role_permissions

Represents the various discord permissions.

Enumerator
p_create_instant_invite 
p_kick_members 
p_ban_members 
p_administrator 
p_manage_channels 
p_manage_guild 
p_add_reactions 
p_view_audit_log 
p_priority_speaker 
p_stream 
p_view_channel 
p_send_messages 
p_send_tts_messages 
p_manage_messages 
p_embed_links 
p_attach_files 
p_read_message_history 
p_mention_everyone 
p_use_external_emojis 
p_view_guild_insights 
p_connect 
p_speak 
p_mute_members 
p_deafen_members 
p_move_members 
p_use_vad 
p_change_nickname 
p_manage_nicknames 
p_manage_roles 
p_manage_webhooks 
p_manage_emojis 

◆ user_flags

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

Enumerator
u_bot 

User is a bot.

u_system 

User is a system user (Clyde!)

u_mfa_enabled 

User has multi-factor authentication enabled.

u_verified 

User is verified (verified email address)

u_nitro_full 

User has full nitro.

u_nitro_classic 

User has nitro classic.

u_discord_employee 

User is discord staff.

u_partnered_owner 

User owns a partnered server.

u_hypesquad_events 

User is a member of hypesquad events.

u_bughunter_1 

User has BugHunter level 1.

u_house_bravery 

User is a member of House Bravery.

u_house_brilliance 

User is a member of House Brilliance.

u_house_balanace 

User is a member of House Balance.

u_early_supporter 

User is an early supporter.

u_team_user 

User is a team user.

u_bughunter_2 

User is has Bug Hunter level 2.

u_verified_bot 

User is a verified bot.

u_verified_bot_dev 

User has the Early Verified Bot Developer badge.

u_animated_icon 

User's icon is animated.

◆ voiceregion_flags

Flags related to a voice region.

Enumerator
v_optimal 
v_deprecated 
v_custom 
v_vip 

◆ voicestate_flags

Bit mask flags relating to voice states.

Enumerator
vs_deaf 
vs_mute 
vs_self_mute 
vs_self_deaf 
vs_self_stream 
vs_self_video 
vs_supress 

◆ webhook_type

Defines types of webhook.

Enumerator
w_incoming 
w_channel_follower 

◆ WSState

Websocket connection status.

Enumerator
HTTP_HEADERS 

Sending/receiving HTTP headers prior to protocol switch

CONNECTED 

Connected, upgraded and sending/receiving frames

Function Documentation

◆ base64_encode()

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

Base64 encode data.

Parameters
bufRaw buffer
buffer_lengthBuffer length to encode

◆ BoolNotNull()

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

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

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

◆ find_channel()

channel * dpp::find_channel ( snowflake  id)

◆ find_emoji()

emoji * dpp::find_emoji ( snowflake  id)

◆ find_guild()

guild * dpp::find_guild ( snowflake  id)

◆ find_role()

role * dpp::find_role ( snowflake  id)

◆ find_user()

user * dpp::find_user ( snowflake  id)

◆ garbage_collection()

void dpp::garbage_collection ( )

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

◆ get_channel_cache()

cache * dpp::get_channel_cache ( )

◆ get_channel_count()

uint64_t dpp::get_channel_count ( )

◆ get_emoji_cache()

cache * dpp::get_emoji_cache ( )

◆ get_emoji_count()

uint64_t dpp::get_emoji_count ( )

◆ get_guild_cache()

cache * dpp::get_guild_cache ( )

◆ get_guild_count()

uint64_t dpp::get_guild_count ( )

◆ get_role_cache()

cache * dpp::get_role_cache ( )

◆ get_role_count()

uint64_t dpp::get_role_count ( )

◆ get_user_cache()

cache * dpp::get_user_cache ( )

◆ get_user_count()

uint64_t dpp::get_user_count ( )

◆ Int16NotNull()

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

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

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

◆ Int32NotNull()

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

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

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

◆ Int64NotNull()

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

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

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

◆ Int8NotNull()

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

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

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

◆ SnowflakeNotNull()

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

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

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

◆ StringNotNull()

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

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

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

◆ TimestampNotNull()

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

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

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

◆ url_encode()

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

Encodes a url parameter similar to php urlencode()

D++ Library version 10.0.35D++ Library version 10.0.34D++ Library version 10.0.33D++ Library version 10.0.32D++ Library version 10.0.31D++ Library version 10.0.30D++ Library version 10.0.29D++ Library version 10.0.28D++ Library version 10.0.27D++ Library version 10.0.26D++ Library version 10.0.25D++ Library version 10.0.24D++ Library version 10.0.23D++ Library version 10.0.22D++ Library version 10.0.21D++ Library version 10.0.20D++ Library version 10.0.19D++ Library version 10.0.18D++ Library version 10.0.17D++ Library version 10.0.16D++ Library version 10.0.15D++ Library version 10.0.14D++ Library version 10.0.13D++ Library version 10.0.12D++ Library version 10.0.11D++ Library version 10.0.10D++ Library version 10.0.9D++ Library version 10.0.8D++ Library version 10.0.7D++ Library version 10.0.6D++ Library version 10.0.5D++ Library version 10.0.4D++ Library version 10.0.3D++ Library version 10.0.2D++ Library version 10.0.1D++ Library version 10.0.0D++ Library version 9.0.19D++ Library version 9.0.18D++ Library version 9.0.17D++ Library version 9.0.16D++ Library version 9.0.15D++ Library version 9.0.14D++ Library version 9.0.13D++ Library version 9.0.12D++ Library version 9.0.11D++ Library version 9.0.10D++ Library version 9.0.9D++ Library version 9.0.8D++ Library version 9.0.7D++ Library version 9.0.6D++ Library version 9.0.5D++ Library version 9.0.4D++ Library version 9.0.3D++ Library version 9.0.2D++ Library version 9.0.1D++ Library version 9.0.0D++ Library version 1.0.2D++ Library version 1.0.1D++ Library version 1.0.0