Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions crates/rustmail/src/db/operations/banned_users.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
13 changes: 13 additions & 0 deletions crates/rustmail/src/handlers/guild_ban_handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down