A definition of a discord channel. More...
#include "channel.h"
Public Member Functions | |
channel () | |
Constructor. More... | |
virtual | ~channel () |
Destructor. More... | |
channel & | add_flag (const channel_flags flag) |
Add (bitwise OR) a flag to this channel object. More... | |
channel & | add_permission_overwrite (const snowflake target, const overwrite_type type, const uint64_t allowed_permissions, const uint64_t denied_permissions) |
Add permission overwrites for a user or role. 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... | |
constexpr double | get_creation_time () const noexcept |
Get the creation time of this object according to Discord. More... | |
forum_layout_type | get_default_forum_layout () const |
Get the default forum layout type used to display posts in forum channels. More... | |
std::string | get_icon_url (uint16_t size=0, const image_type format=i_png) const |
Get the channel's icon url (if its a group DM), otherwise returns an empty string. 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. More... | |
std::string | get_mention () const |
Get the mention ping for the channel. More... | |
channel_type | get_type () const |
Get the channel type. More... | |
std::string | get_url () const |
Returns string of URL to channel. More... | |
permission | get_user_permissions (const class guild_member &member) const |
Get the overall permissions for a member in this channel, including channel overwrites, role permissions and admin privileges. More... | |
permission | get_user_permissions (const class user *user) const |
Get the overall permissions for a member in this channel, including channel overwrites, role permissions and admin privileges. More... | |
std::map< snowflake, voicestate > | get_voice_members () |
Get a map of members in this channel, if it is a voice channel. More... | |
bool | is_category () const |
Returns true if the channel is a category. More... | |
bool | is_dm () const |
Returns true if the channel is a DM. More... | |
bool | is_download_options_hidden () const |
Returns true if embedded media download options are hidden in a media channel. More... | |
bool | is_forum () const |
Returns true if the channel is a forum. More... | |
bool | is_group_dm () const |
Returns true if the channel is a group DM channel. More... | |
bool | is_locked_permissions () const |
Returns true if the permissions are to be synced with the category it is in. More... | |
bool | is_media_channel () const |
Returns true if the channel is a media channel. More... | |
bool | is_news_channel () const |
Returns true if the channel is an announcement channel. More... | |
bool | is_nsfw () const |
Returns true if the channel is NSFW gated. More... | |
bool | is_pinned_thread () const |
Returns true if channel is a pinned thread in forum. More... | |
bool | is_stage_channel () const |
Returns true if the channel is a stage channel. More... | |
bool | is_store_channel () const |
Returns true if the channel is a store channel. More... | |
bool | is_tag_required () const |
Returns true if a tag is required to be specified when creating a thread in a forum channel. More... | |
bool | is_text_channel () const |
Returns true if the channel is a text channel. More... | |
bool | is_video_720p () const |
Returns true if video quality is 720p. More... | |
bool | is_video_auto () const |
Returns true if video quality is auto. More... | |
bool | is_voice_channel () const |
Returns true if the channel is a voice channel. More... | |
constexpr bool | operator!= (const managed &other) const noexcept |
Comparison operator for comparing two managed objects by id. More... | |
constexpr bool | operator== (const managed &other) const noexcept |
Comparison operator for comparing two managed objects by id. More... | |
channel & | remove_flag (const channel_flags flag) |
Remove (bitwise NOT AND) a flag from this channel object. More... | |
channel & | remove_permission_overwrite (const snowflake target, const overwrite_type type) |
Remove channel specific permission overwrites of a user or role. More... | |
channel & | set_bitrate (const uint16_t bitrate) |
Set bitrate of this channel object. More... | |
channel & | set_default_forum_layout (forum_layout_type layout_type) |
Set the default forum layout type for the forum channel. More... | |
channel & | set_default_sort_order (default_forum_sort_order_t sort_order) |
Set the default forum sort order for the forum channel. More... | |
channel & | set_flags (const uint16_t flags) |
Set flags for this channel object. More... | |
channel & | set_guild_id (const snowflake guild_id) |
Set guild_id of this channel object. More... | |
channel & | set_lock_permissions (const bool is_lock_permissions) |
Set lock permissions property of this channel object Used only with the reorder channels method. More... | |
channel & | set_name (const std::string &name) |
Set name of this channel object. More... | |
channel & | set_nsfw (const bool is_nsfw) |
Set nsfw property of this channel object. More... | |
channel & | set_parent_id (const snowflake parent_id) |
Set parent_id of this channel object. More... | |
channel & | set_permission_overwrite (const snowflake target, const overwrite_type type, const uint64_t allowed_permissions, const uint64_t denied_permissions) |
Set permission overwrites for a user or role on this channel object. More... | |
channel & | set_position (const uint16_t position) |
Set position of this channel object. More... | |
channel & | set_rate_limit_per_user (const uint16_t rate_limit_per_user) |
Set rate_limit_per_user of this channel object. More... | |
channel & | set_topic (const std::string &topic) |
Set topic of this channel object. More... | |
channel & | set_type (channel_type type) |
Set type of this channel object. More... | |
channel & | set_user_limit (const uint8_t user_limit) |
Set user_limit of this channel object. 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 (const snowflake &id) |
Create a mentionable channel. More... | |
Public Attributes | |
std::vector< forum_tag > | available_tags |
A set of tags that can be used in a forum or media channel. More... | |
uint16_t | bitrate |
The bitrate (in kilobits) of the voice channel. More... | |
auto_archive_duration_t | default_auto_archive_duration |
Default duration, copied onto newly created threads. More... | |
std::variant< std::monostate, snowflake, std::string > | default_reaction |
The emoji to show as the default reaction button on a thread in a forum or media channel. More... | |
default_forum_sort_order_t | default_sort_order |
The default sort order type used to order posts in forum and media channels. More... | |
uint16_t | default_thread_rate_limit_per_user |
The initial rate_limit_per_user to set on newly created threads in a channel. More... | |
uint16_t | flags |
Flags bitmap (dpp::channel_flags) More... | |
snowflake | guild_id |
Guild id of the guild that owns the channel. More... | |
utility::iconhash | icon |
Channel icon (for group DMs). More... | |
snowflake | id = {} |
Unique ID of object set by Discord. More... | |
snowflake | last_message_id |
ID of last message to be sent to the channel. More... | |
time_t | last_pin_timestamp |
Timestamp of last pinned message. More... | |
std::string | name |
Channel name (1-100 characters). More... | |
snowflake | owner_id |
User ID of the creator for group DMs or threads. More... | |
snowflake | parent_id |
Parent ID (for guild channels: id of the parent category, for threads: id of the text channel this thread was created). More... | |
std::vector< permission_overwrite > | permission_overwrites |
Permission overwrites to apply to base permissions. More... | |
permission | permissions |
This is only filled when the channel is part of the resolved set sent within an interaction. More... | |
uint16_t | position |
Sorting position, lower number means higher up the list. More... | |
uint16_t | rate_limit_per_user |
Amount of seconds a user has to wait before sending another message (0-21600). More... | |
std::vector< snowflake > | recipients |
DM recipients. More... | |
std::string | rtc_region |
Voice region if set for voice channel, otherwise empty string. More... | |
std::string | topic |
Channel topic (0-4096 characters for forum and media channels, 0-1024 characters for all others). More... | |
uint8_t | user_limit |
Maximum user limit for voice channels (0-99) More... | |
Protected Member Functions | |
channel & | fill_from_json_impl (nlohmann::json *j) |
Read class values from json object. More... | |
virtual json | to_json_impl (bool with_id=false) const |
Build json for this channel object. More... | |
Static Protected Attributes | |
static constexpr uint16_t | CHANNEL_TYPE_MASK = 0b0000000000001111 |
Friends | |
struct | json_interface< channel > |
A definition of a discord channel.
There are one of these for every channel type except threads. Threads are special snowflakes. Get it? A Discord pun. Hahaha. .... I'll get my coat.
dpp::channel::channel | ( | ) |
Constructor.
|
virtual |
Destructor.
References CHANNEL_TYPE_MASK, and flags.
channel & dpp::channel::add_flag | ( | const channel_flags | flag | ) |
Add (bitwise OR) a flag to this channel object.
flag | Flag bit to add from dpp::channel_flags |
References user_limit.
channel & dpp::channel::add_permission_overwrite | ( | const snowflake | target, |
const overwrite_type | type, | ||
const uint64_t | allowed_permissions, | ||
const uint64_t | denied_permissions | ||
) |
Add permission overwrites for a user or role.
If the channel already has permission overwrites for the passed target, the existing ones will be adjusted by the passed permissions
target | ID of the role or the member you want to adjust overwrites for |
type | type of overwrite |
allowed_permissions | bitmask of dpp::permissions you want to allow for this user/role in this channel. Note: You can use the dpp::permission class |
denied_permissions | bitmask of dpp::permissions you want to deny for this user/role in this channel. Note: You can use the dpp::permission class |
|
inlineinherited |
Convert object to json string.
with_id | Whether to include the ID or not |
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().
|
inlineinherited |
Convert object from nlohmann::json.
j | nlohmann::json object |
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().
|
protected |
Read class values from json object.
j | A json object to read from |
|
inlineconstexprnoexceptinherited |
Get the creation time of this object according to Discord.
forum_layout_type dpp::channel::get_default_forum_layout | ( | ) | const |
Get the default forum layout type used to display posts in forum channels.
std::string dpp::channel::get_icon_url | ( | uint16_t | size = 0 , |
const image_type | format = i_png |
||
) | const |
Get the channel's icon url (if its a group DM), otherwise returns an empty string.
size | The size of the icon in pixels. It can be any power of two between 16 and 4096, otherwise the default sized icon is returned. |
format | The format to use for the avatar. It can be one of i_webp , i_jpg or i_png . |
std::map< snowflake, 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.
std::string dpp::channel::get_mention | ( | ) | const |
Get the mention ping for the channel.
References dpp::DEFAULT_FORUM_LAYOUT_MASK, and flags.
|
static |
Create a mentionable channel.
id | The ID of the channel. |
channel_type dpp::channel::get_type | ( | ) | const |
Get the channel type.
std::string dpp::channel::get_url | ( | ) | const |
Returns string of URL to channel.
permission dpp::channel::get_user_permissions | ( | const class guild_member & | member | ) | const |
Get the overall permissions for a member in this channel, including channel overwrites, role permissions and admin privileges.
member | The member to resolve the permissions for |
permission dpp::channel::get_user_permissions | ( | const class user * | user | ) | const |
Get the overall permissions for a member in this channel, including channel overwrites, role permissions and admin privileges.
user | The user to resolve the permissions for |
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.
bool dpp::channel::is_category | ( | ) | const |
Returns true if the channel is a category.
References dpp::CHANNEL_STORE, CHANNEL_TYPE_MASK, and flags.
bool dpp::channel::is_dm | ( | ) | const |
Returns true if the channel is a DM.
References dpp::CHANNEL_MEDIA, CHANNEL_TYPE_MASK, and flags.
bool dpp::channel::is_download_options_hidden | ( | ) | const |
Returns true if embedded media download options are hidden in a media channel.
References dpp::arc_1_hour, and default_auto_archive_duration.
bool dpp::channel::is_forum | ( | ) | const |
Returns true if the channel is a forum.
bool dpp::channel::is_group_dm | ( | ) | const |
Returns true if the channel is a group DM channel.
References dpp::CHANNEL_ANNOUNCEMENT, CHANNEL_TYPE_MASK, and flags.
bool dpp::channel::is_locked_permissions | ( | ) | const |
Returns true if the permissions are to be synced with the category it is in.
Used only and set manually when using the reorder channels method.
References dpp::CHANNEL_CATEGORY, CHANNEL_TYPE_MASK, and flags.
bool dpp::channel::is_media_channel | ( | ) | const |
Returns true if the channel is a media channel.
bool dpp::channel::is_news_channel | ( | ) | const |
Returns true if the channel is an announcement channel.
References dpp::c_pinned_thread, and flags.
bool dpp::channel::is_nsfw | ( | ) | const |
Returns true if the channel is NSFW gated.
References CHANNEL_TYPE_MASK, flags, and dpp::GROUP_DM.
Referenced by set_bitrate().
bool dpp::channel::is_pinned_thread | ( | ) | const |
Returns true if channel is a pinned thread in forum.
bool dpp::channel::is_stage_channel | ( | ) | const |
Returns true if the channel is a stage channel.
References dpp::c_video_quality_720p, and flags.
bool dpp::channel::is_store_channel | ( | ) | const |
Returns true if the channel is a store channel.
References dpp::c_require_tag, and flags.
bool dpp::channel::is_tag_required | ( | ) | const |
Returns true if a tag is required to be specified when creating a thread in a forum channel.
bool dpp::channel::is_text_channel | ( | ) | const |
Returns true if the channel is a text channel.
References dpp::CHANNEL_FORUM, CHANNEL_TYPE_MASK, and flags.
bool dpp::channel::is_video_720p | ( | ) | const |
Returns true if video quality is 720p.
bool dpp::channel::is_video_auto | ( | ) | const |
Returns true if video quality is auto.
References dpp::c_hide_media_download_options, and flags.
bool dpp::channel::is_voice_channel | ( | ) | const |
Returns true if the channel is a voice channel.
References dpp::CHANNEL_STAGE, CHANNEL_TYPE_MASK, and flags.
|
inlineconstexprnoexceptinherited |
Comparison operator for comparing two managed objects by id.
other | Other object to compare against |
|
inlineconstexprnoexceptinherited |
Comparison operator for comparing two managed objects by id.
other | Other object to compare against |
channel & dpp::channel::remove_flag | ( | const channel_flags | flag | ) |
Remove (bitwise NOT AND) a flag from this channel object.
flag | Flag bit to remove from dpp::channel_flags |
References dpp::unicode_emoji::o, and permission_overwrites.
channel & dpp::channel::remove_permission_overwrite | ( | const snowflake | target, |
const overwrite_type | type | ||
) |
Remove channel specific permission overwrites of a user or role.
target | ID of the role or the member you want to remove permission overwrites of |
type | type of overwrite |
References dpp::CHANNEL_TEXT, CHANNEL_TYPE_MASK, and flags.
Referenced by set_user_limit().
channel & dpp::channel::set_bitrate | ( | const uint16_t | bitrate | ) |
Set bitrate of this channel object.
bitrate | Bitrate to set (in kilobits) |
References dpp::c_nsfw, flags, and is_nsfw().
channel & dpp::channel::set_default_forum_layout | ( | forum_layout_type | layout_type | ) |
Set the default forum layout type for the forum channel.
layout_type | The layout type |
channel & dpp::channel::set_default_sort_order | ( | default_forum_sort_order_t | sort_order | ) |
Set the default forum sort order for the forum channel.
sort_order | The sort order |
References position.
channel & dpp::channel::set_flags | ( | const uint16_t | flags | ) |
Set flags for this channel object.
flags | Flag bitmask to set from dpp::channel_flags |
References dpp::c_lock_permissions, and flags.
Set guild_id of this channel object.
guild_id | Guild ID to set |
References bitrate.
channel & dpp::channel::set_lock_permissions | ( | const bool | is_lock_permissions | ) |
Set lock permissions property of this channel object Used only with the reorder channels method.
is_lock_permissions | true, if we are to inherit permissions from the category |
channel & dpp::channel::set_name | ( | const std::string & | name | ) |
Set name of this channel object.
name | Name to set |
dpp::length_exception | if length < 1 |
channel & dpp::channel::set_nsfw | ( | const bool | is_nsfw | ) |
Set nsfw property of this channel object.
is_nsfw | true, if channel is nsfw |
Set parent_id of this channel object.
parent_id | Parent ID to set |
References flags.
channel & dpp::channel::set_permission_overwrite | ( | const snowflake | target, |
const overwrite_type | type, | ||
const uint64_t | allowed_permissions, | ||
const uint64_t | denied_permissions | ||
) |
Set permission overwrites for a user or role on this channel object.
Old permission overwrites for the target will be overwritten
target | ID of the role or the member you want to set overwrites for |
type | type of overwrite |
allowed_permissions | bitmask of allowed dpp::permissions for this user/role in this channel. Note: You can use the dpp::permission class |
denied_permissions | bitmask of denied dpp::permissions for this user/role in this channel. Note: You can use the dpp::permission class |
allowed_permissions
and denied_permissions
parameters are 0, the permission overwrite for the target will be removed References dpp::c_nsfw, and flags.
channel & dpp::channel::set_position | ( | const uint16_t | position | ) |
Set position of this channel object.
position | Position to set |
References flags.
channel & dpp::channel::set_rate_limit_per_user | ( | const uint16_t | rate_limit_per_user | ) |
Set rate_limit_per_user of this channel object.
rate_limit_per_user | rate_limit_per_user (slowmode in sec) to set |
References flags.
channel & dpp::channel::set_topic | ( | const std::string & | topic | ) |
Set topic of this channel object.
topic | Topic to set |
channel & dpp::channel::set_type | ( | channel_type | type | ) |
Set type of this channel object.
type | Channel type to set |
channel & dpp::channel::set_user_limit | ( | const uint8_t | user_limit | ) |
Set user_limit of this channel object.
user_limit | Limit to set |
References remove_permission_overwrite().
|
inlineinherited |
Convert object to nlohmann::json.
with_id | Whether to include the ID or not |
Referenced by dpp::cluster::delete_webhook_with_token(), and dpp::onboarding_prompt::onboarding_prompt().
|
protectedvirtual |
Build json for this channel object.
with_id | include the ID in the json |
Reimplemented in dpp::thread.
References rate_limit_per_user.
|
friend |
std::vector<forum_tag> dpp::channel::available_tags |
A set of tags that can be used in a forum or media channel.
uint16_t dpp::channel::bitrate |
The bitrate (in kilobits) of the voice channel.
Referenced by set_guild_id().
|
staticconstexprprotected |
Referenced by is_category(), is_dm(), is_group_dm(), is_locked_permissions(), is_nsfw(), is_text_channel(), is_voice_channel(), remove_permission_overwrite(), and ~channel().
auto_archive_duration_t dpp::channel::default_auto_archive_duration |
Default duration, copied onto newly created threads.
Used by the clients, not the API. Threads will stop showing in the channel list after the specified period of inactivity. Defaults to dpp::arc_1_day.
Referenced by is_download_options_hidden().
std::variant<std::monostate, snowflake, std::string> dpp::channel::default_reaction |
The emoji to show as the default reaction button on a thread in a forum or media channel.
Contains either nothing, the id of a guild's custom emoji or the unicode character of the emoji.
default_forum_sort_order_t dpp::channel::default_sort_order |
The default sort order type used to order posts in forum and media channels.
uint16_t dpp::channel::default_thread_rate_limit_per_user |
The initial rate_limit_per_user
to set on newly created threads in a channel.
This field is copied to the thread at creation time and does not live update.
uint16_t dpp::channel::flags |
Flags bitmap (dpp::channel_flags)
Referenced by get_mention(), is_category(), is_dm(), is_group_dm(), is_locked_permissions(), is_news_channel(), is_nsfw(), is_stage_channel(), is_store_channel(), is_text_channel(), is_video_auto(), is_voice_channel(), remove_permission_overwrite(), set_bitrate(), set_flags(), set_parent_id(), set_permission_overwrite(), set_position(), set_rate_limit_per_user(), and ~channel().
snowflake dpp::channel::guild_id |
Guild id of the guild that owns the channel.
utility::iconhash dpp::channel::icon |
Channel icon (for group DMs).
|
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.
Referenced by dpp::poll::add_answer(), dpp::cluster::create_webhook(), dpp::cluster::current_user_join_thread(), dpp::invite::fill_from_json_impl(), dpp::command_permission::fill_from_json_impl(), dpp::interaction::get_resolved_role(), dpp::interaction::get_resolved_user(), dpp::cluster::global_bulk_command_create(), dpp::cluster::global_bulk_command_delete(), dpp::cluster::global_command_delete(), dpp::cluster::global_command_edit(), dpp::cluster::guild_ban_delete(), dpp::cluster::guild_command_create(), dpp::cluster::guild_command_edit_permissions(), dpp::cluster::guild_get_integrations(), dpp::events::guild_member_update::handle(), dpp::events::guild_role_create::handle(), dpp::events::channel_create::handle(), dpp::events::voice_state_update::handle(), dpp::discord_voice_client::handle_frame(), main(), dpp::component::set_disabled(), and dpp::select_option::set_label().
snowflake dpp::channel::last_message_id |
ID of last message to be sent to the channel.
time_t dpp::channel::last_pin_timestamp |
Timestamp of last pinned message.
std::string dpp::channel::name |
Channel name (1-100 characters).
snowflake dpp::channel::owner_id |
User ID of the creator for group DMs or threads.
snowflake dpp::channel::parent_id |
Parent ID (for guild channels: id of the parent category, for threads: id of the text channel this thread was created).
std::vector<permission_overwrite> dpp::channel::permission_overwrites |
Permission overwrites to apply to base permissions.
Referenced by remove_flag().
permission 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.
uint16_t dpp::channel::position |
Sorting position, lower number means higher up the list.
Referenced by set_default_sort_order().
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
Referenced by to_json_impl().
std::vector<snowflake> dpp::channel::recipients |
DM recipients.
Referenced by dpp::events::channel_create::handle().
std::string dpp::channel::rtc_region |
Voice region if set for voice channel, otherwise empty string.
std::string dpp::channel::topic |
Channel topic (0-4096 characters for forum and media channels, 0-1024 characters for all others).
uint8_t dpp::channel::user_limit |
Maximum user limit for voice channels (0-99)
Referenced by add_flag().