From 89bf5a8b4f85583795b9211eaca485d6fc633389 Mon Sep 17 00:00:00 2001 From: Ashelyn Rose Date: Sat, 1 Mar 2025 14:03:56 -0700 Subject: Refactor logging --- src/system/plugin/autoproxy.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/system/plugin/autoproxy.rs') diff --git a/src/system/plugin/autoproxy.rs b/src/system/plugin/autoproxy.rs index cd24e0b..bba25a5 100644 --- a/src/system/plugin/autoproxy.rs +++ b/src/system/plugin/autoproxy.rs @@ -6,6 +6,7 @@ use crate::system::types::{System, Member, Response}; use super::{CommandOutcome, SeancePlugin}; use tokio::time::sleep; use std::time::Duration; +use super::Logger; pub struct Autoproxy { current_state: Arc>, @@ -29,7 +30,7 @@ impl Autoproxy { #[async_trait] impl SeancePlugin for Autoproxy { - async fn handle_command(&self, system: &System, message: &Message) -> CommandOutcome { + async fn handle_command(&self, logger: &Logger, system: &System, message: &Message) -> CommandOutcome { if message.content.starts_with(format!("{}auto ", system.command_prefix).as_str()) { let args = message.content.replace(format!("{}auto ", system.command_prefix).as_str(), ""); let mut remainder = args.split_whitespace(); @@ -51,7 +52,7 @@ impl SeancePlugin for Autoproxy { } } - async fn handle_message(&self, system: &System, message: &Message, response: &mut Response) { + async fn handle_message(&self, logger: &Logger, system: &System, message: &Message, response: &mut Response) { if message.content.starts_with("\\") { if message.content.starts_with("\\\\") { if let InnerState::LatchActive {current_member: _, last_message: _} = {self.current_state.lock().await.clone()} { @@ -69,12 +70,14 @@ impl SeancePlugin for Autoproxy { InnerState::Off => return, InnerState::LatchInactive => return, InnerState::Member { current_member } => { + logger.log_line(Some(current_member.discord_token.clone()), "Proxying via member mode autoproxy".to_string()).await; *response = Response::Proxy { member: current_member.clone(), content: message.content.clone(), } }, InnerState::LatchActive { current_member, last_message: _ } => { + logger.log_line(Some(current_member.discord_token.clone()), "Proxying via autoproxy latch".to_string()).await; *response = Response::Proxy { member: current_member.clone(), content: message.content.clone(), @@ -85,7 +88,7 @@ impl SeancePlugin for Autoproxy { } } - async fn post_response(&self, system: &System, message: &Message, channel: Id, response: &Response) { + async fn post_response(&self, logger: &Logger, system: &System, message: &Message, channel: Id, response: &Response) { match response { Response::Noop { delete_source } => return, Response::Proxy { member, content } => { @@ -94,6 +97,7 @@ impl SeancePlugin for Autoproxy { InnerState::Off => return, InnerState::Member { current_member } => return, InnerState::LatchInactive => { + logger.log_line(Some(member.discord_token.clone()), "Setting autoproxy latch".to_string()).await; {*self.current_state.lock().await = InnerState::LatchActive { current_member: member.clone(), last_message: message.timestamp, @@ -115,6 +119,7 @@ impl SeancePlugin for Autoproxy { }); }, InnerState::LatchActive { current_member: _, last_message: _ } => { + logger.log_line(Some(member.discord_token.clone()), "Setting autoproxy latch".to_string()).await; {*self.current_state.lock().await = InnerState::LatchActive { current_member: member.clone(), last_message: message.timestamp, @@ -123,14 +128,19 @@ impl SeancePlugin for Autoproxy { let state_arc = self.current_state.clone(); let sent_member = member.clone(); let sent_timestamp = message.timestamp.clone(); + let logger = logger.clone(); tokio::spawn(async move { sleep(Duration::from_secs(15 * 60)).await; let current_state = {state_arc.lock().await.clone()}; + logger.log_line(Some(sent_member.discord_token.clone()), "Latch timeout".to_string()).await; if let InnerState::LatchActive { current_member, last_message } = current_state { if sent_member.discord_token == current_member.discord_token && sent_timestamp.as_micros() == last_message.as_micros() { + logger.log_line(Some(sent_member.discord_token.clone()), "Latch expired".to_string()).await; {*state_arc.lock().await = InnerState::LatchInactive}; + } else { + logger.log_line(Some(sent_member.discord_token.clone()), "Timeout no longer valid".to_string()).await; } } }); -- cgit 1.4.1