mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-08 08:47:17 +01:00
9298065cef
CPR has features disabled and PCRE is fully disabled until updated to new code.
691 lines
27 KiB
C++
691 lines
27 KiB
C++
/************************************************************************************
|
|
*
|
|
* D++, A Lightweight C++ library for Discord
|
|
*
|
|
* Copyright 2021 Craig Edwards and D++ contributors
|
|
* (https://github.com/brainboxdotcc/DPP/graphs/contributors)
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
************************************************************************************/
|
|
#pragma once
|
|
#include <variant>
|
|
#include <dpp/export.h>
|
|
#include <dpp/managed.h>
|
|
#include <dpp/json_fwd.h>
|
|
#include <dpp/permissions.h>
|
|
#include <dpp/guild.h>
|
|
#include <dpp/json_interface.h>
|
|
|
|
namespace dpp {
|
|
|
|
/** Various flags related to dpp::role */
|
|
enum role_flags : uint8_t {
|
|
r_hoist = 0b00000001, //!< Hoisted role (if the role is pinned in the user listing)
|
|
r_managed = 0b00000010, //!< Managed role (introduced by a bot or application)
|
|
r_mentionable = 0b00000100, //!< Whether this role is mentionable with a ping
|
|
r_premium_subscriber = 0b00001000, //!< Whether this is the guild's booster role
|
|
r_available_for_purchase = 0b00010000, //!< Whether the role is available for purchase
|
|
r_guild_connections = 0b00100000, //!< Whether the role is a guild's linked role
|
|
};
|
|
|
|
/**
|
|
* @brief Represents a role within a dpp::guild.
|
|
* Roles are combined via logical OR of the permission bitmasks, then channel-specific overrides
|
|
* can be applied on top, deny types apply a logic NOT to the bit mask, and allows apply a logical OR.
|
|
* @note Every guild has at least one role, called the 'everyone' role, which always has the same role
|
|
* ID as the guild's ID. This is the base permission set applied to all users where no other role or override
|
|
* applies, and is the starting value of the bit mask looped through to calculate channel permissions.
|
|
*/
|
|
class DPP_EXPORT role : public managed, public json_interface<role> {
|
|
public:
|
|
/**
|
|
* @brief Role name
|
|
* Between 1 and 100 characters.
|
|
*/
|
|
std::string name;
|
|
/**
|
|
* @brief Guild ID
|
|
*/
|
|
snowflake guild_id;
|
|
/**
|
|
* @brief Role colour.
|
|
* A colour of 0 means no colour. If you want a black role,
|
|
* you must use the value 0x000001.
|
|
*/
|
|
uint32_t colour;
|
|
/** Role position */
|
|
uint8_t position;
|
|
/** Role permissions bitmask values from dpp::permissions */
|
|
permission permissions;
|
|
/** Role flags from dpp::role_flags */
|
|
uint8_t flags;
|
|
/** Integration id if any (e.g. role is a bot's role created when it was invited) */
|
|
snowflake integration_id;
|
|
/** Bot id if any (e.g. role is a bot's role created when it was invited) */
|
|
snowflake bot_id;
|
|
/** The id of the role's subscription sku and listing */
|
|
snowflake subscription_listing_id;
|
|
/** The unicode emoji used for the role's icon, can be an empty string */
|
|
std::string unicode_emoji;
|
|
/** The role icon hash, can be an empty string */
|
|
utility::iconhash icon;
|
|
/** Image data for the role icon (if any) */
|
|
std::string* image_data;
|
|
|
|
/**
|
|
* @brief Construct a new role object
|
|
*/
|
|
role();
|
|
|
|
/**
|
|
* @brief Destroy the role object
|
|
*/
|
|
virtual ~role();
|
|
|
|
/**
|
|
* @brief Create a mentionable role.
|
|
* @param id The ID of the role.
|
|
* @return std::string The formatted mention of the role.
|
|
*/
|
|
static std::string get_mention(const snowflake& id);
|
|
|
|
/**
|
|
* @brief Set the name of the role
|
|
* Maximum length: 100
|
|
* Minimum length: 1
|
|
* @param n Name to set
|
|
* @return role& reference to self
|
|
* @throw dpp::exception thrown if role length is less than 1 character
|
|
*/
|
|
role& set_name(const std::string& n);
|
|
|
|
/**
|
|
* @brief Set the colour
|
|
*
|
|
* @param c Colour to set
|
|
* @note There is an americanised version of this method, role::set_color().
|
|
* @return role& reference to self
|
|
*/
|
|
role& set_colour(uint32_t c);
|
|
|
|
/**
|
|
* @brief Set the color
|
|
*
|
|
* @param c Colour to set
|
|
* @note This is an alias of role::set_colour for American spelling.
|
|
* @return role& reference to self
|
|
*/
|
|
role& set_color(uint32_t c);
|
|
|
|
/**
|
|
* @brief Set the flags
|
|
*
|
|
* @param f Flags to set from dpp::role_flags
|
|
* @return role& reference to self
|
|
*/
|
|
role& set_flags(uint8_t f);
|
|
|
|
/**
|
|
* @brief Set the integration id
|
|
*
|
|
* @param i Integration ID to set
|
|
* @return role& reference to self
|
|
*/
|
|
role& set_integration_id(snowflake i);
|
|
|
|
/**
|
|
* @brief Set the bot id
|
|
*
|
|
* @param b Bot ID to set
|
|
* @return role& reference to self
|
|
*/
|
|
role& set_bot_id(snowflake b);
|
|
|
|
/**
|
|
* @brief Set the guild id
|
|
*
|
|
* @param gid Guild ID to set
|
|
* @return role& reference to self
|
|
*/
|
|
role& set_guild_id(snowflake gid);
|
|
|
|
/**
|
|
* @brief Fill this role from json.
|
|
*
|
|
* @param j The json data
|
|
* @return A reference to self
|
|
*/
|
|
role& fill_from_json(nlohmann::json* j);
|
|
|
|
/**
|
|
* @brief Fill this role from json.
|
|
*
|
|
* @param guild_id the guild id to place in the json
|
|
* @param j The json data
|
|
* @return A reference to self
|
|
*/
|
|
role& fill_from_json(snowflake guild_id, nlohmann::json* j);
|
|
|
|
/**
|
|
* @brief Build a json string from this object.
|
|
*
|
|
* @param with_id true if the ID is to be included in the json text
|
|
* @return The json of the role
|
|
*/
|
|
virtual std::string build_json(bool with_id = false) const;
|
|
|
|
/**
|
|
* @brief Get the mention/ping for the role
|
|
*
|
|
* @return std::string mention
|
|
*/
|
|
std::string get_mention() const;
|
|
|
|
/**
|
|
* @brief Returns the role's icon url if they have one, otherwise returns an empty string
|
|
*
|
|
* @param 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.
|
|
* @param format The format to use for the avatar. It can be one of `i_webp`, `i_jpg` or `i_png`.
|
|
* @return std::string icon url or an empty string, if required attributes are missing or an invalid format was passed
|
|
*/
|
|
std::string get_icon_url(uint16_t size = 0, const image_type format = i_png) const;
|
|
|
|
/**
|
|
* @brief Load an image into the object as base64
|
|
*
|
|
* @param image_blob Image binary data
|
|
* @param type Type of image. It can be one of `i_gif`, `i_jpg` or `i_png`.
|
|
* @return emoji& Reference to self
|
|
*/
|
|
role& load_image(const std::string &image_blob, const image_type type);
|
|
|
|
/**
|
|
* @brief Operator less than, used for checking if a role is below another.
|
|
*
|
|
* @param lhs first role to compare
|
|
* @param rhs second role to compare
|
|
* @return true if lhs is less than rhs
|
|
*/
|
|
friend inline bool operator< (const role& lhs, const role& rhs)
|
|
{
|
|
return lhs.position < rhs.position;
|
|
}
|
|
|
|
/**
|
|
* @brief Operator greater than, used for checking if a role is above another.
|
|
*
|
|
* @param lhs first role to compare
|
|
* @param rhs second role to compare
|
|
* @return true if lhs is greater than rhs
|
|
*/
|
|
friend inline bool operator> (const role& lhs, const role& rhs)
|
|
{
|
|
return lhs.position > rhs.position;
|
|
}
|
|
|
|
/**
|
|
* @brief Operator equals, used for checking if a role is ranked equal to another.
|
|
*
|
|
* @param other role to compare
|
|
* @return true if is equal to other
|
|
*/
|
|
inline bool operator== (const role& other) const
|
|
{
|
|
return this->position == other.position;
|
|
}
|
|
|
|
/**
|
|
* @brief Operator not equals, used for checking if a role is ranked equal to another.
|
|
*
|
|
* @param other role to compare
|
|
* @return true if is not equal to other
|
|
*/
|
|
inline bool operator!= (const role& other) const
|
|
{
|
|
return this->position != other.position;
|
|
}
|
|
|
|
/**
|
|
* @brief True if the role is hoisted
|
|
* @return bool Role appears separated from others in the member list
|
|
*/
|
|
bool is_hoisted() const;
|
|
/**
|
|
* @brief True if the role is mentionable
|
|
* @return bool Role is mentionable
|
|
*/
|
|
bool is_mentionable() const;
|
|
/**
|
|
* @brief True if the role is managed (belongs to a bot or application)
|
|
* @return bool True if the role is managed (introduced for a bot or other application by Discord)
|
|
*/
|
|
bool is_managed() const;
|
|
/**
|
|
* @brief True if the role is the guild's Booster role
|
|
* @return bool whether the role is the premium subscriber, AKA "boost", role for the guild
|
|
*/
|
|
bool is_premium_subscriber() const;
|
|
/**
|
|
* @brief True if the role is available for purchase
|
|
* @return bool whether this role is available for purchase
|
|
*/
|
|
bool is_available_for_purchase() const;
|
|
/**
|
|
* @brief True if the role is a linked role
|
|
* @return bool True if the role is a linked role
|
|
*/
|
|
bool is_linked() const;
|
|
/**
|
|
* @brief True if has create instant invite permission
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the instant invite permission or is administrator.
|
|
*/
|
|
bool has_create_instant_invite() const;
|
|
/**
|
|
* @brief True if has the kick members permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the kick members permission or is administrator.
|
|
*/
|
|
bool has_kick_members() const;
|
|
/**
|
|
* @brief True if has the ban members permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the ban members permission or is administrator.
|
|
*/
|
|
bool has_ban_members() const;
|
|
/**
|
|
* @brief True if has the administrator permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the administrator permission or is administrator.
|
|
*/
|
|
bool has_administrator() const;
|
|
/**
|
|
* @brief True if has the manage channels permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the manage channels permission or is administrator.
|
|
*/
|
|
bool has_manage_channels() const;
|
|
/**
|
|
* @brief True if has the manage guild permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the manage guild permission or is administrator.
|
|
*/
|
|
bool has_manage_guild() const;
|
|
/**
|
|
* @brief True if has the add reactions permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the add reactions permission or is administrator.
|
|
*/
|
|
bool has_add_reactions() const;
|
|
/**
|
|
* @brief True if has the view audit log permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the view audit log permission or is administrator.
|
|
*/
|
|
bool has_view_audit_log() const;
|
|
/**
|
|
* @brief True if has the priority speaker permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the priority speaker permission or is administrator.
|
|
*/
|
|
bool has_priority_speaker() const;
|
|
/**
|
|
* @brief True if has the stream permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the stream permission or is administrator.
|
|
*/
|
|
bool has_stream() const;
|
|
/**
|
|
* @brief True if has the view channel permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the view channel permission or is administrator.
|
|
*/
|
|
bool has_view_channel() const;
|
|
/**
|
|
* @brief True if has the send messages permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the send messages permission or is administrator.
|
|
*/
|
|
bool has_send_messages() const;
|
|
/**
|
|
* @brief True if has the send TTS messages permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the send TTS messages permission or is administrator.
|
|
*/
|
|
bool has_send_tts_messages() const;
|
|
/**
|
|
* @brief True if has the manage messages permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the manage messages permission or is administrator.
|
|
*/
|
|
bool has_manage_messages() const;
|
|
/**
|
|
* @brief True if has the embed links permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the embed links permission or is administrator.
|
|
*/
|
|
bool has_embed_links() const;
|
|
/**
|
|
* @brief True if has the attach files permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the attach files permission or is administrator.
|
|
*/
|
|
bool has_attach_files() const;
|
|
/**
|
|
* @brief True if has the read message history permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the read message history permission or is administrator.
|
|
*/
|
|
bool has_read_message_history() const;
|
|
/**
|
|
* @brief True if has the mention \@everyone and \@here permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the mention \@everyone and \@here permission or is administrator.
|
|
*/
|
|
bool has_mention_everyone() const;
|
|
/**
|
|
* @brief True if has the use external emojis permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the use external emojis permission or is administrator.
|
|
*/
|
|
bool has_use_external_emojis() const;
|
|
/**
|
|
* @brief True if has the view guild insights permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the view guild insights permission or is administrator.
|
|
*/
|
|
bool has_view_guild_insights() const;
|
|
/**
|
|
* @brief True if has the connect voice permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the connect voice permission or is administrator.
|
|
*/
|
|
bool has_connect() const;
|
|
/**
|
|
* @brief True if has the speak permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the speak permission or is administrator.
|
|
*/
|
|
bool has_speak() const;
|
|
/**
|
|
* @brief True if has the mute members permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the mute members permission or is administrator.
|
|
*/
|
|
bool has_mute_members() const;
|
|
/**
|
|
* @brief True if has the deafen members permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the deafen members permission or is administrator.
|
|
*/
|
|
bool has_deafen_members() const;
|
|
/**
|
|
* @brief True if has the move members permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the move members permission or is administrator.
|
|
*/
|
|
bool has_move_members() const;
|
|
/** True if has use voice activity detection permission */
|
|
bool has_use_vad() const;
|
|
/**
|
|
* @brief True if has the change nickname permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the change nickname permission or is administrator.
|
|
*/
|
|
bool has_change_nickname() const;
|
|
/**
|
|
* @brief True if has the manage nicknames permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the manage nicknames permission or is administrator.
|
|
*/
|
|
bool has_manage_nicknames() const;
|
|
/**
|
|
* @brief True if has the manage roles permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the manage roles permission or is administrator.
|
|
*/
|
|
bool has_manage_roles() const;
|
|
/**
|
|
* @brief True if has the manage webhooks permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the manage webhooks permission or is administrator.
|
|
*/
|
|
bool has_manage_webhooks() const;
|
|
/**
|
|
* @brief True if has the manage emojis and stickers permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the manage emojis and stickers permission or is administrator.
|
|
*/
|
|
bool has_manage_emojis_and_stickers() const;
|
|
/**
|
|
* @brief True if has the use application commands permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the use application commands permission or is administrator.
|
|
*/
|
|
bool has_use_application_commands() const;
|
|
/**
|
|
* @brief True if has the request to speak permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the request to speak permission or is administrator.
|
|
*/
|
|
bool has_request_to_speak() const;
|
|
/**
|
|
* @brief True if has the manage threads permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the manage threads permission or is administrator.
|
|
*/
|
|
bool has_manage_threads() const;
|
|
/**
|
|
* @brief True if has the create public threads permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the create public threads permission or is administrator.
|
|
*/
|
|
bool has_create_public_threads() const;
|
|
/**
|
|
* @brief True if has the create private threads permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the create private threads permission or is administrator.
|
|
*/
|
|
bool has_create_private_threads() const;
|
|
/**
|
|
* @brief True if has the use external stickers permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the use external stickers permission or is administrator.
|
|
*/
|
|
bool has_use_external_stickers() const;
|
|
/**
|
|
* @brief True if has the send messages in threads permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the send messages in threads permission or is administrator.
|
|
*/
|
|
bool has_send_messages_in_threads() const;
|
|
/**
|
|
* @brief True if has the start embedded activities permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the start embedded activities permission or is administrator.
|
|
*/
|
|
bool has_use_embedded_activities() const;
|
|
/**
|
|
* @brief True if has the manage events permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the manage events permission or is administrator.
|
|
*/
|
|
bool has_manage_events() const;
|
|
/**
|
|
* @brief True if has the moderate users permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the moderate users permission or is administrator.
|
|
*/
|
|
bool has_moderate_members() const;
|
|
/**
|
|
* @brief True if has the view creator monetization analytics permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the view creator monetization analytics permission or is administrator.
|
|
*/
|
|
bool has_view_creator_monetization_analytics() const;
|
|
/**
|
|
* @brief True if has the use soundboard permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the use soundboard permission or is administrator.
|
|
*/
|
|
bool has_use_soundboard() const;
|
|
/**
|
|
* @brief True if has the send voice messages permission.
|
|
* @note Having the administrator permission causes this method to always return true
|
|
* Channel specific overrides may apply to permissions.
|
|
* @return bool True if user has the send voice messages permission or is administrator.
|
|
*/
|
|
bool has_send_voice_messages() const;
|
|
|
|
/**
|
|
* @brief Get guild members who have this role
|
|
* @note This method requires user/members cache to be active
|
|
* @return members_container List of members who have this role
|
|
*/
|
|
members_container get_members() const;
|
|
};
|
|
|
|
/**
|
|
* @brief Application Role Connection Metadata Type
|
|
*
|
|
* @note Each metadata type offers a comparison operation that allows guilds to configure role requirements based on metadata values stored by the bot. Bots specify a `metadata value` for each user and guilds specify the required `guild's configured value` within the guild role settings.
|
|
*/
|
|
enum application_role_connection_metadata_type : uint8_t {
|
|
rc_integer_less_than_or_equal = 1, //!< The metadata value (integer) is less than or equal to the guild's configured value (integer)
|
|
rc_integer_greater_than_or_equal = 2, //!< The metadata value (integer) is greater than or equal to the guild's configured value (integer)
|
|
rc_integer_equal = 3, //!< The metadata value (integer) is equal to the guild's configured value (integer)
|
|
rc_integer_not_equal = 4, //!< The metadata value (integer) is not equal to the guild's configured value (integer)
|
|
rc_datetime_less_than_or_equal = 5, //!< The metadata value (ISO8601 string) is less than or equal to the guild's configured value (integer; days before current date)
|
|
rc_datetime_greater_than_or_equal = 6, //!< The metadata value (ISO8601 string) is greater than or equal to the guild's configured value (integer; days before current date)
|
|
rc_boolean_equal = 7, //!< The metadata value (integer) is equal to the guild's configured value (integer; 1)
|
|
rc_boolean_not_equal = 8, //!< The metadata value (integer) is not equal to the guild's configured value (integer; 1)
|
|
};
|
|
|
|
/**
|
|
* @brief Application Role Connection Metadata. Represents a role connection metadata for an dpp::application
|
|
*/
|
|
class DPP_EXPORT application_role_connection_metadata : public json_interface<application_role_connection_metadata> {
|
|
public:
|
|
application_role_connection_metadata_type type; //!< Type of metadata value
|
|
std::string key; //!< Dictionary key for the metadata field (must be `a-z`, `0-9`, or `_` characters; 1-50 characters)
|
|
std::string name; //!< Name of the metadata field (1-100 characters)
|
|
std::map<std::string, std::string> name_localizations; //!< Translations of the name
|
|
std::string description; //!< Description of the metadata field (1-200 characters)
|
|
std::map<std::string, std::string> description_localizations; //!< Translations of the description
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
application_role_connection_metadata();
|
|
|
|
virtual ~application_role_connection_metadata() = default;
|
|
|
|
/** Fill this record from json.
|
|
* @param j The json to fill this record from
|
|
* @return Reference to self
|
|
*/
|
|
application_role_connection_metadata& fill_from_json(nlohmann::json* j);
|
|
|
|
/**
|
|
* @brief Convert to JSON string
|
|
*
|
|
* @param with_id include ID in output
|
|
* @return std::string JSON output
|
|
*/
|
|
virtual std::string build_json(bool with_id = false) const;
|
|
};
|
|
|
|
/**
|
|
* @brief The application role connection that an application has attached to a user.
|
|
*/
|
|
class DPP_EXPORT application_role_connection : public json_interface<application_role_connection> {
|
|
public:
|
|
std::string platform_name; //!< Optional: The vanity name of the platform a bot has connected (max 50 characters)
|
|
std::string platform_username; //!< Optional: The username on the platform a bot has connected (max 100 characters)
|
|
std::variant<std::monostate, application_role_connection_metadata> metadata; //!< Optional: Object mapping application role connection metadata keys to their stringified value (max 100 characters) for the user on the platform a bot has connected
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
application_role_connection();
|
|
|
|
virtual ~application_role_connection() = default;
|
|
|
|
/** Fill this record from json.
|
|
* @param j The json to fill this record from
|
|
* @return Reference to self
|
|
*/
|
|
application_role_connection& fill_from_json(nlohmann::json* j);
|
|
|
|
/**
|
|
* @brief Convert to JSON string
|
|
*
|
|
* @param with_id include ID in output
|
|
* @return std::string JSON output
|
|
*/
|
|
virtual std::string build_json(bool with_id = false) const;
|
|
};
|
|
|
|
/** A group of roles */
|
|
typedef std::unordered_map<snowflake, role> role_map;
|
|
|
|
/** A group of application_role_connection_metadata objects */
|
|
typedef std::vector<application_role_connection_metadata> application_role_connection_metadata_list;
|
|
|
|
};
|
|
|