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

Represents a guild on Discord (AKA a server) More...

#include <guild.h>

+ Inheritance diagram for dpp::guild:
+ Collaboration diagram for dpp::guild:

Public Member Functions

 guild ()
 
virtual ~guild ()=default
 Destroy the guild object. More...
 
guildfill_from_json (nlohmann::json *j)
 
guildfill_from_json (class discord_client *shard, nlohmann::json *j)
 
std::string build_json (bool with_id=false) const
 
permission base_permissions (const class user *user) const
 Compute the base permissions for a member on this guild, before channel overwrites are applied. This method takes into consideration the following cases: More...
 
permission base_permissions (const guild_member &member) const
 Compute the base permissions for a member on this guild, before channel overwrites are applied. This method takes into consideration the following cases: More...
 
permission permission_overwrites (const uint64_t base_permissions, const user *user, const channel *channel) const
 Get the overall permissions for a member in this channel, including channel overwrites, role permissions and admin privileges. More...
 
permission permission_overwrites (const guild_member &member, const channel &channel) const
 Get the overall permissions for a member in this channel, including channel overwrites, role permissions and admin privileges. More...
 
void rehash_members ()
 Rehash members map. More...
 
bool connect_member_voice (snowflake user_id, bool self_mute=false, bool self_deaf=false)
 Connect to a voice channel another guild member is in. More...
 
std::string get_banner_url (uint16_t size=0, const image_type format=i_png, bool prefer_animated=true) const
 Get the banner url of the guild if it have one, otherwise returns an empty string. More...
 
std::string get_discovery_splash_url (uint16_t size=0, const image_type format=i_png) const
 Get the discovery splash url of the guild if it have one, otherwise returns an empty string. More...
 
std::string get_icon_url (uint16_t size=0, const image_type format=i_png, bool prefer_animated=true) const
 Get the icon url of the guild if it have one, otherwise returns an empty string. More...
 
std::string get_splash_url (uint16_t size=0, const image_type format=i_png) const
 Get the splash url of the guild if it have one, otherwise returns an empty string. More...
 
guildset_name (const std::string &n)
 Set the name of the guild in the object Min length: 2, Max length: 100 (not including leading/trailing spaces) More...
 
bool is_large () const
 Is a large server (>250 users) More...
 
bool is_unavailable () const
 Is unavailable due to outage (most other fields will be blank or outdated. More...
 
bool widget_enabled () const
 Widget is enabled for this server. More...
 
bool has_invite_splash () const
 Guild has access to set an invite splash background. More...
 
bool has_vip_regions () const
 Guild has access to set 384kbps bitrate in voice. More...
 
bool has_vanity_url () const
 Guild has access to set a vanity URL. More...
 
bool is_verified () const
 Guild is a verified server. More...
 
bool is_partnered () const
 Guild is a discord partnered server. More...
 
bool is_community () const
 Has enabled community. More...
 
bool has_role_subscriptions () const
 Has enabled role subscriptions. More...
 
bool has_news () const
 Guild has access to create announcement channels. More...
 
bool is_discoverable () const
 Guild is discoverable. More...
 
bool is_featureable () const
 Guild is featurable. More...
 
bool has_animated_banner () const
 Guild has access to set an animated guild banner image. More...
 
bool has_auto_moderation () const
 Guild has auto moderation features. More...
 
bool has_support_server () const
 Guild has been set as a support server on the App Directory. More...
 
bool has_role_subscriptions_available_for_purchase () const
 Guild has role subscriptions that can be purchased. More...
 
bool has_animated_icon () const
 Guild has access to set an animated guild icon. More...
 
bool has_banner () const
 Guild has access to set a guild banner image. More...
 
bool is_welcome_screen_enabled () const
 Guild has enabled the welcome screen. More...
 
bool has_member_verification_gate () const
 Guild has enabled membership screening. More...
 
bool is_preview_enabled () const
 Guild has preview enabled. More...
 
bool has_animated_icon_hash () const
 Guild icon is actually an animated gif. More...
 
bool has_animated_banner_hash () const
 Guild banner is actually an animated gif. More...
 
bool has_monetization_enabled () const
 guild has access to monetization features More...
 
bool has_more_stickers () const
 guild has increased custom sticker slots More...
 
bool has_creator_store_page () const
 guild has enabled the role subscription promo page More...
 
bool has_role_icons () const
 guild is able to set role icons More...
 
bool has_seven_day_thread_archive () const
 guild has access to the seven day archive time for threads More...
 
bool has_three_day_thread_archive () const
 guild has access to the three day archive time for threads More...
 
bool has_ticketed_events () const
 guild has enabled ticketed events More...
 
bool has_channel_banners () const
 guild has access to channel banners feature More...
 
bool has_premium_progress_bar_enabled () const
 True if the premium progress bar is enabled. More...
 
bool has_invites_disabled () const
 True if has paused invites, preventing new users from joining. More...
 
double get_creation_time () const
 Get the creation time of this object according to Discord. More...
 
bool operator== (const managed &other) const noexcept
 Comparison operator for comparing two managed objects by id. More...
 
bool operator!= (const managed &other) const noexcept
 Comparison operator for comparing two managed objects by id. More...
 

Public Attributes

std::string name
 
std::string description
 
std::string vanity_url_code
 Vanity url code for verified or partnered servers and boost level 3. More...
 
std::vector< snowflakeroles
 
std::vector< snowflakechannels
 
std::vector< snowflakethreads
 
std::vector< snowflakeemojis
 
std::map< snowflake, voicestatevoice_members
 
members_container members
 
welcome_screen_t welcome_screen
 
utility::iconhash icon
 
utility::iconhash splash
 
utility::iconhash discovery_splash
 
utility::iconhash banner
 
snowflake owner_id
 
snowflake afk_channel_id
 
snowflake application_id
 
snowflake system_channel_id
 
snowflake rules_channel_id
 
snowflake public_updates_channel_id
 
snowflake widget_channel_id
 
uint32_t member_count
 
uint32_t flags
 
uint32_t max_presences
 the maximum number of presences for the guild. More...
 
uint32_t max_members
 the maximum number of members for the guild More...
 
uint16_t shard_id
 
uint16_t premium_subscription_count
 
guild_afk_timeout_t afk_timeout
 
uint8_t max_video_channel_users
 
default_message_notification_t default_message_notifications
 
guild_premium_tier_t premium_tier
 
verification_level_t verification_level
 
guild_explicit_content_t explicit_content_filter
 
mfa_level_t mfa_level
 
guild_nsfw_level_t nsfw_level
 Guild NSFW level. More...
 
uint8_t flags_extra
 Additional flags. More...
 
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

Represents a guild on Discord (AKA a server)

Constructor & Destructor Documentation

◆ guild()

dpp::guild::guild ( )

Default constructor, zeroes all values

◆ ~guild()

virtual dpp::guild::~guild ( )
virtualdefault

Destroy the guild object.

Member Function Documentation

◆ base_permissions() [1/2]

permission dpp::guild::base_permissions ( const class user user) const

Compute the base permissions for a member on this guild, before channel overwrites are applied. This method takes into consideration the following cases:

  • Guild owner
  • Guild roles including @everyone
Parameters
userUser to get permissions for
Returns
permission permissions bitmask
Note
Requires role cache to be enabled (it's enabled by default).
Warning
The method will search for the guild member in the cache by the users id. If the guild member is not in cache, the method will always return 0.

◆ base_permissions() [2/2]

permission dpp::guild::base_permissions ( const guild_member member) const

Compute the base permissions for a member on this guild, before channel overwrites are applied. This method takes into consideration the following cases:

  • Guild owner
  • Guild roles including @everyone
Parameters
membermember to get permissions for
Returns
permission permissions bitmask
Note
Requires role cache to be enabled (it's enabled by default).

◆ build_json()

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

Build a JSON string from this object.

Parameters
with_idTrue if an ID is to be included in the JSON
Returns
JSON string

Reimplemented from dpp::json_interface< guild >.

◆ connect_member_voice()

bool dpp::guild::connect_member_voice ( snowflake  user_id,
bool  self_mute = false,
bool  self_deaf = false 
)

Connect to a voice channel another guild member is in.

Parameters
user_idUser id to join
self_muteTrue if the bot should mute itself
self_deafTrue if the bot should deafen itself
Returns
True if the user specified is in a vc, false if they aren't
Note
This is NOT a synchronous blocking call! The bot isn't instantly ready to send or listen for audio, as we have to wait for the connection to the voice server to be established! e.g. wait for dpp::cluster::on_voice_ready event, and then send the audio within that event.

◆ fill_from_json() [1/2]

guild & dpp::guild::fill_from_json ( class discord_client shard,
nlohmann::json *  j 
)

Read class values from json object

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

◆ fill_from_json() [2/2]

guild & dpp::guild::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::guild::get_banner_url ( uint16_t  size = 0,
const image_type  format = i_png,
bool  prefer_animated = true 
) const

Get the banner url of the guild if it 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, otherwise the default sized banner is returned.
formatThe format to use for the avatar. It can be one of i_webp, i_jpg, i_png or i_gif. Passing i_gif might result in an invalid url for non-animated images. Consider using the prefer_animated parameter instead.
prefer_animatedWhether you prefer gif format. If true, it'll return gif format whenever the image is available as animated.
Returns
std::string banner url or an empty string, if required attributes are missing or an invalid format was passed

◆ 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_discovery_splash_url()

std::string dpp::guild::get_discovery_splash_url ( uint16_t  size = 0,
const image_type  format = i_png 
) const

Get the discovery splash url of the guild if it have one, otherwise returns an empty string.

Parameters
sizeThe size of the discovery splash in pixels. It can be any power of two between 16 and 4096, otherwise the default sized discovery splash is returned.
formatThe format to use for the avatar. It can be one of i_webp, i_jpg or i_png.
Returns
std::string discovery splash url or an empty string, if required attributes are missing or an invalid format was passed

◆ get_icon_url()

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

Get the icon url of the guild if it have one, otherwise returns an empty string.

Parameters
sizeThe size of the icon in pixels. It can be any power of two between 16 and 4096, otherwise the default sized icon is returned.
formatThe format to use for the avatar. It can be one of i_webp, i_jpg, i_png or i_gif. Passing i_gif might result in an invalid url for non-animated images. Consider using the prefer_animated parameter instead.
prefer_animatedWhether you prefer gif format. If true, it'll return gif format whenever the image is available as animated.
Returns
std::string icon url or an empty string, if required attributes are missing or an invalid format was passed

◆ get_splash_url()

std::string dpp::guild::get_splash_url ( uint16_t  size = 0,
const image_type  format = i_png 
) const

Get the splash url of the guild if it have one, otherwise returns an empty string.

Parameters
sizeThe size of the splash in pixels. It can be any power of two between 16 and 4096, otherwise the default sized splash is returned.
formatThe format to use for the avatar. It can be one of i_webp, i_jpg or i_png.
Returns
std::string splash url or an empty string, if required attributes are missing or an invalid format was passed

◆ has_animated_banner()

bool dpp::guild::has_animated_banner ( ) const

Guild has access to set an animated guild banner image.

Returns
bool can have animated banner image

◆ has_animated_banner_hash()

bool dpp::guild::has_animated_banner_hash ( ) const

Guild banner is actually an animated gif.

Returns
bool is animated gif

◆ has_animated_icon()

bool dpp::guild::has_animated_icon ( ) const

Guild has access to set an animated guild icon.

Returns
bool can have animated icon

◆ has_animated_icon_hash()

bool dpp::guild::has_animated_icon_hash ( ) const

Guild icon is actually an animated gif.

Returns
bool is animated gif

◆ has_auto_moderation()

bool dpp::guild::has_auto_moderation ( ) const

Guild has auto moderation features.

Returns
bool has auto moderation features

◆ has_banner()

bool dpp::guild::has_banner ( ) const

Guild has access to set a guild banner image.

Returns
bool can have banner image

◆ has_channel_banners()

bool dpp::guild::has_channel_banners ( ) const

guild has access to channel banners feature

Returns
bool has channel banners
Deprecated:
Removed by Discord

◆ has_creator_store_page()

bool dpp::guild::has_creator_store_page ( ) const

guild has enabled the role subscription promo page

Returns
bool has role subscription promo page enabled

◆ has_invite_splash()

bool dpp::guild::has_invite_splash ( ) const

Guild has access to set an invite splash background.

Returns
bool can have an invite splash

◆ has_invites_disabled()

bool dpp::guild::has_invites_disabled ( ) const

True if has paused invites, preventing new users from joining.

Returns
bool has paused invites

◆ has_member_verification_gate()

bool dpp::guild::has_member_verification_gate ( ) const

Guild has enabled membership screening.

Returns
bool has membership screening

◆ has_monetization_enabled()

bool dpp::guild::has_monetization_enabled ( ) const

guild has access to monetization features

Returns
bool

◆ has_more_stickers()

bool dpp::guild::has_more_stickers ( ) const

guild has increased custom sticker slots

Returns
bool has more stickers

◆ has_news()

bool dpp::guild::has_news ( ) const

Guild has access to create announcement channels.

Returns
bool has announcement channels features enabled

◆ has_premium_progress_bar_enabled()

bool dpp::guild::has_premium_progress_bar_enabled ( ) const

True if the premium progress bar is enabled.

Returns
bool has progress bar enabled

◆ has_role_icons()

bool dpp::guild::has_role_icons ( ) const

guild is able to set role icons

Returns
bool has role icons

◆ has_role_subscriptions()

bool dpp::guild::has_role_subscriptions ( ) const

Has enabled role subscriptions.

Returns
bool has enabled role subscriptions

◆ has_role_subscriptions_available_for_purchase()

bool dpp::guild::has_role_subscriptions_available_for_purchase ( ) const

Guild has role subscriptions that can be purchased.

Returns
bool has role subscriptions that can be purchased

◆ has_seven_day_thread_archive()

bool dpp::guild::has_seven_day_thread_archive ( ) const

guild has access to the seven day archive time for threads

Returns
bool has seven day thread archive
Deprecated:
Removed by Discord

◆ has_support_server()

bool dpp::guild::has_support_server ( ) const

Guild has been set as a support server on the App Directory.

Returns
bool has been set as a support server of an app in the app directory

◆ has_three_day_thread_archive()

bool dpp::guild::has_three_day_thread_archive ( ) const

guild has access to the three day archive time for threads

Returns
bool has three day thread archive
Deprecated:
Removed by Discord

◆ has_ticketed_events()

bool dpp::guild::has_ticketed_events ( ) const

guild has enabled ticketed events

Returns
bool has ticketed events

◆ has_vanity_url()

bool dpp::guild::has_vanity_url ( ) const

Guild has access to set a vanity URL.

Returns
bool can have vanity url

◆ has_vip_regions()

bool dpp::guild::has_vip_regions ( ) const

Guild has access to set 384kbps bitrate in voice.

Returns
bool can have VIP voice regions

◆ is_community()

bool dpp::guild::is_community ( ) const

Has enabled community.

Returns
bool has enabled community

◆ is_discoverable()

bool dpp::guild::is_discoverable ( ) const

Guild is discoverable.

Returns
bool is discoverable

◆ is_featureable()

bool dpp::guild::is_featureable ( ) const

Guild is featurable.

Returns
bool is featurable

◆ is_large()

bool dpp::guild::is_large ( ) const

Is a large server (>250 users)

Returns
bool is a large guild

◆ is_partnered()

bool dpp::guild::is_partnered ( ) const

Guild is a discord partnered server.

Returns
bool is discord partnered

◆ is_preview_enabled()

bool dpp::guild::is_preview_enabled ( ) const

Guild has preview enabled.

Returns
bool has preview

◆ is_unavailable()

bool dpp::guild::is_unavailable ( ) const

Is unavailable due to outage (most other fields will be blank or outdated.

Returns
bool is unavailable

◆ is_verified()

bool dpp::guild::is_verified ( ) const

Guild is a verified server.

Returns
bool is verified

◆ is_welcome_screen_enabled()

bool dpp::guild::is_welcome_screen_enabled ( ) const

Guild has enabled the welcome screen.

Returns
bool enabled welcome screen

◆ operator!=()

bool dpp::managed::operator!= ( const managed other) const
noexceptinherited

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

bool dpp::managed::operator== ( const managed other) const
noexceptinherited

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

◆ permission_overwrites() [1/2]

permission dpp::guild::permission_overwrites ( const guild_member member,
const channel channel 
) const

Get the overall permissions for a member in this channel, including channel overwrites, role permissions and admin privileges.

Parameters
memberThe member to resolve the permissions for
channelChannel to compute permission overwrites for
Returns
permission Permission overwrites for the member. Made of bits in dpp::permissions.
Note
Requires role cache to be enabled (it's enabled by default).

◆ permission_overwrites() [2/2]

permission dpp::guild::permission_overwrites ( const uint64_t  base_permissions,
const user user,
const channel channel 
) const

Get the overall permissions for a member in this channel, including channel overwrites, role permissions and admin privileges.

Parameters
base_permissionsbase permissions before overwrites, from guild::base_permissions
userThe user to resolve the permissions for
channelChannel to compute permission overwrites for
Returns
permission Permission overwrites for the member. Made of bits in dpp::permissions.
Note
Requires role cache to be enabled (it's enabled by default).
Warning
The method will search for the guild member in the cache by the users id. If the guild member is not in cache, the method will always return 0.

◆ rehash_members()

void dpp::guild::rehash_members ( )

Rehash members map.

◆ set_name()

guild & dpp::guild::set_name ( const std::string &  n)

Set the name of the guild in the object Min length: 2, Max length: 100 (not including leading/trailing spaces)

Parameters
nGuild name
Returns
guild& reference to self
Exceptions
dpp::length_exceptionif guild name is too short

◆ widget_enabled()

bool dpp::guild::widget_enabled ( ) const

Widget is enabled for this server.

Returns
bool widget enabled

Member Data Documentation

◆ afk_channel_id

snowflake dpp::guild::afk_channel_id

Snowflake ID of AFK voice channel or 0

◆ afk_timeout

guild_afk_timeout_t dpp::guild::afk_timeout

Voice AFK timeout before moving users to AFK channel

◆ application_id

snowflake dpp::guild::application_id

ID of creating application, if any, or 0

◆ banner

utility::iconhash dpp::guild::banner

Server banner hash

◆ channels

std::vector<snowflake> dpp::guild::channels

List of channels on this server

◆ default_message_notifications

default_message_notification_t dpp::guild::default_message_notifications

Setting for how notifications are to be delivered to users

◆ description

std::string dpp::guild::description

Server description

◆ discovery_splash

utility::iconhash dpp::guild::discovery_splash

Guild discovery splash hash

◆ emojis

std::vector<snowflake> dpp::guild::emojis

List of emojis

◆ explicit_content_filter

guild_explicit_content_t dpp::guild::explicit_content_filter

Whether or not explicit content filtering is enable and what setting it is

◆ flags

uint32_t dpp::guild::flags

Flags bitmask as defined by values within dpp::guild_flags

◆ flags_extra

uint8_t dpp::guild::flags_extra

Additional flags.

◆ icon

utility::iconhash dpp::guild::icon

Guild icon hash

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

◆ max_members

uint32_t dpp::guild::max_members

the maximum number of members for the guild

◆ max_presences

uint32_t dpp::guild::max_presences

the maximum number of presences for the guild.

Note
Generally Discord always fills this with 0, apart from for the largest of guilds

◆ max_video_channel_users

uint8_t dpp::guild::max_video_channel_users

Maximum users in a video channel, or 0

◆ member_count

uint32_t dpp::guild::member_count

Approximate member count. May be sent as zero

◆ members

members_container dpp::guild::members

List of guild members. Note that when you first receive the guild create event, this may be empty or near empty. This depends upon your dpp::intents and the size of your bot. It will be filled by guild member chunk requests.

◆ mfa_level

mfa_level_t dpp::guild::mfa_level

If multi factor authentication is required for moderators or not

◆ name

std::string dpp::guild::name

Guild name

◆ nsfw_level

guild_nsfw_level_t dpp::guild::nsfw_level

Guild NSFW level.

◆ owner_id

snowflake dpp::guild::owner_id

Snowflake id of guild owner

◆ premium_subscription_count

uint16_t dpp::guild::premium_subscription_count

Number of boosters

◆ premium_tier

guild_premium_tier_t dpp::guild::premium_tier

Boost level

◆ public_updates_channel_id

snowflake dpp::guild::public_updates_channel_id

Public updates channel id or 0

◆ roles

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

Roles defined on this server

◆ rules_channel_id

snowflake dpp::guild::rules_channel_id

ID of rules channel for communities

◆ shard_id

uint16_t dpp::guild::shard_id

Shard ID of the guild

◆ splash

utility::iconhash dpp::guild::splash

Guild splash hash

◆ system_channel_id

snowflake dpp::guild::system_channel_id

ID of system channel where discord update messages are sent

◆ threads

std::vector<snowflake> dpp::guild::threads

List of threads on this server

◆ vanity_url_code

std::string dpp::guild::vanity_url_code

Vanity url code for verified or partnered servers and boost level 3.

Note
This field cannot be set from the API. Attempts to change this value will be silently ignored even if the correct number of boosts or verified/partnered status exist. See: https://github.com/discord/discord-api-docs/issues/519

◆ verification_level

verification_level_t dpp::guild::verification_level

Verification level of server

◆ voice_members

std::map<snowflake, voicestate> dpp::guild::voice_members

List of members in voice channels in the guild.

◆ welcome_screen

welcome_screen_t dpp::guild::welcome_screen

Welcome screen

◆ widget_channel_id

snowflake dpp::guild::widget_channel_id

Snowflake ID of widget channel, or 0

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