diff --git a/src/auto_response/handler.rs b/src/auto_response/handler.rs index 2c15fe9..5d8bbc1 100644 --- a/src/auto_response/handler.rs +++ b/src/auto_response/handler.rs @@ -2,6 +2,7 @@ use log::{debug, info}; use poise::serenity_prelude::{Context, CreateMessage, Message as SerenityMessage}; +use rand::random; use crate::error::Result; @@ -10,6 +11,10 @@ use super::{ rules::{AutoResponsePayload, AutoResponseRule}, }; +fn should_send_auto_response() -> bool { + random::().is_multiple_of(6) +} + /// Handle auto-responses for pre-configured match rules. /// /// Returns `true` if an auto-response was sent, `false` otherwise. @@ -34,6 +39,16 @@ pub async fn handle_auto_response( return Ok(false); }; + if !should_send_auto_response() { + debug!( + "Auto response throttle: skipped rule '{}' for {} in channel {}", + action.rule_name, + new_message.author.tag(), + new_message.channel_id + ); + return Ok(false); + } + let AutoResponsePayload::ImageUrl(content) = action.payload; let message = CreateMessage::new()