D++ (DPP)  10.0.30
C++ Discord API Bot Library
dpp::emoji Class Reference

Represents an emoji for a dpp::guild. More...

#include "emoji.h"

Inheritance diagram for dpp::emoji:
Collaboration diagram for dpp::emoji:

Public Member Functions

 emoji ()=default
 Construct a new emoji object. More...
 
 emoji (const emoji &rhs)=default
 Copy constructor, copies another emoji's data. More...
 
 emoji (const std::string_view name, const snowflake id=0, const uint8_t flags=0)
 Construct a new emoji object with name, ID and flags. More...
 
 emoji (emoji &&rhs) noexcept=default
 Move constructor, moves another emoji's data to this. More...
 
 ~emoji () override=default
 Destroy the emoji object. More...
 
template<typename U = T, typename = decltype(std::declval<U&>().to_json_impl(bool{}))>
std::string build_json (bool with_id=false) const
 Convert object to json string. More...
 
template<typename U = T, typename = decltype(std::declval<U&>().fill_from_json_impl(std::declval<nlohmann::json*>()))>
T & fill_from_json (nlohmann::json *j)
 Convert object from nlohmann::json. More...
 
std::string format () const
 Format to name if unicode, name:id if has id or a:name:id if animated. More...
 
constexpr double get_creation_time () const noexcept
 Get the creation time of this object according to Discord. More...
 
std::string get_mention () const
 Get the mention/ping for the emoji. More...
 
std::string get_url (uint16_t size=0, const image_type format=i_png, bool prefer_animated=true) const
 Get the custom emoji url. More...
 
bool is_animated () const
 Emoji is animated. More...
 
bool is_available () const
 Is available. More...
 
bool is_managed () const
 Emoji is managed. More...
 
emojiload_image (const std::byte *data, uint32_t size, const image_type type)
 Load an image into the object. More...
 
emojiload_image (std::string_view image_blob, const image_type type)
 Load an image into the object. More...
 
constexpr bool operator!= (const managed &other) const noexcept
 Comparison operator for comparing two managed objects by id. More...
 
emojioperator= (const emoji &rhs)=default
 Copy assignment operator, copies another emoji's data. More...
 
emojioperator= (emoji &&rhs) noexcept=default
 Move constructor, moves another emoji's data to this. More...
 
constexpr bool operator== (const managed &other) const noexcept
 Comparison operator for comparing two managed objects by id. More...
 
bool requires_colons () const
 Emoji requires colons. More...
 
template<typename U = T, typename = decltype(std::declval<U&>().to_json_impl(bool{}))>
auto to_json (bool with_id=false) const
 Convert object to nlohmann::json. More...
 

Static Public Member Functions

static std::string get_mention (std::string_view name, snowflake id, bool is_animated=false)
 Create a mentionable emoji. More...
 

Public Attributes

uint8_t flags {0}
 Flags for the emoji from dpp::emoji_flags. More...
 
snowflake id = {}
 Unique ID of object set by Discord. More...
 
utility::image_data image_data
 Image data for the emoji, if uploading. More...
 
std::string name {}
 Emoji name. More...
 
std::vector< snowflakeroles
 Roles allowed to use this emoji. More...
 
snowflake user_id
 The id of the user that created this emoji. More...
 

Protected Member Functions

emojifill_from_json_impl (nlohmann::json *j)
 Read class values from json object. More...
 
json to_json_impl (bool with_id=false) const
 Build the json for this object. More...
 

Friends

struct json_interface< emoji >
 

Detailed Description

Represents an emoji for a dpp::guild.

Constructor & Destructor Documentation

◆ emoji() [1/4]

dpp::emoji::emoji ( )
default

Construct a new emoji object.

◆ emoji() [2/4]

dpp::emoji::emoji ( const std::string_view  name,
const snowflake  id = 0,
const uint8_t  flags = 0 
)

Construct a new emoji object with name, ID and flags.

Parameters
nameThe emoji's name
idID, if it has one (unicode does not)
flagsEmoji flags (emoji_flags)

References dpp::e_require_colons, and flags.

◆ emoji() [3/4]

dpp::emoji::emoji ( const emoji rhs)
default

Copy constructor, copies another emoji's data.

Parameters
rhsEmoji to copy

◆ emoji() [4/4]

dpp::emoji::emoji ( emoji &&  rhs)
defaultnoexcept

Move constructor, moves another emoji's data to this.

Parameters
rhsEmoji to move from

◆ ~emoji()

dpp::emoji::~emoji ( )
overridedefault

Destroy the emoji object.

Member Function Documentation

◆ build_json()

template<typename T >
template<typename U = T, typename = decltype(std::declval<U&>().to_json_impl(bool{}))>
std::string dpp::json_interface< T >::build_json ( bool  with_id = false) const
inlineinherited

Convert object to json string.

Parameters
with_idWhether to include the ID or not
Note
Some fields are conditionally filled, do not rely on all fields being present
Returns
std::string Json built from the structure

Referenced by dpp::cluster::create_webhook(), dpp::cluster::guild_ban_add(), dpp::cluster::guild_ban_delete(), dpp::cluster::guild_command_edit_permissions(), dpp::cluster::guild_create(), dpp::cluster::guild_get_integrations(), dpp::cluster::guild_get_preview(), dpp::cluster::guild_get_vanity(), and dpp::cluster::roles_get().

Here is the caller graph for this function:

◆ fill_from_json()

template<typename T >
template<typename U = T, typename = decltype(std::declval<U&>().fill_from_json_impl(std::declval<nlohmann::json*>()))>
T& dpp::json_interface< T >::fill_from_json ( nlohmann::json j)
inlineinherited

Convert object from nlohmann::json.

Parameters
jnlohmann::json object
Returns
T& Reference to self for fluent calling

Referenced by dpp::invite::fill_from_json_impl(), dpp::thread::fill_from_json_impl(), dpp::scheduled_event::fill_from_json_impl(), dpp::from_json(), dpp::message::get_url(), and dpp::interaction_response::interaction_response().

Here is the caller graph for this function:

◆ fill_from_json_impl()

emoji & dpp::emoji::fill_from_json_impl ( nlohmann::json j)
protected

Read class values from json object.

Parameters
jA json object to read from
Returns
A reference to self

References dpp::e_animated, and flags.

◆ format()

std::string dpp::emoji::format ( ) const

Format to name if unicode, name:id if has id or a:name:id if animated.

Returns
Formatted name for reactions

◆ get_creation_time()

constexpr double dpp::managed::get_creation_time ( ) const
inlineconstexprnoexceptinherited

Get the creation time of this object according to Discord.

Returns
double creation time inferred from the snowflake ID. The minimum possible value is the first second of 2015.

◆ get_mention() [1/2]

std::string dpp::emoji::get_mention ( ) const

Get the mention/ping for the emoji.

Returns
std::string mention

◆ get_mention() [2/2]

std::string dpp::emoji::get_mention ( std::string_view  name,
snowflake  id,
bool  is_animated = false 
)
static

Create a mentionable emoji.

Parameters
nameThe name of the emoji.
idThe ID of the emoji.
is_animatedis emoji animated.
Returns
std::string The formatted mention of the emoji.

◆ get_url()

std::string dpp::emoji::get_url ( uint16_t  size = 0,
const image_type  format = i_png,
bool  prefer_animated = true 
) const

Get the custom emoji url.

Parameters
sizeThe size of the emoji in pixels. It can be any power of two between 16 and 4096, otherwise the default sized emoji is returned.
formatThe format to use for the emoji. It can be one of i_webp, i_jpg, i_png or i_gif. When passing i_gif, it returns an empty string for non-animated emojis. Consider using the prefer_animated parameter instead.
prefer_animatedWhether you prefer gif format. If true, it'll return gif format whenever the emoji is available as animated.
Returns
std::string emoji url or an empty string, if the id is not set

◆ is_animated()

bool dpp::emoji::is_animated ( ) const

Emoji is animated.

Returns
true Is animated
false Is noy animated

Referenced by dpp::poll::add_answer(), is_available(), and load_image().

Here is the caller graph for this function:

◆ is_available()

bool dpp::emoji::is_available ( ) const

Is available.

Returns
true Is available
false Is unavailable

References is_animated(), and name.

Here is the call graph for this function:

◆ is_managed()

bool dpp::emoji::is_managed ( ) const

Emoji is managed.

Returns
true Is managed
false Is not managed

References dpp::err_icon_size, and MAX_EMOJI_SIZE.

◆ load_image() [1/2]

emoji & dpp::emoji::load_image ( const std::byte *  data,
uint32_t  size,
const image_type  type 
)

Load an image into the object.

Parameters
dataImage binary data
sizeSize of the image.
typeType of image. It can be one of i_gif, i_jpg or i_png.
Returns
emoji& Reference to self
Exceptions
dpp::length_exceptionImage content exceeds discord maximum of 256 kilobytes

◆ load_image() [2/2]

emoji & dpp::emoji::load_image ( std::string_view  image_blob,
const image_type  type 
)

Load an image into the object.

Parameters
image_blobImage binary data
typeType of image. It can be one of i_gif, i_jpg or i_png.
Returns
emoji& Reference to self
Exceptions
dpp::length_exceptionImage content exceeds discord maximum of 256 kilobytes

References dpp::utility::emoji_mention(), is_animated(), and name.

Here is the call graph for this function:

◆ operator!=()

constexpr bool dpp::managed::operator!= ( const managed other) const
inlineconstexprnoexceptinherited

Comparison operator for comparing two managed objects by id.

Parameters
otherOther object to compare against
Returns
true objects are not the same id
false objects are the same id

◆ operator=() [1/2]

emoji& dpp::emoji::operator= ( const emoji rhs)
default

Copy assignment operator, copies another emoji's data.

Parameters
rhsEmoji to copy

◆ operator=() [2/2]

emoji& dpp::emoji::operator= ( emoji &&  rhs)
defaultnoexcept

Move constructor, moves another emoji's data to this.

Parameters
rhsEmoji to move from

◆ operator==()

constexpr bool dpp::managed::operator== ( const managed other) const
inlineconstexprnoexceptinherited

Comparison operator for comparing two managed objects by id.

Parameters
otherOther object to compare against
Returns
true objects are the same id
false objects are not the same id

◆ requires_colons()

bool dpp::emoji::requires_colons ( ) const

Emoji requires colons.

Returns
true Requires colons
false Does not require colons

◆ to_json()

template<typename T >
template<typename U = T, typename = decltype(std::declval<U&>().to_json_impl(bool{}))>
auto dpp::json_interface< T >::to_json ( bool  with_id = false) const
inlineinherited

Convert object to nlohmann::json.

Parameters
with_idWhether to include the ID or not
Note
Some fields are conditionally filled, do not rely on all fields being present
Returns
json Json built from the structure

Referenced by dpp::cluster::delete_webhook_with_token(), and dpp::onboarding_prompt::onboarding_prompt().

Here is the caller graph for this function:

◆ to_json_impl()

json dpp::emoji::to_json_impl ( bool  with_id = false) const
protected

Build the json for this object.

Parameters
with_idinclude the id in the JSON
Returns
std::string json data

References dpp::e_managed, and flags.

Friends And Related Function Documentation

◆ json_interface< emoji >

friend struct json_interface< emoji >
friend

Member Data Documentation

◆ flags

uint8_t dpp::emoji::flags {0}

Flags for the emoji from dpp::emoji_flags.

Referenced by emoji(), fill_from_json_impl(), and to_json_impl().

◆ id

◆ image_data

utility::image_data dpp::emoji::image_data

Image data for the emoji, if uploading.

◆ name

◆ roles

std::vector<snowflake> dpp::emoji::roles

Roles allowed to use this emoji.

◆ user_id

snowflake dpp::emoji::user_id

The id of the user that created this emoji.


The documentation for this class was generated from the following files: