aboutsummaryrefslogtreecommitdiff
path: root/src/framework
diff options
context:
space:
mode:
authorLakelezz <[email protected]>2018-10-15 20:47:54 +0200
committerGitHub <[email protected]>2018-10-15 20:47:54 +0200
commitc5285ae1824dd26adbbd2f0b876eed607f64baa1 (patch)
treef8cda5d383274d5b238291eef2c8faea0854a2a9 /src/framework
parentAdd configuration for the write lock the cache is using to update (#415) (diff)
downloadserenity-c5285ae1824dd26adbbd2f0b876eed607f64baa1.tar.xz
serenity-c5285ae1824dd26adbbd2f0b876eed607f64baa1.zip
Add Option to disable bypassing Checks for Owners (#419)
Diffstat (limited to 'src/framework')
-rw-r--r--src/framework/standard/command.rs5
-rw-r--r--src/framework/standard/create_command.rs8
-rw-r--r--src/framework/standard/create_group.rs11
-rw-r--r--src/framework/standard/mod.rs2
4 files changed, 24 insertions, 2 deletions
diff --git a/src/framework/standard/command.rs b/src/framework/standard/command.rs
index 6f4440f..3a787ae 100644
--- a/src/framework/standard/command.rs
+++ b/src/framework/standard/command.rs
@@ -99,6 +99,7 @@ pub struct CommandGroup {
pub help_available: bool,
pub dm_only: bool,
pub guild_only: bool,
+ pub owner_privileges: bool,
pub owners_only: bool,
pub help: Option<Arc<Help>>,
/// A set of checks to be called prior to executing the command-group. The checks
@@ -117,6 +118,7 @@ impl Default for CommandGroup {
required_permissions: Permissions::empty(),
dm_only: false,
guild_only: false,
+ owner_privileges: true,
help_available: true,
owners_only: false,
allowed_roles: Vec::new(),
@@ -155,6 +157,8 @@ pub struct CommandOptions {
pub dm_only: bool,
/// Whether command can be used only in guilds or not.
pub guild_only: bool,
+ /// Whether the command treats owners as normal users.
+ pub owner_privileges: bool,
/// Whether command can only be used by owners or not.
pub owners_only: bool,
/// Other names that can be used to call this command instead.
@@ -335,6 +339,7 @@ impl Default for CommandOptions {
required_permissions: Permissions::empty(),
dm_only: false,
guild_only: false,
+ owner_privileges: true,
help_available: true,
owners_only: false,
allowed_roles: Vec::new(),
diff --git a/src/framework/standard/create_command.rs b/src/framework/standard/create_command.rs
index 200f9f7..3976f6d 100644
--- a/src/framework/standard/create_command.rs
+++ b/src/framework/standard/create_command.rs
@@ -168,6 +168,14 @@ impl CreateCommand {
self
}
+ /// Whether owners shall bypass buckets, missing permissions,
+ /// wrong channels, missing roles, and checks.
+ pub fn owner_privileges(mut self, owner_privileges: bool) -> Self {
+ self.0.owner_privileges = owner_privileges;
+
+ self
+ }
+
/// Whether command should be displayed in help list or not, used by other commands.
pub fn help_available(mut self, help_available: bool) -> Self {
self.0.help_available = help_available;
diff --git a/src/framework/standard/create_group.rs b/src/framework/standard/create_group.rs
index 037dc64..0049cf3 100644
--- a/src/framework/standard/create_group.rs
+++ b/src/framework/standard/create_group.rs
@@ -43,7 +43,8 @@ impl CreateGroup {
.dm_only(self.0.dm_only)
.guild_only(self.0.guild_only)
.help_available(self.0.help_available)
- .owners_only(self.0.owners_only);
+ .owners_only(self.0.owners_only)
+ .owner_privileges(self.0.owner_privileges);
if let Some(ref bucket) = self.0.bucket {
cmd = cmd.bucket(bucket);
@@ -151,6 +152,14 @@ impl CreateGroup {
self
}
+ /// Whether owners shall bypass buckets, missing permissions,
+ /// wrong channels, missing roles, and checks.
+ pub fn owner_privileges(mut self, owner_privileges: bool) -> Self {
+ self.0.owner_privileges = owner_privileges;
+
+ self
+ }
+
/// Whether command should be displayed in help list or not, used by other commands.
pub fn help_available(mut self, help_available: bool) -> Self {
self.0.help_available = help_available;
diff --git a/src/framework/standard/mod.rs b/src/framework/standard/mod.rs
index 099da4e..a32b3ca 100644
--- a/src/framework/standard/mod.rs
+++ b/src/framework/standard/mod.rs
@@ -532,7 +532,7 @@ impl StandardFramework {
}
}
- if self.configuration.owners.contains(&message.author.id) {
+ if command.owner_privileges && self.configuration.owners.contains(&message.author.id) {
return None;
}