feat: cleaned up array that was used to count members/changes to a struct

This commit is contained in:
silver 2025-07-20 20:32:43 +01:00
parent e901f3ed74
commit 2b2dfc2531
Signed by: silver
GPG key ID: 36F93D61BAD3FD7D

View file

@ -5,6 +5,13 @@ pub mod normal {
use serenity::model::id::{GuildId, RoleId, UserId}; use serenity::model::id::{GuildId, RoleId, UserId};
use sqlx::{Pool, Sqlite}; use sqlx::{Pool, Sqlite};
struct RolesChange {
total: i32,
new: i32,
current_add: i32,
current_rem: i32,
}
pub async fn update_server(ctx: &Context, server: &Servers, remove_roles: &[Option<RoleId>], members_changed: &[UserId]) { pub async fn update_server(ctx: &Context, server: &Servers, remove_roles: &[Option<RoleId>], members_changed: &[UserId]) {
let db_lock = { let db_lock = {
let data_read = ctx.data.read().await; let data_read = ctx.data.read().await;
@ -20,7 +27,12 @@ pub mod normal {
.. ..
} = server; } = server;
let mut roles_set = [0, 0, 0]; let mut roles_set = RolesChange {
total: 0,
new: 0,
current_add: 0,
current_rem: 0,
};
let mut members = vec![]; let mut members = vec![];
for member in get_server_member_bulk(&db, server).await { for member in get_server_member_bulk(&db, server).await {
@ -38,17 +50,19 @@ pub mod normal {
} }
if members.contains(&member.user.id) { if members.contains(&member.user.id) {
roles_set.total += 1;
let mut roles = vec![]; let mut roles = vec![];
if let Some(role) = &role_past { if let Some(role) = &role_past {
if !member.roles.contains(role) { if !member.roles.contains(role) {
roles_set[0] += 1; roles_set.new += 1;
roles.push(role.to_owned()); roles.push(role.to_owned());
} }
} }
if !member.roles.contains(role_current) { if !member.roles.contains(role_current) {
roles_set[1] += 1; roles_set.current_add += 1;
roles.push(role_current.to_owned()); roles.push(role_current.to_owned());
} }
@ -65,7 +79,7 @@ pub mod normal {
} }
if member.roles.contains(role_current) { if member.roles.contains(role_current) {
roles_set[2] += 1; roles_set.current_rem += 1;
// if theya re not a current member and have the role then remove it // if theya re not a current member and have the role then remove it
if let Err(e) = member.remove_role(ctx, role_current).await { if let Err(e) = member.remove_role(ctx, role_current).await {
println!("{:?}", e); println!("{:?}", e);
@ -83,7 +97,14 @@ pub mod normal {
set_server_numbers(&db, server, members_all as i64, members.len() as i64).await; set_server_numbers(&db, server, members_all as i64, members.len() as i64).await;
// small bit of logging to note changes over time // small bit of logging to note changes over time
println!("{:?} Changes: New: +{}, Current: +{}/-{}", server.get(), roles_set[0], roles_set[1], roles_set[2]); println!(
"{:?} Total: {} Changes: New: +{}, Current: +{}/-{}",
server.get(),
roles_set.total,
roles_set.new,
roles_set.current_add,
roles_set.current_rem
);
} }
pub async fn get_server_member_bulk(db: &Pool<Sqlite>, server: &GuildId) -> Vec<ServerMembersWolves> { pub async fn get_server_member_bulk(db: &Pool<Sqlite>, server: &GuildId) -> Vec<ServerMembersWolves> {