From c5494aa1ca98fa4b60dd625f16ebf112981355fe Mon Sep 17 00:00:00 2001 From: arslee07 Date: Mon, 4 Sep 2023 16:56:40 +0900 Subject: [PATCH] fix: respect `Permission::SendEmbeds` when editing a message --- .../delta/src/routes/channels/message_edit.rs | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/crates/delta/src/routes/channels/message_edit.rs b/crates/delta/src/routes/channels/message_edit.rs index cd226917..c442bca7 100644 --- a/crates/delta/src/routes/channels/message_edit.rs +++ b/crates/delta/src/routes/channels/message_edit.rs @@ -78,6 +78,11 @@ pub async fn req( // 3. Replace if we are given new embeds if let Some(embeds) = edit.embeds { + // Ensure we have permissions to send embeds + permissions + .throw_permission_and_view_channel(db, Permission::SendEmbeds) + .await?; + new_embeds.clear(); for embed in embeds { @@ -89,14 +94,19 @@ pub async fn req( message.update(db, partial).await?; - // Queue up a task for processing embeds - if let Some(content) = edit.content { - revolt_quark::tasks::process_embeds::queue( - message.channel.to_string(), - message.id.to_string(), - content, - ) - .await; + // Queue up a task for processing embeds if the we have sufficient permissions + if permissions + .has_permission(&db, Permission::SendEmbeds) + .await? + { + if let Some(content) = edit.content { + revolt_quark::tasks::process_embeds::queue( + message.channel.to_string(), + message.id.to_string(), + content, + ) + .await; + } } Ok(Json(message))