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