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

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

#include <channel.h>

+ Inheritance diagram for dpp::channel:
+ Collaboration diagram for dpp::channel:

Public Member Functions

 channel ()
 
virtual ~channel ()
 
channelfill_from_json (nlohmann::json *j)
 
virtual std::string build_json (bool with_id=false) const
 Build json for this channel object. More...
 
channelset_name (const std::string &name)
 Set name of this channel object. More...
 
channelset_topic (const std::string &topic)
 Set topic of this channel object. More...
 
channelset_flags (const uint16_t flags)
 Set flags for this channel object. More...
 
channeladd_flag (const channel_flags flag)
 Add (bitwise OR) a flag to this channel object. More...
 
channelremove_flag (const channel_flags flag)
 Remove (bitwise NOT AND) a flag from this channel object. More...
 
channelset_position (const uint16_t position)
 Set position of this channel object. More...
 
channelset_parent_id (const snowflake parent_id)
 Set parent_id of this channel object. More...
 
channelset_user_limit (const uint8_t user_limit)
 Set user_limit of this channel object. More...
 
channelset_bitrate (const uint16_t bitrate)
 Set bitrate of this channel object. More...
 
channelset_nsfw (const bool is_nsfw)
 Set nsfw property of this channel object. More...
 
channelset_rate_limit_per_user (const uint16_t rate_limit_per_user)
 Set rate_limit_per_user of this channel object. More...
 
channeladd_permission_overwrite (const snowflake id, const uint8_t type, const uint64_t allowed_permissions, const uint64_t denied_permissions)
 Add a permission_overwrite to this channel object. More...
 
std::string get_mention () const
 Get the mention ping for the channel. More...
 
uint64_t get_user_permissions (const class user *member) const
 Get the user permissions for a user on this channel. More...
 
std::map< snowflake, class guild_member * > get_members ()
 Return a map of members on the channel, built from the guild's member list based on which members have the VIEW_CHANNEL permission. Does not return reliable information for voice channels, use dpp::channel::get_voice_members() instead for this. More...
 
std::map< snowflake, voicestateget_voice_members ()
 Get a map of members in this channel, if it is a voice channel. The map is keyed by snowflake id of the user. More...
 
std::string get_banner_url (uint16_t size=0) const
 Get the channel's banner url if they have one, otherwise returns an empty string. More...
 
std::string get_icon_url (uint16_t size=0) const
 Get the channel's icon url (if its a group DM), otherwise returns an empty string. More...
 
bool is_nsfw () const
 Returns true if the channel is NSFW gated. More...
 
bool is_text_channel () const
 Returns true if the channel is a text channel. More...
 
bool is_dm () const
 Returns true if the channel is a DM. More...
 
bool is_voice_channel () const
 Returns true if the channel is a voice channel. More...
 
bool is_group_dm () const
 Returns true if the channel is a group DM channel. More...
 
bool is_category () const
 Returns true if the channel is a category. More...
 
bool is_news_channel () const
 Returns true if the channel is a news channel. More...
 
bool is_store_channel () const
 Returns true if the channel is a store channel. More...
 
bool is_stage_channel () const
 Returns true if the channel is a stage channel. More...
 
bool is_video_auto () const
 Returns true if video quality is auto. More...
 
bool is_video_720p () const
 Returns true if video quality is 720p. More...
 
double get_creation_time () const
 Get the creation time of this object according to Discord. More...
 

Public Attributes

std::string name
 
std::string topic
 
std::string rtc_region
 Voice region if set for voice channel, otherwise empty string. More...
 
std::vector< snowflakerecipients
 
std::vector< permission_overwritepermission_overwrites
 
utility::iconhash icon
 Channel icon (for group DMs) More...
 
utility::iconhash banner
 Channel banner (boost level locked) More...
 
snowflake owner_id
 
snowflake parent_id
 
snowflake guild_id
 
snowflake last_message_id
 
time_t last_pin_timestamp
 
uint64_t permissions
 This is only filled when the channel is part of the resolved set sent within an interaction. Any other time it contains zero. When filled, it contains the calculated permission bitmask of the user issuing the command within this channel. More...
 
uint16_t flags
 
uint16_t position
 
uint16_t bitrate
 
uint16_t rate_limit_per_user
 
uint8_t user_limit
 
snowflake id
 Unique ID of object set by Discord. This value contains a timestamp, worker ID, internal server ID, and an incrementing value. Only the timestamp is relevant to us as useful metadata. More...
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ channel()

dpp::channel::channel ( )

Constructor

◆ ~channel()

virtual dpp::channel::~channel ( )
virtual

Destructor

Member Function Documentation

◆ add_flag()

channel & dpp::channel::add_flag ( const channel_flags  flag)

Add (bitwise OR) a flag to this channel object.

Parameters
flagFlag bit to set
Returns
Reference to self, so these method calls may be chained

◆ add_permission_overwrite()

channel & dpp::channel::add_permission_overwrite ( const snowflake  id,
const uint8_t  type,
const uint64_t  allowed_permissions,
const uint64_t  denied_permissions 
)

Add a permission_overwrite to this channel object.

Parameters
idID of the role or the member you want to add overwrite for
typetype of overwrite (0 for role, 1 for member)
allowed_permissionsbitmask of allowed permissions (refer to enum role_permissions) for this user/role in this channel
denied_permissionsbitmask of denied permissions (refer to enum role_permissions) for this user/role in this channel
Returns
Reference to self, so these method calls may be chained

◆ build_json()

virtual std::string dpp::channel::build_json ( bool  with_id = false) const
virtual

Build json for this channel object.

Parameters
with_idinclude the ID in the json
Returns
std::string JSON string

Reimplemented from dpp::json_interface< channel >.

Reimplemented in dpp::thread.

◆ fill_from_json()

channel & dpp::channel::fill_from_json ( nlohmann::json *  j)

Read class values from json object

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

◆ get_banner_url()

std::string dpp::channel::get_banner_url ( uint16_t  size = 0) const

Get the channel's banner url if they have one, otherwise returns an empty string.

Parameters
sizeThe size of the banner in pixels. It can be any power of two between 16 and 4096. if not specified, the default sized banner is returned.
Returns
std::string banner url or empty string

◆ get_creation_time()

double dpp::managed::get_creation_time ( ) const
inherited

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_icon_url()

std::string dpp::channel::get_icon_url ( uint16_t  size = 0) const

Get the channel's icon url (if its a group DM), otherwise returns an empty string.

Parameters
sizeThe size of the icon in pixels. It can be any power of two between 16 and 4096. if not specified, the default sized icon is returned.
Returns
std::string icon url or empty string

◆ get_members()

std::map< snowflake, class guild_member * > dpp::channel::get_members ( )

Return a map of members on the channel, built from the guild's member list based on which members have the VIEW_CHANNEL permission. Does not return reliable information for voice channels, use dpp::channel::get_voice_members() instead for this.

Returns
A map of guild members keyed by user id.

◆ get_mention()

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

Get the mention ping for the channel.

Returns
std::string mention

◆ get_user_permissions()

uint64_t dpp::channel::get_user_permissions ( const class user member) const

Get the user permissions for a user on this channel.

Parameters
memberThe user to return permissions for
Returns
uint64_t Permissions bitmask made of bits in role_permissions. Note that if the user is not on the channel or the guild is not in the cache, the function will always return 0.

◆ get_voice_members()

std::map< snowflake, voicestate > dpp::channel::get_voice_members ( )

Get a map of members in this channel, if it is a voice channel. The map is keyed by snowflake id of the user.

Returns
std::map<snowflake, voicestate> The voice members of the channel

◆ is_category()

bool dpp::channel::is_category ( ) const

Returns true if the channel is a category.

Returns
true if a category

◆ is_dm()

bool dpp::channel::is_dm ( ) const

Returns true if the channel is a DM.

Returns
true if is a DM

◆ is_group_dm()

bool dpp::channel::is_group_dm ( ) const

Returns true if the channel is a group DM channel.

Returns
true if group DM

◆ is_news_channel()

bool dpp::channel::is_news_channel ( ) const

Returns true if the channel is a news channel.

Returns
true if news channel

◆ is_nsfw()

bool dpp::channel::is_nsfw ( ) const

Returns true if the channel is NSFW gated.

Returns
true if NSFW

◆ is_stage_channel()

bool dpp::channel::is_stage_channel ( ) const

Returns true if the channel is a stage channel.

Returns
true if stage channel

◆ is_store_channel()

bool dpp::channel::is_store_channel ( ) const

Returns true if the channel is a store channel.

Deprecated:
store channels are deprecated by Discord
Returns
true if store channel

◆ is_text_channel()

bool dpp::channel::is_text_channel ( ) const

Returns true if the channel is a text channel.

Returns
true if text channel

◆ is_video_720p()

bool dpp::channel::is_video_720p ( ) const

Returns true if video quality is 720p.

Returns
true if video quality is 720p

◆ is_video_auto()

bool dpp::channel::is_video_auto ( ) const

Returns true if video quality is auto.

Returns
true if video quality is auto

◆ is_voice_channel()

bool dpp::channel::is_voice_channel ( ) const

Returns true if the channel is a voice channel.

Returns
true if voice channel

◆ remove_flag()

channel & dpp::channel::remove_flag ( const channel_flags  flag)

Remove (bitwise NOT AND) a flag from this channel object.

Parameters
flagFlag bit to set
Returns
Reference to self, so these method calls may be chained

◆ set_bitrate()

channel & dpp::channel::set_bitrate ( const uint16_t  bitrate)

Set bitrate of this channel object.

Parameters
bitrateBitrate to set
Returns
Reference to self, so these method calls may be chained

◆ set_flags()

channel & dpp::channel::set_flags ( const uint16_t  flags)

Set flags for this channel object.

Parameters
flagsFlag bitmask to set
Returns
Reference to self, so these method calls may be chained

◆ set_name()

channel & dpp::channel::set_name ( const std::string &  name)

Set name of this channel object.

Parameters
nameName to set
Returns
Reference to self, so these method calls may be chained
Note
name will be truncated to 100 chars, if longer
Exceptions
dpp::length_exceptionif length < 1

◆ set_nsfw()

channel & dpp::channel::set_nsfw ( const bool  is_nsfw)

Set nsfw property of this channel object.

Parameters
is_nsfwtrue, if channel is nsfw
Returns
Reference to self, so these method calls may be chained

◆ set_parent_id()

channel & dpp::channel::set_parent_id ( const snowflake  parent_id)

Set parent_id of this channel object.

Parameters
parent_idParent ID to set
Returns
Reference to self, so these method calls may be chained

◆ set_position()

channel & dpp::channel::set_position ( const uint16_t  position)

Set position of this channel object.

Parameters
positionPosition to set
Returns
Reference to self, so these method calls may be chained

◆ set_rate_limit_per_user()

channel & dpp::channel::set_rate_limit_per_user ( const uint16_t  rate_limit_per_user)

Set rate_limit_per_user of this channel object.

Parameters
rate_limit_per_userrate_limit_per_user (slowmode in sec) to set
Returns
Reference to self, so these method calls may be chained

◆ set_topic()

channel & dpp::channel::set_topic ( const std::string &  topic)

Set topic of this channel object.

Parameters
topicTopic to set
Returns
Reference to self, so these method calls may be chained
Note
topic will be truncated to 1024 chars, if longer

◆ set_user_limit()

channel & dpp::channel::set_user_limit ( const uint8_t  user_limit)

Set user_limit of this channel object.

Parameters
user_limitLimit to set
Returns
Reference to self, so these method calls may be chained

Member Data Documentation

◆ banner

utility::iconhash dpp::channel::banner

Channel banner (boost level locked)

◆ bitrate

uint16_t dpp::channel::bitrate

the bitrate (in bits) of the voice channel

◆ flags

uint16_t dpp::channel::flags

Flags bitmap

◆ guild_id

snowflake dpp::channel::guild_id

Guild id of the guild that owns the channel

◆ icon

utility::iconhash dpp::channel::icon

Channel icon (for group DMs)

◆ id

snowflake dpp::managed::id
inherited

Unique ID of object set by Discord. This value contains a timestamp, worker ID, internal server ID, and an incrementing value. Only the timestamp is relevant to us as useful metadata.

◆ last_message_id

snowflake dpp::channel::last_message_id

ID of last message to be sent to the channel

◆ last_pin_timestamp

time_t dpp::channel::last_pin_timestamp

Timestamp of last pinned message

◆ name

std::string dpp::channel::name

Channel name

◆ owner_id

snowflake dpp::channel::owner_id

User ID of owner for group DMs

◆ parent_id

snowflake dpp::channel::parent_id

Parent ID (category)

◆ permission_overwrites

std::vector<permission_overwrite> dpp::channel::permission_overwrites

Permission overwrites to apply to base permissions

◆ permissions

uint64_t dpp::channel::permissions

This is only filled when the channel is part of the resolved set sent within an interaction. Any other time it contains zero. When filled, it contains the calculated permission bitmask of the user issuing the command within this channel.

◆ position

uint16_t dpp::channel::position

Sorting position, lower number means higher up the list

◆ rate_limit_per_user

uint16_t dpp::channel::rate_limit_per_user

amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages or manage_channel, are unaffected

◆ recipients

std::vector<snowflake> dpp::channel::recipients

DM recipients

◆ rtc_region

std::string dpp::channel::rtc_region

Voice region if set for voice channel, otherwise empty string.

◆ topic

std::string dpp::channel::topic

Channel topic

◆ user_limit

uint8_t dpp::channel::user_limit

Maximum user limit for voice channels (0-99)

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