diff options
| author | Zeyla Hellyer <[email protected]> | 2018-01-27 18:53:48 -0800 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2018-01-27 18:53:48 -0800 |
| commit | 92c91b81490b621de4519e0d87830dbce53dd689 (patch) | |
| tree | d8d601c5d788ae01e6c34b000e32ce57e970f884 /src/model/channel/channel_id.rs | |
| parent | Add `Message::member` (diff) | |
| download | serenity-92c91b81490b621de4519e0d87830dbce53dd689.tar.xz serenity-92c91b81490b621de4519e0d87830dbce53dd689.zip | |
Check message ID count in `delete_messages`
In models' `delete_messages` methods, check the number of messages being
deleted. If 0 or more than 100, return a `ModelError::BulkDeleteAmount`,
as this amount would result in an invalid request.
Diffstat (limited to 'src/model/channel/channel_id.rs')
| -rw-r--r-- | src/model/channel/channel_id.rs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/model/channel/channel_id.rs b/src/model/channel/channel_id.rs index bd9cc84..00dc1f2 100644 --- a/src/model/channel/channel_id.rs +++ b/src/model/channel/channel_id.rs @@ -112,20 +112,27 @@ impl ChannelId { /// /// Requires the [Manage Messages] permission. /// - /// **Note**: This uses bulk delete endpoint which is not available - /// for user accounts. + /// **Note**: Messages that are older than 2 weeks can't be deleted using + /// this method. /// - /// **Note**: Messages that are older than 2 weeks can't be deleted using this method. + /// # Errors + /// + /// Returns [`ModelError::BulkDeleteAmount`] if an attempt was made to + /// delete either 0 or more than 100 messages. /// /// [`Channel::delete_messages`]: enum.Channel.html#method.delete_messages + /// [`ModelError::BulkDeleteAmount`]: ../enum.ModelError.html#variant.BulkDeleteAmount /// [Manage Messages]: permissions/constant.MANAGE_MESSAGES.html pub fn delete_messages<T: AsRef<MessageId>, It: IntoIterator<Item=T>>(&self, message_ids: It) -> Result<()> { let ids = message_ids .into_iter() .map(|message_id| message_id.as_ref().0) .collect::<Vec<u64>>(); + let len = ids.len(); - if ids.len() == 1 { + if len == 0 || len > 100 { + return Err(Error::Model(ModelError::BulkDeleteAmount)); + } else if ids.len() == 1 { self.delete_message(ids[0]) } else { let map = json!({ "messages": ids }); |