chore: limit deletions to past week
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
use chrono::Utc;
|
||||||
use revolt_quark::{
|
use revolt_quark::{
|
||||||
models::{Message, User},
|
models::{Message, User},
|
||||||
perms, Db, EmptyResponse, Error, Permission, Ref, Result,
|
perms, Db, EmptyResponse, Error, Permission, Ref, Result,
|
||||||
@@ -19,6 +20,8 @@ pub struct OptionsBulkDelete {
|
|||||||
/// Delete multiple messages you've sent or one you have permission to delete.
|
/// Delete multiple messages you've sent or one you have permission to delete.
|
||||||
///
|
///
|
||||||
/// This will always require `ManageMessages` permission regardless of whether you own the message or not.
|
/// This will always require `ManageMessages` permission regardless of whether you own the message or not.
|
||||||
|
///
|
||||||
|
/// Messages must have been sent within the past 1 week.
|
||||||
#[openapi(tag = "Messaging")]
|
#[openapi(tag = "Messaging")]
|
||||||
#[delete("/<target>/messages/bulk", data = "<options>", rank = 1)]
|
#[delete("/<target>/messages/bulk", data = "<options>", rank = 1)]
|
||||||
pub async fn req(
|
pub async fn req(
|
||||||
@@ -32,6 +35,19 @@ pub async fn req(
|
|||||||
.validate()
|
.validate()
|
||||||
.map_err(|error| Error::FailedValidation { error })?;
|
.map_err(|error| Error::FailedValidation { error })?;
|
||||||
|
|
||||||
|
for id in &options.ids {
|
||||||
|
if ulid::Ulid::from_string(id)
|
||||||
|
.map_err(|_| Error::InvalidOperation)?
|
||||||
|
.datetime()
|
||||||
|
.signed_duration_since(Utc::now())
|
||||||
|
.num_days()
|
||||||
|
.abs()
|
||||||
|
> 7
|
||||||
|
{
|
||||||
|
return Err(Error::InvalidOperation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
perms(&user)
|
perms(&user)
|
||||||
.channel(&target.as_channel(db).await?)
|
.channel(&target.as_channel(db).await?)
|
||||||
.throw_permission(db, Permission::ManageMessages)
|
.throw_permission(db, Permission::ManageMessages)
|
||||||
|
|||||||
Reference in New Issue
Block a user