feat(core): permissions query, finish bots impl
This commit is contained in:
@@ -3,6 +3,7 @@ mod server;
|
||||
mod user;
|
||||
|
||||
pub use channel::*;
|
||||
use revolt_result::{create_error, Result};
|
||||
pub use server::*;
|
||||
pub use user::*;
|
||||
|
||||
@@ -31,6 +32,30 @@ impl PermissionValue {
|
||||
pub fn restrict(&mut self, v: u64) {
|
||||
self.0 &= v;
|
||||
}
|
||||
|
||||
/// Check whether certain a permission has been granted
|
||||
pub fn has(&mut self, v: u64) -> bool {
|
||||
(self.0 & v) == v
|
||||
}
|
||||
|
||||
/// Check whether certain a channel permission has been granted
|
||||
pub fn has_channel_permission(&mut self, permission: ChannelPermission) -> bool {
|
||||
self.has(permission as u64)
|
||||
}
|
||||
|
||||
/// Throw if missing channel permission
|
||||
pub fn throw_if_lacking_channel_permission(
|
||||
&mut self,
|
||||
permission: ChannelPermission,
|
||||
) -> Result<()> {
|
||||
if self.has_channel_permission(permission) {
|
||||
Ok(())
|
||||
} else {
|
||||
Err(create_error!(MissingPermission {
|
||||
permission: permission.to_string()
|
||||
}))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<i64> for PermissionValue {
|
||||
|
||||
Reference in New Issue
Block a user