fix(moderation): save overwrites before modifying them

This commit is contained in:
oSumAtrIX 2022-10-07 13:01:30 +02:00
parent 6279a79132
commit 2f67c59bb3
No known key found for this signature in database
GPG Key ID: A9B3094ACDB604B4

View File

@ -9,6 +9,7 @@ use poise::serenity_prelude::{
RoleId, RoleId,
User, User,
}; };
use tracing::log::error;
use tracing::{debug, trace}; use tracing::{debug, trace};
use crate::db::model::{LockedChannel, Muted}; use crate::db::model::{LockedChannel, Muted};
@ -72,21 +73,9 @@ pub async fn lock(ctx: Context<'_>) -> Result<(), Error> {
}) })
.collect(); .collect();
// lock the channel by and creating the new permission overwrite
for permission_overwrite in &permission_overwrites {
let permission = Permissions::SEND_MESSAGES & Permissions::ADD_REACTIONS;
channel
.create_permission(http, &PermissionOverwrite {
allow: permission_overwrite.allow & !permission,
deny: permission_overwrite.deny | permission,
kind: permission_overwrite.kind,
})
.await?;
}
// save the original overwrites // save the original overwrites
let updated: Document = LockedChannel { let updated: Document = LockedChannel {
overwrites: Some(permission_overwrites), overwrites: Some(permission_overwrites.clone()),
..Default::default() ..Default::default()
} }
.into(); .into();
@ -100,6 +89,22 @@ pub async fn lock(ctx: Context<'_>) -> Result<(), Error> {
) )
.await?; .await?;
// lock the channel by and creating the new permission overwrite
for permission_overwrite in &permission_overwrites {
let permission = Permissions::SEND_MESSAGES & Permissions::ADD_REACTIONS;
if let Err(err) = channel
.create_permission(http, &PermissionOverwrite {
allow: permission_overwrite.allow & !permission,
deny: permission_overwrite.deny | permission,
kind: permission_overwrite.kind,
})
.await
{
error!("Failed to create the new permission: {:?}", err);
}
}
respond_moderation( respond_moderation(
&ctx, &ctx,
&ModerationKind::Lock(channel.name.clone(), None), &ModerationKind::Lock(channel.name.clone(), None),