D++ (DPP)
C++ Discord API Bot Library
|
Utility helper functions, generally for logging, running programs, time/date manipulation, etc. More...
Classes | |
struct | dummy |
Utility struct that has the same size and alignment as another but does nothing. Useful for ABI compatibility. More... | |
struct | icon |
Wrapper class around a variant for either iconhash or image, for API objects that have one or the other (generally iconhash when receiving, image when uploading an image) More... | |
struct | iconhash |
Store a 128 bit icon hash (profile picture, server icon etc) as a 128 bit binary value made of two uint64_t. Has a constructor to build one from a string, and a method to fetch the value back in string form. More... | |
struct | image_data |
Image to be received or sent to API calls. More... | |
struct | uptime |
A class used to represent an uptime in hours, minutes, seconds and days, with helper functions to convert from time_t and display as a string. More... | |
Typedefs | |
typedef std::function< void(const std::string &output)> | cmd_result_t |
Callback for the results of a command executed via dpp::utility::exec. More... | |
Enumerations | |
enum | avx_type_t : uint8_t { avx_none, avx_1, avx_2, avx_512 } |
Supported AVX instruction set type for audio mixing. More... | |
enum | time_format : uint8_t { tf_long_date = 'D', tf_long_datetime = 'F', tf_relative_time = 'R', tf_long_time = 'T', tf_short_date = 'd', tf_short_datetime = 'f', tf_short_time = 't' } |
Timestamp formats for dpp::utility::timestamp() More... | |
enum | guild_navigation_type { gnt_customize, gnt_browse, gnt_guide } |
Guild navigation types for dpp::utility::guild_navigation() More... | |
Functions | |
command_completion_event_t DPP_EXPORT | log_error () |
The default callback handler for API calls. on error, sends the error to the logger. More... | |
std::string DPP_EXPORT | cdn_endpoint_url (const std::vector< image_type > &allowed_formats, const std::string &path_without_extension, const dpp::image_type format, uint16_t size, bool prefer_animated=false, bool is_animated=false) |
Helper function to easily create discord's cdn endpoint urls. More... | |
std::string DPP_EXPORT | cdn_endpoint_url_hash (const std::vector< image_type > &allowed_formats, const std::string &path_without_extension, const std::string &hash, const dpp::image_type format, uint16_t size, bool prefer_animated=false, bool is_animated=false) |
Helper function to easily create discord's cdn endpoint urls. More... | |
std::string DPP_EXPORT | cdn_endpoint_url_sticker (snowflake sticker_id, sticker_format format) |
Helper function to easily create discord's cdn endpoint urls (specialised for stickers) More... | |
void DPP_EXPORT | exec (const std::string &cmd, std::vector< std::string > parameters={}, cmd_result_t callback={}) |
Run a commandline program asynchronously. The command line program is spawned in a separate std::thread, and when complete, its output from stdout is passed to the callback function in its string parameter. For example: More... | |
std::string DPP_EXPORT | timestamp (time_t ts, time_format tf=tf_short_datetime) |
Return a mentionable timestamp (used in a message). These timestamps will display the given timestamp in the user's timezone and locale. More... | |
std::string DPP_EXPORT | guild_navigation (const snowflake guild_id, guild_navigation_type gnt) |
Create a mentionable guild navigation (used in a message). More... | |
std::string DPP_EXPORT | current_date_time () |
Returns current date and time. More... | |
std::string DPP_EXPORT | loglevel (dpp::loglevel in) |
Convert a dpp::loglevel enum value to a string. More... | |
double DPP_EXPORT | time_f () |
Return the current time with fractions of seconds. This is a unix epoch time with the fractional seconds part after the decimal place. More... | |
bool DPP_EXPORT | has_voice () |
Returns true if D++ was built with voice support. More... | |
avx_type_t DPP_EXPORT | voice_avx () |
Returns an enum value indicating which AVX instruction set is used for mixing received voice data, if any. More... | |
bool DPP_EXPORT | is_coro_enabled () |
Returns true if D++ was built with coroutine support. More... | |
std::string DPP_EXPORT | bytes (uint64_t c) |
Convert a byte count to display value. More... | |
uint32_t DPP_EXPORT | rgb (double red, double green, double blue) |
Convert doubles to RGB for sending in embeds. More... | |
uint32_t DPP_EXPORT | rgb (int red, int green, int blue) |
Convert ints to RGB for sending in embeds. More... | |
uint32_t DPP_EXPORT | cmyk (double c, double m, double y, double k) |
Convert doubles to CMYK for sending in embeds. More... | |
uint32_t DPP_EXPORT | cmyk (int c, int m, int y, int k) |
Convert ints to CMYK for sending in embeds. More... | |
uint32_t DPP_EXPORT | hsl (double h, double s, double l) |
Convert doubles to HSL for sending in embeds. More... | |
uint32_t DPP_EXPORT | hsl (int h, int s, int l) |
Convert ints to HSL for sending in embeds. More... | |
std::string DPP_EXPORT | debug_dump (uint8_t *data, size_t length) |
Output hex values of a section of memory for debugging. More... | |
size_t DPP_EXPORT | utf8len (std::string_view str) |
Returns the length of a UTF-8 string in codepoints. More... | |
std::string_view DPP_EXPORT | utf8subview (std::string_view str, size_t start, size_t length) |
Return subview of a UTF-8 encoded string in codepoints. More... | |
std::string DPP_EXPORT | utf8substr (std::string_view str, size_t start, size_t length) |
Return substring of a UTF-8 encoded string in codepoints. More... | |
std::string DPP_EXPORT | read_file (const std::string &filename) |
Read a whole file into a std::string. More... | |
std::string DPP_EXPORT | validate (const std::string &value, size_t _min, size_t _max, const std::string &exception_message) |
Validate a string value In the event the length of the string is less than _min, then an exception of type dpp:length_exception will be thrown. If the string is longer than _max UTF8 codepoints it will be truncated to fit. More... | |
std::string DPP_EXPORT | avatar_size (uint32_t size) |
Get the url query parameter for the cdn endpoint. Internally used to build url getters. More... | |
std::vector< std::string > DPP_EXPORT | tokenize (std::string const &in, const char *sep="\r\n") |
Split (tokenize) a string into a vector, using the given separators. More... | |
std::string DPP_EXPORT | bot_invite_url (const snowflake bot_id, const uint64_t permissions=0, const std::vector< std::string > &scopes={"bot", "applications.commands"}) |
Create a bot invite. More... | |
std::string DPP_EXPORT | markdown_escape (const std::string &text, bool escape_code_blocks=false) |
Escapes Discord's markdown sequences in a string. More... | |
std::string DPP_EXPORT | url_encode (const std::string &value) |
Encodes a url parameter similar to php urlencode() More... | |
std::string DPP_EXPORT | slashcommand_mention (snowflake command_id, const std::string &command_name, const std::string &subcommand="") |
Create a mentionable slashcommand (used in a message). More... | |
std::string DPP_EXPORT | slashcommand_mention (snowflake command_id, const std::string &command_name, const std::string &subcommand_group, const std::string &subcommand) |
Create a mentionable slashcommand (used in a message). More... | |
std::string DPP_EXPORT | user_mention (const snowflake &id) |
Create a mentionable user. More... | |
std::string DPP_EXPORT | channel_mention (const snowflake &id) |
Create a mentionable channel. More... | |
std::string DPP_EXPORT | emoji_mention (std::string_view name, snowflake id, bool is_animated=false) |
Create a mentionable emoji. More... | |
std::string DPP_EXPORT | role_mention (const snowflake &id) |
Create a mentionable role. More... | |
std::string DPP_EXPORT | message_url (const snowflake &guild_id, const snowflake &channel_id, const snowflake &message_id) |
Create a URL for message. More... | |
std::string DPP_EXPORT | channel_url (const snowflake &guild_id, const snowflake &channel_id) |
Create a URL for message. More... | |
std::string DPP_EXPORT | thread_url (const snowflake &guild_id, const snowflake &thread_id) |
Create a URL for message. More... | |
std::string DPP_EXPORT | user_url (const snowflake &user_id) |
Create a URL for message. More... | |
std::string DPP_EXPORT | mime_type (image_type type) |
Get the mime type for an image type. More... | |
std::string DPP_EXPORT | mime_type (sticker_format format) |
Get the mime type for a sticker format. More... | |
std::string DPP_EXPORT | file_extension (image_type type) |
Get the file extension for an image type. More... | |
std::string DPP_EXPORT | file_extension (sticker_format format) |
Get the file extension for a sticker format. More... | |
std::string DPP_EXPORT | version () |
Returns the library's version string. More... | |
std::string DPP_EXPORT | make_url_parameters (const std::map< std::string, std::string > ¶meters) |
Build a URL parameter string e.g. "?a=b&c=d&e=f" from a map of key/value pairs. Entries with empty key names or values are omitted. More... | |
std::string DPP_EXPORT | make_url_parameters (const std::map< std::string, uint64_t > ¶meters) |
Build a URL parameter string e.g. "?a=b&c=d&e=f" from a map of key/value pairs. Entries with empty key names or zero values are omitted. More... | |
void DPP_EXPORT | set_thread_name (const std::string &name) |
Set the name of the current thread for debugging and statistical reporting. More... | |
Variables | |
std::function< void(const dpp::log_t &)> DPP_EXPORT | cout_logger () |
Get a default logger that outputs to std::cout. e.g. More... | |
const std::string | cdn_host = "https://cdn.discordapp.com" |
The base URL for CDN content such as profile pictures and guild icons. More... | |
const std::string | url_host = "https://discord.com" |
The base URL for message/user/channel links. More... | |
template<typename F , typename R , typename... Args> | |
constexpr bool | callable_returns_v = std::is_convertible_v<std::invoke_result_t<F, Args...>, R> |
Type trait to check if a callable F can be called using the arguments Args, and that its return value is convertible to R. More... | |
Utility helper functions, generally for logging, running programs, time/date manipulation, etc.
typedef std::function<void(const std::string& output)> dpp::utility::cmd_result_t |
Callback for the results of a command executed via dpp::utility::exec.
enum dpp::utility::avx_type_t : uint8_t |
Guild navigation types for dpp::utility::guild_navigation()
Enumerator | |
---|---|
gnt_customize | Customize tab with the server's dpp::onboarding_prompt |
gnt_browse | "16:20" Browse Channels tab |
gnt_guide | Server Guide. |
enum dpp::utility::time_format : uint8_t |
Timestamp formats for dpp::utility::timestamp()
std::string DPP_EXPORT dpp::utility::avatar_size | ( | uint32_t | size | ) |
Get the url query parameter for the cdn endpoint. Internally used to build url getters.
size | size to generate url parameter for. Must be any power of two between 16 and 4096 (inclusive) or it'll return an empty string. |
?size=128
, or an empty string std::string DPP_EXPORT dpp::utility::bot_invite_url | ( | const snowflake | bot_id, |
const uint64_t | permissions = 0 , |
||
const std::vector< std::string > & | scopes = {"bot", "applications.commands"} |
||
) |
Create a bot invite.
bot_id | Bot ID |
permissions | Permission bitmask of the bot to invite |
scopes | Scopes to use |
std::string DPP_EXPORT dpp::utility::bytes | ( | uint64_t | c | ) |
Convert a byte count to display value.
c | number of bytes |
std::string DPP_EXPORT dpp::utility::cdn_endpoint_url | ( | const std::vector< image_type > & | allowed_formats, |
const std::string & | path_without_extension, | ||
const dpp::image_type | format, | ||
uint16_t | size, | ||
bool | prefer_animated = false , |
||
bool | is_animated = false |
||
) |
Helper function to easily create discord's cdn endpoint urls.
allowed_formats | A vector of supported formats for the endpoint from the discord docs |
path_without_extension | The path for the endpoint (without the extension e.g. .png ) |
format | the wished format to return. Must be one of the formats passed in allowed_formats , otherwise it returns an empty string |
size | the image size which will be appended as a querystring to the url. It must be any power of two between 16 and 4096, otherwise no querystring will be appended (discord then returns the image as their default size) |
prefer_animated | Whether the user prefers gif format. If true, it'll return gif format whenever the image is available as animated. In this case, the format -parameter is only used for non-animated images. |
is_animated | Whether the image is actually animated or not |
std::string DPP_EXPORT dpp::utility::cdn_endpoint_url_hash | ( | const std::vector< image_type > & | allowed_formats, |
const std::string & | path_without_extension, | ||
const std::string & | hash, | ||
const dpp::image_type | format, | ||
uint16_t | size, | ||
bool | prefer_animated = false , |
||
bool | is_animated = false |
||
) |
Helper function to easily create discord's cdn endpoint urls.
allowed_formats | A vector of supported formats for the endpoint from the discord docs |
path_without_extension | The path for the endpoint (without the extension e.g. .png ) |
hash | The hash (optional). If not empty, it will be prefixed with a_ for animated images (is_animated =true) |
format | the wished format to return. Must be one of the formats passed in allowed_formats , otherwise it returns an empty string |
size | the image size which will be appended as a querystring to the url. It must be any power of two between 16 and 4096, otherwise no querystring will be appended (discord then returns the image as their default size) |
prefer_animated | Whether the user prefers gif format. If true, it'll return gif format whenever the image is available as animated. In this case, the format -parameter is only used for non-animated images. |
is_animated | Whether the image is actually animated or not |
std::string DPP_EXPORT dpp::utility::cdn_endpoint_url_sticker | ( | snowflake | sticker_id, |
sticker_format | format | ||
) |
Helper function to easily create discord's cdn endpoint urls (specialised for stickers)
sticker_id | The sticker ID. Returns empty string if 0 |
format | The format type |
std::string DPP_EXPORT dpp::utility::channel_mention | ( | const snowflake & | id | ) |
Create a mentionable channel.
id | The ID of the channel. |
std::string DPP_EXPORT dpp::utility::channel_url | ( | const snowflake & | guild_id, |
const snowflake & | channel_id | ||
) |
Create a URL for message.
guild_id | The ID of the guild where channel is located. |
channel_id | The ID of the channel. |
uint32_t DPP_EXPORT dpp::utility::cmyk | ( | double | c, |
double | m, | ||
double | y, | ||
double | k | ||
) |
Convert doubles to CMYK for sending in embeds.
c | cyan value, between 0 and 1 inclusive |
m | magenta value, between 0 and 1 inclusive |
y | yellow value, between 0 and 1 inclusive |
k | key (black) value, between 0 and 1 inclusive |
uint32_t DPP_EXPORT dpp::utility::cmyk | ( | int | c, |
int | m, | ||
int | y, | ||
int | k | ||
) |
Convert ints to CMYK for sending in embeds.
c | cyan value, between 0 and 255 inclusive |
m | magenta value, between 0 and 255 inclusive |
y | yellow value, between 0 and 255 inclusive |
k | key (black) value, between 0 and 255 inclusive |
std::string DPP_EXPORT dpp::utility::current_date_time | ( | ) |
Returns current date and time.
std::string DPP_EXPORT dpp::utility::debug_dump | ( | uint8_t * | data, |
size_t | length | ||
) |
Output hex values of a section of memory for debugging.
data | The start of the data to display |
length | The length of data to display |
std::string DPP_EXPORT dpp::utility::emoji_mention | ( | std::string_view | name, |
snowflake | id, | ||
bool | is_animated = false |
||
) |
Create a mentionable emoji.
name | The name of the emoji. |
id | The ID of the emoji. |
is_animated | is emoji animated. |
void DPP_EXPORT dpp::utility::exec | ( | const std::string & | cmd, |
std::vector< std::string > | parameters = {} , |
||
cmd_result_t | callback = {} |
||
) |
Run a commandline program asynchronously. The command line program is spawned in a separate std::thread, and when complete, its output from stdout is passed to the callback function in its string parameter. For example:
cmd | The command to run. |
parameters | Command line parameters. Each will be escaped using std::quoted . |
callback | The callback to call on completion. |
std::string DPP_EXPORT dpp::utility::file_extension | ( | image_type | type | ) |
Get the file extension for an image type.
type | Image type |
std::string DPP_EXPORT dpp::utility::file_extension | ( | sticker_format | format | ) |
Get the file extension for a sticker format.
format | Sticker format |
std::string DPP_EXPORT dpp::utility::guild_navigation | ( | const snowflake | guild_id, |
guild_navigation_type | gnt | ||
) |
Create a mentionable guild navigation (used in a message).
guild_id | The guild ID |
gnt | Guild navigation type using dpp::utility::guild_navigation_type |
bool DPP_EXPORT dpp::utility::has_voice | ( | ) |
Returns true if D++ was built with voice support.
uint32_t DPP_EXPORT dpp::utility::hsl | ( | double | h, |
double | s, | ||
double | l | ||
) |
Convert doubles to HSL for sending in embeds.
h | hue value, between 0 and 1 inclusive |
s | saturation value in percentage, between 0 and 1 inclusive |
l | lightness value in percentage, between 0 and 1 inclusive |
uint32_t DPP_EXPORT dpp::utility::hsl | ( | int | h, |
int | s, | ||
int | l | ||
) |
Convert ints to HSL for sending in embeds.
h | hue value, between 0 and 360 inclusive |
s | saturation value in percentage, between 0 and 100 inclusive |
l | lightness value in percentage, between 0 and 100 inclusive |
bool DPP_EXPORT dpp::utility::is_coro_enabled | ( | ) |
Returns true if D++ was built with coroutine support.
command_completion_event_t DPP_EXPORT dpp::utility::log_error | ( | ) |
The default callback handler for API calls. on error, sends the error to the logger.
std::string DPP_EXPORT dpp::utility::loglevel | ( | dpp::loglevel | in | ) |
Convert a dpp::loglevel enum value to a string.
in | log level to convert |
std::string DPP_EXPORT dpp::utility::make_url_parameters | ( | const std::map< std::string, std::string > & | parameters | ) |
Build a URL parameter string e.g. "?a=b&c=d&e=f" from a map of key/value pairs. Entries with empty key names or values are omitted.
parameters | parameters to create a url query string for |
std::string DPP_EXPORT dpp::utility::make_url_parameters | ( | const std::map< std::string, uint64_t > & | parameters | ) |
Build a URL parameter string e.g. "?a=b&c=d&e=f" from a map of key/value pairs. Entries with empty key names or zero values are omitted.
parameters | parameters to create a url query string for |
std::string DPP_EXPORT dpp::utility::markdown_escape | ( | const std::string & | text, |
bool | escape_code_blocks = false |
||
) |
Escapes Discord's markdown sequences in a string.
text | Text to escape |
escape_code_blocks | If set to false, then code blocks are not escaped. This means that you can still use a code block, and the text within will be left as-is. If set to true, code blocks will also be escaped so that ` symbol may be used as a normal character. |
std::string DPP_EXPORT dpp::utility::message_url | ( | const snowflake & | guild_id, |
const snowflake & | channel_id, | ||
const snowflake & | message_id | ||
) |
Create a URL for message.
guild_id | The ID of the guild where message is written. |
channel_id | The ID of the channel where message is written. |
message_id | The ID of the message. |
std::string DPP_EXPORT dpp::utility::mime_type | ( | image_type | type | ) |
Get the mime type for an image type.
type | Image type |
std::string DPP_EXPORT dpp::utility::mime_type | ( | sticker_format | format | ) |
Get the mime type for a sticker format.
format | Sticker format |
std::string DPP_EXPORT dpp::utility::read_file | ( | const std::string & | filename | ) |
Read a whole file into a std::string.
filename | The path to the file to read |
dpp::file_exception | on failure to read the entire file |
uint32_t DPP_EXPORT dpp::utility::rgb | ( | double | red, |
double | green, | ||
double | blue | ||
) |
Convert doubles to RGB for sending in embeds.
red | red value, between 0 and 1 inclusive |
green | green value, between 0 and 1 inclusive |
blue | blue value, between 0 and 1 inclusive |
uint32_t DPP_EXPORT dpp::utility::rgb | ( | int | red, |
int | green, | ||
int | blue | ||
) |
Convert ints to RGB for sending in embeds.
red | red value, between 0 and 255 inclusive |
green | green value, between 0 and 255 inclusive |
blue | blue value, between 0 and 255 inclusive |
std::string DPP_EXPORT dpp::utility::role_mention | ( | const snowflake & | id | ) |
Create a mentionable role.
id | The ID of the role. |
void DPP_EXPORT dpp::utility::set_thread_name | ( | const std::string & | name | ) |
Set the name of the current thread for debugging and statistical reporting.
name | New name to set |
std::string DPP_EXPORT dpp::utility::slashcommand_mention | ( | snowflake | command_id, |
const std::string & | command_name, | ||
const std::string & | subcommand = "" |
||
) |
Create a mentionable slashcommand (used in a message).
command_id | The ID of the slashcommand |
command_name | The command name |
subcommand | Optional: The subcommand name (for mentioning a subcommand) |
std::string DPP_EXPORT dpp::utility::slashcommand_mention | ( | snowflake | command_id, |
const std::string & | command_name, | ||
const std::string & | subcommand_group, | ||
const std::string & | subcommand | ||
) |
Create a mentionable slashcommand (used in a message).
command_id | The ID of the slashcommand |
command_name | The command name |
subcommand_group | The subcommand group name |
subcommand | The subcommand name |
std::string DPP_EXPORT dpp::utility::thread_url | ( | const snowflake & | guild_id, |
const snowflake & | thread_id | ||
) |
Create a URL for message.
guild_id | The ID of the guild where thread is located. |
thread_id | The ID of the thread. |
double DPP_EXPORT dpp::utility::time_f | ( | ) |
Return the current time with fractions of seconds. This is a unix epoch time with the fractional seconds part after the decimal place.
std::string DPP_EXPORT dpp::utility::timestamp | ( | time_t | ts, |
time_format | tf = tf_short_datetime |
||
) |
Return a mentionable timestamp (used in a message). These timestamps will display the given timestamp in the user's timezone and locale.
ts | Time stamp to convert |
tf | Format of timestamp using dpp::utility::time_format |
std::vector<std::string> DPP_EXPORT dpp::utility::tokenize | ( | std::string const & | in, |
const char * | sep = "\r\n" |
||
) |
Split (tokenize) a string into a vector, using the given separators.
in | Input string |
sep | Separator characters |
std::string DPP_EXPORT dpp::utility::url_encode | ( | const std::string & | value | ) |
Encodes a url parameter similar to php urlencode()
value | String to encode |
std::string DPP_EXPORT dpp::utility::user_mention | ( | const snowflake & | id | ) |
Create a mentionable user.
id | The ID of the user. |
std::string DPP_EXPORT dpp::utility::user_url | ( | const snowflake & | user_id | ) |
Create a URL for message.
user_id | The ID of the guild where thread is located. |
size_t DPP_EXPORT dpp::utility::utf8len | ( | std::string_view | str | ) |
Returns the length of a UTF-8 string in codepoints.
str | string to count length of |
std::string DPP_EXPORT dpp::utility::utf8substr | ( | std::string_view | str, |
size_t | start, | ||
size_t | length | ||
) |
Return substring of a UTF-8 encoded string in codepoints.
str | string to return substring from |
start | start codepoint offset |
length | length in codepoints |
std::string_view DPP_EXPORT dpp::utility::utf8subview | ( | std::string_view | str, |
size_t | start, | ||
size_t | length | ||
) |
Return subview of a UTF-8 encoded string in codepoints.
str | string to return substring from |
start | start codepoint offset |
length | length in codepoints |
std::string DPP_EXPORT dpp::utility::validate | ( | const std::string & | value, |
size_t | _min, | ||
size_t | _max, | ||
const std::string & | exception_message | ||
) |
Validate a string value In the event the length of the string is less than _min, then an exception of type dpp:length_exception will be thrown. If the string is longer than _max UTF8 codepoints it will be truncated to fit.
value | The value to validate |
_min | Minimum length |
_max | Maximum length |
exception_message | Exception message to throw if value length < _min |
dpp::length_exception | if value UTF8 length < _min |
std::string DPP_EXPORT dpp::utility::version | ( | ) |
Returns the library's version string.
avx_type_t DPP_EXPORT dpp::utility::voice_avx | ( | ) |
Returns an enum value indicating which AVX instruction set is used for mixing received voice data, if any.
|
inlineconstexpr |
Type trait to check if a callable F can be called using the arguments Args, and that its return value is convertible to R.
F | Callable object |
R | Return type to check for convertibility to |
Args... | Arguments to use to resolve the overload |
F(Args...)
is convertible to R
|
inline |
The base URL for CDN content such as profile pictures and guild icons.
std::function<void(const dpp::log_t&)> DPP_EXPORT dpp::utility::cout_logger() |
Get a default logger that outputs to std::cout. e.g.
|
inline |
The base URL for message/user/channel links.