[no description]
| -rw-r--r-- | src/main.rs | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/src/main.rs b/src/main.rs index 0c561c0..bcced29 100644 --- a/src/main.rs +++ b/src/main.rs @@ -129,9 +129,10 @@ pub async fn spawn() { static TENOR: LazyLock<Regex> = LazyLock::new(|| Regex::new("https?://tenor.com/view/.+-[0-9]+").unwrap()); + static DISCORD: LazyLock<Regex> = LazyLock::new(|| { Regex::new( - r"https:\/\/(?:cdn|media)\.discordapp\.(?:com|net)\/attachments\/\d+\/\d+\/(?<name>[\w-]+)\.(?<ext>\w+)(?<tracking>\?[a-z]+=[0-9a-f]+(?:&[a-z]+=[0-9a-f]+)*)?", + r"https:\/\/(?:cdn|media)\.discordapp\.(?:com|net)\/attachments\/\d+\/\d+\/(?<name>[.\w-]+)\.(?<ext>\w+)(?<tracking>\?[a-z]+=[0-9a-f]+(?:&[a-z]+=[0-9a-f]+)*)?", ) .unwrap() }); @@ -168,7 +169,8 @@ async fn handle_message( return Ok(None); } let mut new_message = Cow::Borrowed(new_message); - if let Some(x) = DISCORD.captures(&new_message.content) { + println!("hi"); + if let Some(x) = dbg!(DISCORD.captures(dbg!(&new_message.content))) { if x.name("tracking").is_none() { if new_message.embeds.is_empty() { new_message = Cow::Owned( @@ -186,19 +188,32 @@ async fn handle_message( ); } } - } else if let Some(url) = x.get(0) + } else if let Some(url) = dbg!(x.get(0)) && let Some(name) = x.name("name") && let Some(ext) = x.name("ext") { return rediscord(url.into(), ext.into(), name.into()).await; } } - if let Some(x) = retenor(&new_message.content).await? { + println!("hi"); + if let Some(x) = (retenor(&new_message.content).await?) { return Ok(Some(x)); } - - for embed in new_message.embeds.clone() { - let Some(u) = embed.url else { continue }; + if new_message.embeds.is_empty() { + new_message = Cow::Owned( + c.http.get_message(new_message.channel_id, new_message.id).await?, + ); + if new_message.embeds.is_empty() { + tokio::time::sleep(tokio::time::Duration::from_secs(10)).await; + new_message = Cow::Owned( + c.http + .get_message(new_message.channel_id, new_message.id) + .await?, + ); + } + } + for embed in dbg!(new_message.embeds.clone()) { + let Some(u) = dbg!(embed.url) else { continue }; if let Some(x) = embed.provider && let Some("Tenor") = x.name && let Some(x) = retenor(&u).await? |