From 7e9be2665c56bb9e34c1ac7929d58eb1b50e4897 Mon Sep 17 00:00:00 2001 From: Akinator31 <99099121+Akinator31@users.noreply.github.com> Date: Wed, 14 Oct 2026 15:57:43 +0200 Subject: [PATCH 1/2] feat(db): add delete_banned_user --- .../rustmail/src/db/operations/banned_users.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/crates/rustmail/src/db/operations/banned_users.rs b/crates/rustmail/src/db/operations/banned_users.rs index 5c84a88..15e26ee 100644 --- a/crates/rustmail/src/db/operations/banned_users.rs +++ b/crates/rustmail/src/db/operations/banned_users.rs @@ -237,6 +237,23 @@ pub async fn save_banned_user(user: &BannedUser, pool: &SqlitePool) -> ModmailRe Ok(()) } +pub async fn delete_banned_user( + guild_id: &str, + user_id: &str, + pool: &SqlitePool, +) -> ModmailResult<()> { + sqlx::query("DELETE FROM banned_users WHERE guild_id = ? AND user_id = ?") + .bind(guild_id) + .bind(user_id) + .execute(pool) + .await + .map_err(|e| { + eprintln!("Failed to delete banned user: {e:?}"); + validation_failed("Failed to delete banned user") + })?; + Ok(()) +} + pub async fn get_banned_user_by_id( guild_id: &str, user_id: &str, From bf155db1e8870ce750a43ea20077fd659b170bc7 Mon Sep 17 00:00:00 2001 From: Akinator31 <99099121+Akinator31@users.noreply.github.com> Date: Wed, 14 Oct 2026 15:57:59 +0200 Subject: [PATCH 2/2] feat(bans): forget banned users when they rejoin the community guild --- crates/rustmail/src/handlers/guild_ban_handler.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/crates/rustmail/src/handlers/guild_ban_handler.rs b/crates/rustmail/src/handlers/guild_ban_handler.rs index 710b83c..2d78972 100644 --- a/crates/rustmail/src/handlers/guild_ban_handler.rs +++ b/crates/rustmail/src/handlers/guild_ban_handler.rs @@ -89,6 +89,19 @@ impl EventHandler for GuildBanHandler { return; }; record_member(pool, &new_member).await; + + if let Err(e) = delete_banned_user( + &new_member.guild_id.to_string(), + &new_member.user.id.to_string(), + pool, + ) + .await + { + eprintln!( + "Failed to forget banned user {} after rejoining guild {}: {:?}", + new_member.user.id, new_member.guild_id, e + ); + } } async fn guild_member_update(