From 97ca0c17eb7db3754f9ce750147a0fe916b4bc3e Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Wed, 7 Jun 2023 22:44:16 +0200 Subject: [PATCH] Try making permissions to PermissionFlags --- src/types/entities/role.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/types/entities/role.rs b/src/types/entities/role.rs index d993a7e..d315511 100644 --- a/src/types/entities/role.rs +++ b/src/types/entities/role.rs @@ -16,8 +16,7 @@ pub struct RoleObject { pub unicode_emoji: Option, pub position: u16, #[serde(default)] - #[serde(deserialize_with = "deserialize_string_from_number")] - pub permissions: String, + pub permissions: PermissionFlags, pub managed: bool, pub mentionable: bool, #[cfg(feature = "sqlx")] @@ -53,6 +52,7 @@ pub struct RoleTags { } bitflags! { + #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] pub struct PermissionFlags: u64 { const CREATE_INSTANT_INVITE = 1 << 0; const KICK_MEMBERS = 1 << 1; @@ -101,3 +101,9 @@ bitflags! { const SEND_VOICE_MESSAGES = 1 << 46; } } + +impl PermissionFlags { + pub fn has_permission(&self, permission: PermissionFlags) -> bool { + self.contains(permission) || self.contains(PermissionFlags::ADMINISTRATOR) + } +}