From 99e5a44e40e36a0b638ee03ed9ddfae86edb4f29 Mon Sep 17 00:00:00 2001 From: bluepython508 <16466646+bluepython508@users.noreply.github.com> Date: Sun, 28 Dec 2025 23:12:25 +0000 Subject: [PATCH] Add tool to remove embeds for clocktower.live links --- src/main.rs | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 5bc833f..9f4364d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,6 @@ use std::{io, path::Path}; -use ::serenity::all::{ChannelId, GuildId, Mentionable, UserId}; +use ::serenity::all::{ChannelId, EditMessage, GuildId, Mentionable, UserId}; use eyre::{Context as _, Error, OptionExt, Result}; use futures::{FutureExt, StreamExt, TryStreamExt}; use poise::serenity_prelude as serenity; @@ -391,15 +391,28 @@ async fn register_commands( Ok(()) } +#[tracing::instrument(skip(ctx))] +async fn handle_message(ctx: impl AsRef, message: &serenity::Message) -> Result<()> { + for embed in &message.embeds { + if embed.url.as_ref().is_some_and(|url| url.contains("https://clocktower.live")) { + let mut message = message.clone(); + message.edit(&ctx.as_ref(), EditMessage::new().suppress_embeds(true)).await?; + } + } + Ok(()) +} + async fn on_event( ctx: &serenity::Context, event: &serenity::FullEvent, framework: poise::FrameworkContext<'_, Data, Error>, _: &Data, ) -> Result<()> { - if let serenity::FullEvent::GuildCreate { guild, is_new: _ } = event { - register_commands(ctx, framework.options, guild.id).await?; - }; + match event { + serenity::FullEvent::GuildCreate { guild, is_new: _ } => register_commands(ctx, framework.options, guild.id).await?, + serenity::FullEvent::Message { new_message: msg } | serenity::FullEvent::MessageUpdate { new: Some(msg), .. } => handle_message(ctx, msg).await?, + _ => {} + } Ok(()) } @@ -424,7 +437,7 @@ async fn main() -> Result<()> { .wrap_err("A Discord token is required")?; let dbfile = std::env::var_os("DB_FILE").ok_or_eyre("A database file is required")?; let intents = - serenity::GatewayIntents::non_privileged() | serenity::GatewayIntents::GUILD_MEMBERS; + serenity::GatewayIntents::non_privileged() | serenity::GatewayIntents::GUILD_MEMBERS | serenity::GatewayIntents::GUILD_MESSAGES; let framework = poise::Framework::builder() .options(poise::FrameworkOptions {