From 2452c0abc1809b7a908b833a28627b58d9a1ba52 Mon Sep 17 00:00:00 2001 From: Ladislav Hano <524934@mail.muni.cz> Date: Sat, 15 Jul 2023 12:11:57 +0200 Subject: [PATCH] message deletion works --- src/commands/moove.rs | 33 ++++++++++++++++++++------------- src/main.rs | 1 - src/message_handler.rs | 1 - 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/commands/moove.rs b/src/commands/moove.rs index 7c10d38..8ffff87 100644 --- a/src/commands/moove.rs +++ b/src/commands/moove.rs @@ -1,10 +1,12 @@ use std::sync::Arc; +use std::time::Duration; use anyhow::{self, Context}; use poise::serenity_prelude::AttachmentType; use serenity::builder::CreateEmbed; use serenity::http::Http; use serenity::model::channel::Message; +use tokio::time::sleep; use url::Url; use regex::Regex; @@ -26,7 +28,7 @@ pub async fn moove(http: Arc, msg: Message) -> anyhow::Result return Ok(MooveResult::NotMooveRequest); } - let msg_to_moove = msg.referenced_message.context("no message present")?; + let msg_to_moove = msg.clone().referenced_message.context("no message present")?; let mentioned_channel = http.get_channel( msg.content[2..msg.content.len() - 1].parse::() @@ -34,34 +36,39 @@ pub async fn moove(http: Arc, msg: Message) -> anyhow::Result //steals all attachments, but sets all of them as Image urls, so rip actual docs etc let attachments = msg_to_moove - .attachments + .attachments.clone() .into_iter() .map(|att| AttachmentType::Image(Url::parse(att.url.as_str()).unwrap())); //steals all the embeds let embeds: Vec = msg_to_moove - .embeds + .embeds.clone() .into_iter() .map(|em| CreateEmbed::from(em)) .collect(); let mut new_content = format!("Sent by {}\n mooved {}\n", msg_to_moove.author, msg.author); - if !msg_to_moove.content.is_empty() { - mentioned_channel.send_message(http, |m| { + if attachments.len() > 0 || embeds.len() > 0 { + new_content += format!("Message:\n{}", msg_to_moove.content).as_str(); + mentioned_channel.send_message(http.clone(), |m| { + m.content(new_content) + .add_embeds(embeds) + .add_files(attachments) + }).await?; + } + else if !msg_to_moove.content.is_empty() { + mentioned_channel.send_message(http.clone(), |m| { m.add_embed(|e| { e.field("MOO", new_content, false) .field("Message:\n", msg_to_moove.content.clone(), false) }) }).await?; } - else if attachments.len() > 0 || embeds.len() > 0 { - new_content += format!("Message:\n{}", msg_to_moove.content).as_str(); - mentioned_channel.send_message(http, |m| { - m.content(new_content) - .add_embeds(embeds) - .add_files(attachments) - }).await?; - } + + sleep(Duration::from_secs(2)).await; + + msg_to_moove.delete(http.clone()).await?; + msg.delete(http).await?; Ok(MooveResult::Mooved) } diff --git a/src/main.rs b/src/main.rs index 724b8ff..71198aa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,7 +16,6 @@ struct Handler; #[async_trait] impl EventHandler for Handler { async fn message(&self, ctx: Context, msg: Message) { - println!("Got message"); handle(ctx, msg).await; } diff --git a/src/message_handler.rs b/src/message_handler.rs index b06f005..391dae9 100644 --- a/src/message_handler.rs +++ b/src/message_handler.rs @@ -4,7 +4,6 @@ use serenity::model::channel::Message; use crate::commands::moove::moove; pub async fn handle(ctx: Context, msg: Message) { - println!("In handler"); match moove(ctx.http, msg).await { Ok(_) => return, Err(e) => println!("ERROR: {e}")