aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLake Lezz <[email protected]>2018-11-16 02:27:06 +0100
committeracdenisSK <[email protected]>2018-11-16 20:57:13 +0100
commit653e596527020954738104558a8596ae0c378279 (patch)
treedaedfe7ec9e41f98772b8ea5d8c9d5a4ae77c86a /src
parentMerge branch 'current' into v0.6.x (diff)
downloadserenity-653e596527020954738104558a8596ae0c378279.tar.xz
serenity-653e596527020954738104558a8596ae0c378279.zip
Add Slow Mode Rate (#439)
Fixes #402
Diffstat (limited to 'src')
-rw-r--r--src/builder/edit_channel.rs10
-rw-r--r--src/cache/mod.rs1
-rw-r--r--src/model/channel/guild_channel.rs3
-rw-r--r--src/model/channel/mod.rs1
-rw-r--r--src/model/misc.rs1
-rw-r--r--src/utils/mod.rs1
6 files changed, 17 insertions, 0 deletions
diff --git a/src/builder/edit_channel.rs b/src/builder/edit_channel.rs
index cd0b137..4728abb 100644
--- a/src/builder/edit_channel.rs
+++ b/src/builder/edit_channel.rs
@@ -81,4 +81,14 @@ impl EditChannel {
None => Value::Null
});
}
+
+ /// The seconds a user has to wait before sending another message.
+ ///
+ /// **Info**: Only values from 0 to 120 are valid.
+ #[inline]
+ pub fn slow_mode_rate(mut self, seconds: u64) -> Self {
+ self.0.insert("rate_limit_per_user", Value::Number(Number::from(seconds)));
+
+ self
+ }
}
diff --git a/src/cache/mod.rs b/src/cache/mod.rs
index f02d1c6..f3f9fe4 100644
--- a/src/cache/mod.rs
+++ b/src/cache/mod.rs
@@ -894,6 +894,7 @@ mod test {
topic: None,
user_limit: None,
nsfw: false,
+ slow_mode_rate: 0,
};
// Add a channel delete event to the cache, the cached messages for that
diff --git a/src/model/channel/guild_channel.rs b/src/model/channel/guild_channel.rs
index 02d1c1f..046ca7c 100644
--- a/src/model/channel/guild_channel.rs
+++ b/src/model/channel/guild_channel.rs
@@ -87,6 +87,9 @@ pub struct GuildChannel {
// default to `false`.
#[serde(default)]
pub nsfw: bool,
+ /// A rate limit that applies per user and excludes bots.
+ #[serde(default, rename = "rate_limit_per_user")]
+ pub slow_mode_rate: u64,
}
#[cfg(feature = "model")]
diff --git a/src/model/channel/mod.rs b/src/model/channel/mod.rs
index bc4ea75..5b2b16e 100644
--- a/src/model/channel/mod.rs
+++ b/src/model/channel/mod.rs
@@ -743,6 +743,7 @@ mod test {
topic: None,
user_limit: None,
nsfw: false,
+ slow_mode_rate: 0,
}
}
diff --git a/src/model/misc.rs b/src/model/misc.rs
index 9c09a9b..87c3c44 100644
--- a/src/model/misc.rs
+++ b/src/model/misc.rs
@@ -330,6 +330,7 @@ mod test {
topic: None,
user_limit: None,
nsfw: false,
+ slow_mode_rate: 0,
})));
let emoji = Emoji {
animated: false,
diff --git a/src/utils/mod.rs b/src/utils/mod.rs
index 0696aad..b2b4323 100644
--- a/src/utils/mod.rs
+++ b/src/utils/mod.rs
@@ -996,6 +996,7 @@ mod test {
topic: None,
user_limit: None,
nsfw: false,
+ slow_mode_rate: 0,
};
let cache = RwLock::new(Cache::default());