Document some flags
This commit is contained in:
parent
ede965411e
commit
b632958b0f
|
@ -8,6 +8,8 @@ use crate::types::{Team, User};
|
|||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))]
|
||||
/// # Reference
|
||||
/// See <https://discord.com/developers/docs/resources/application#application-resource>
|
||||
pub struct Application {
|
||||
pub id: Snowflake,
|
||||
pub name: String,
|
||||
|
@ -93,6 +95,8 @@ impl Application {
|
|||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
/// # Reference
|
||||
/// See <https://discord.com/developers/docs/resources/application#install-params-object>
|
||||
pub struct InstallParams {
|
||||
pub scopes: Vec<String>,
|
||||
pub permissions: String,
|
||||
|
@ -100,21 +104,37 @@ pub struct InstallParams {
|
|||
|
||||
bitflags! {
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
|
||||
/// # Reference
|
||||
/// See <https://discord.com/developers/docs/resources/application#application-object-application-flags>
|
||||
pub struct ApplicationFlags: u64 {
|
||||
/// Indicates if an app uses the Auto Moderation API
|
||||
const APPLICATION_AUTO_MODERATION_RULE_CREATE_BADGE = 1 << 6;
|
||||
/// Intent required for bots in 100 or more servers to receive presence_update events
|
||||
const GATEWAY_PRESENCE = 1 << 12;
|
||||
/// Intent required for bots in under 100 servers to receive presence_update events, found on the Bot page in your app's settings on discord.com
|
||||
const GATEWAY_PRESENCE_LIMITED = 1 << 13;
|
||||
/// Intent required for bots in 100 or more servers to receive member-related events like guild_member_add.
|
||||
/// See the list of member-related events under GUILD_MEMBERS
|
||||
const GATEWAY_GUILD_MEMBERS = 1 << 14;
|
||||
/// Intent required for bots in under 100 servers to receive member-related events like guild_member_add, found on the Bot page in your app's settings on discord.com.
|
||||
/// See the list of member-related events under GUILD_MEMBERS
|
||||
const GATEWAY_GUILD_MEMBERS_LIMITED = 1 << 15;
|
||||
/// Indicates unusual growth of an app that prevents verification
|
||||
const VERIFICATION_PENDING_GUILD_LIMIT = 1 << 16;
|
||||
/// Indicates if an app is embedded within the Discord client (currently unavailable publicly)
|
||||
const EMBEDDED = 1 << 17;
|
||||
/// Intent required for bots in 100 or more servers to receive message content
|
||||
const GATEWAY_MESSAGE_CONTENT = 1 << 18;
|
||||
/// Intent required for bots in under 100 servers to receive message content, found on the Bot page in your app's settings on discord.com
|
||||
const GATEWAY_MESSAGE_CONTENT_LIMITED = 1 << 19;
|
||||
/// Indicates if an app has registered slash commands
|
||||
const APPLICATION_COMMAND_BADGE = 1 << 23;
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
/// # Reference
|
||||
/// See <https://discord.com/developers/docs/interactions/application-commands#application-command-object>
|
||||
pub struct ApplicationCommand {
|
||||
pub id: Snowflake,
|
||||
pub application_id: Snowflake,
|
||||
|
@ -124,6 +144,8 @@ pub struct ApplicationCommand {
|
|||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
/// Reference
|
||||
/// See <https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-structure>
|
||||
pub struct ApplicationCommandOption {
|
||||
pub r#type: ApplicationCommandOptionType,
|
||||
pub name: String,
|
||||
|
@ -142,15 +164,24 @@ pub struct ApplicationCommandOptionChoice {
|
|||
#[derive(Debug, Clone, Copy, PartialEq, Serialize_repr, Deserialize_repr)]
|
||||
#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
|
||||
#[repr(i32)]
|
||||
/// # Reference
|
||||
/// See <https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-types>
|
||||
pub enum ApplicationCommandOptionType {
|
||||
SubCommand = 1,
|
||||
SubCommandGroup = 2,
|
||||
String = 3,
|
||||
/// Any integer between -2^53 and 2^53
|
||||
Integer = 4,
|
||||
Boolean = 5,
|
||||
User = 6,
|
||||
/// Includes all channel types + categories
|
||||
Channel = 7,
|
||||
Role = 8,
|
||||
/// Includes users and roles
|
||||
Mentionable = 9,
|
||||
/// Any double between -2^53 and 2^53
|
||||
Number = 10,
|
||||
Attachment = 11,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
|
|
|
@ -54,56 +54,109 @@ pub struct RoleTags {
|
|||
|
||||
bitflags! {
|
||||
#[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
|
||||
/// Permissions limit what users of certain roles can do on a Guild to Guild basis.
|
||||
///
|
||||
/// # Reference:
|
||||
/// See <https://discord.com/developers/docs/topics/permissions#permissions>
|
||||
pub struct PermissionFlags: u64 {
|
||||
/// Allows creation of instant invites
|
||||
const CREATE_INSTANT_INVITE = 1 << 0;
|
||||
/// Allows kicking members
|
||||
const KICK_MEMBERS = 1 << 1;
|
||||
/// Allows banning members
|
||||
const BAN_MEMBERS = 1 << 2;
|
||||
/// Allows all permissions and bypasses channel permission overwrites
|
||||
const ADMINISTRATOR = 1 << 3;
|
||||
/// Allows management and editing of channels
|
||||
const MANAGE_CHANNELS = 1 << 4;
|
||||
/// Allows management and editing of the guild and guild settings
|
||||
const MANAGE_GUILD = 1 << 5;
|
||||
/// Allows for the addition of reactions to messages
|
||||
const ADD_REACTIONS = 1 << 6;
|
||||
/// Allows viewing of the audit log
|
||||
const VIEW_AUDIT_LOG = 1 << 7;
|
||||
/// Allows using priority speaker in a voice channel
|
||||
const PRIORITY_SPEAKER = 1 << 8;
|
||||
/// Allows the user to go live and share their screen
|
||||
const STREAM = 1 << 9;
|
||||
/// Allows guild members to view a channel, which includes reading messages in text channels and joining voice channels
|
||||
const VIEW_CHANNEL = 1 << 10;
|
||||
/// Allows sending messages in a channel and creating threads in a forum (does not allow sending messages in threads)
|
||||
const SEND_MESSAGES = 1 << 11;
|
||||
/// Allows sending /tts messages
|
||||
const SEND_TTS_MESSAGES = 1 << 12;
|
||||
/// Allows deletion of other users' messages
|
||||
const MANAGE_MESSAGES = 1 << 13;
|
||||
/// Links sent by users with this permission will be auto-embedded
|
||||
const EMBED_LINKS = 1 << 14;
|
||||
/// Allows uploading images and files
|
||||
const ATTACH_FILES = 1 << 15;
|
||||
/// Allows reading of message history
|
||||
const READ_MESSAGE_HISTORY = 1 << 16;
|
||||
/// Allows using the @everyone tag to notify all users in a channel, and the @here tag to notify all online users in a channel
|
||||
const MENTION_EVERYONE = 1 << 17;
|
||||
/// Allows the usage of custom emojis from other servers
|
||||
const USE_EXTERNAL_EMOJIS = 1 << 18;
|
||||
/// Allows viewing guild insights
|
||||
const VIEW_GUILD_INSIGHTS = 1 << 19;
|
||||
/// Allows joining of a voice channel
|
||||
const CONNECT = 1 << 20;
|
||||
/// Allows speaking in a voice channel
|
||||
const SPEAK = 1 << 21;
|
||||
/// Allows muting members in a voice channel
|
||||
const MUTE_MEMBERS = 1 << 22;
|
||||
/// Allows deafening of members in a voice channel
|
||||
const DEAFEN_MEMBERS = 1 << 23;
|
||||
/// Allows moving of members between voice channels
|
||||
const MOVE_MEMBERS = 1 << 24;
|
||||
/// Allows using voice activity (VAD = voice-activity-detection) in a voice channel
|
||||
const USE_VAD = 1 << 25;
|
||||
/// Allows modification of own nickname
|
||||
const CHANGE_NICKNAME = 1 << 26;
|
||||
/// Allows modification of other users' nicknames
|
||||
const MANAGE_NICKNAMES = 1 << 27;
|
||||
/// Allows management and editing of roles
|
||||
const MANAGE_ROLES = 1 << 28;
|
||||
/// Allows management and editing of webhooks
|
||||
const MANAGE_WEBHOOKS = 1 << 29;
|
||||
/// Allows management and editing of emojis, stickers, and soundboard sounds
|
||||
const MANAGE_GUILD_EXPRESSIONS = 1 << 30;
|
||||
/// Allows members to use application commands, including slash commands and context menu commands.
|
||||
const USE_APPLICATION_COMMANDS = 1 << 31;
|
||||
/// Allows requesting to speak in stage channels. (*This permission is under active development and may be changed or removed.*)
|
||||
const REQUEST_TO_SPEAK = 1 << 32;
|
||||
/// Allows creating, editing, and deleting scheduled events
|
||||
const MANAGE_EVENTS = 1 << 33;
|
||||
/// Allows deleting and archiving threads, and viewing all private threads
|
||||
const MANAGE_THREADS = 1 << 34;
|
||||
/// Allows creating public and announcement threads
|
||||
const CREATE_PUBLIC_THREADS = 1 << 35;
|
||||
/// Allows creating private threads
|
||||
const CREATE_PRIVATE_THREADS = 1 << 36;
|
||||
/// Allows the usage of custom stickers from other servers
|
||||
const USE_EXTERNAL_STICKERS = 1 << 37;
|
||||
/// Allows sending messages in threads
|
||||
const SEND_MESSAGES_IN_THREADS = 1 << 38;
|
||||
/// Allows using Activities in a voice channel
|
||||
const USE_EMBEDDED_ACTIVITIES = 1 << 39;
|
||||
/// Allows timing out users to prevent them from sending or reacting to messages in chat and threads, and from speaking in voice and stage channels
|
||||
const MODERATE_MEMBERS = 1 << 40;
|
||||
/// Allows viewing role subscription insights
|
||||
const VIEW_CREATOR_MONETIZATION_ANALYTICS = 1 << 41;
|
||||
/// Allows using the soundboard in a voice channel
|
||||
const USE_SOUNDBOARD = 1 << 42;
|
||||
/// Allows using custom soundboard sounds from other servers
|
||||
const USE_EXTERNAL_SOUNDS = 1 << 45;
|
||||
/// Allows sending voice messages
|
||||
const SEND_VOICE_MESSAGES = 1 << 46;
|
||||
}
|
||||
}
|
||||
|
||||
impl PermissionFlags {
|
||||
/// Returns if the PermissionFlags object has specific permissions
|
||||
///
|
||||
/// # Notes
|
||||
/// Note that if the object has the [PermissionFlags::ADMINISTRATOR] permission, this always returns true
|
||||
pub fn has_permission(&self, permission: PermissionFlags) -> bool {
|
||||
self.contains(permission) || self.contains(PermissionFlags::ADMINISTRATOR)
|
||||
}
|
||||
|
@ -114,6 +167,7 @@ impl PermissionFlags {
|
|||
}
|
||||
|
||||
/// Creates a String of Permissions from a given [`Vec`] of [`PermissionFlags`].
|
||||
///
|
||||
/// # Example:
|
||||
/// ```
|
||||
/// use chorus::types::{PermissionFlags};
|
||||
|
|
Loading…
Reference in New Issue