From 11507d00fb774e59afe2c304a6922f875865caee Mon Sep 17 00:00:00 2001 From: salmonik Date: Wed, 19 Aug 2026 19:28:39 +0200 Subject: feat: leaderboads --- src/events/mod.rs | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'src/events') diff --git a/src/events/mod.rs b/src/events/mod.rs index 22fe976..ae0e1e4 100644 --- a/src/events/mod.rs +++ b/src/events/mod.rs @@ -172,6 +172,22 @@ pub async fn handle_voice_state_update( let active_str = format_duration(va.total_active); let afk_str = format_duration(va.total_afk); + // Accumulate to user_stats if in tracked guild + if let Some(status_channel_id) = data.config.status_channel_id + && let Some(gid) = guild_id { + let is_tracked = ctx.cache.guild(gid) + .map(|g| g.channels.contains_key(&serenity::ChannelId::new(status_channel_id))) + .unwrap_or(false); + if is_tracked { + database::add_voice_time( + &data.db_pool, + &user_id_str, + va.total_active, + va.total_afk, + ).await?; + } + } + if let Some(lc) = log_channel { let msg = format!( "[{current_time}] {member_name} rozłączył się z {} \n\ @@ -324,10 +340,24 @@ pub async fn handle_message( data: &Data, new_message: &serenity::Message, ) -> Result<()> { - if new_message.author.id == ctx.cache.current_user().id { + // Ignore own messages and other bots + if new_message.author.id == ctx.cache.current_user().id || new_message.author.bot { return Ok(()); } + // Track message count in the tracked guild + if let Some(status_channel_id) = data.config.status_channel_id + && let Some(guild_id) = new_message.guild_id { + // Check if the status channel is in the same guild as the message + let is_tracked_guild = ctx.cache.guild(guild_id) + .map(|g| g.channels.contains_key(&serenity::ChannelId::new(status_channel_id))) + .unwrap_or(false); + if is_tracked_guild { + database::increment_message_count(&data.db_pool, &new_message.author.id.to_string()) + .await?; + } + } + let content_lower = new_message.content.to_lowercase(); let response_to_send = { let triggers = data.triggers.lock().await; -- cgit v1.2.3