diff options
author | Ashelyn Rose <git@ashen.earth> | 2025-03-01 14:03:56 -0700 |
---|---|---|
committer | Ashelyn Rose <git@ashen.earth> | 2025-03-01 14:03:56 -0700 |
commit | 89bf5a8b4f85583795b9211eaca485d6fc633389 (patch) | |
tree | 18375298e6906f0644b9ed5b4d9c974d8e609cfe /src/system/plugin | |
parent | 99e5f7e3ff51aebc6796d1b7cf852367eb35d8d5 (diff) |
Refactor logging
Diffstat (limited to 'src/system/plugin')
-rw-r--r-- | src/system/plugin/autoproxy.rs | 16 | ||||
-rw-r--r-- | src/system/plugin/prefixes.rs | 16 |
2 files changed, 19 insertions, 13 deletions
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<Mutex<InnerState>>, @@ -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<ChannelMarker>, response: &Response) { + async fn post_response(&self, logger: &Logger, system: &System, message: &Message, channel: Id<ChannelMarker>, 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; } } }); diff --git a/src/system/plugin/prefixes.rs b/src/system/plugin/prefixes.rs index a513573..609dafd 100644 --- a/src/system/plugin/prefixes.rs +++ b/src/system/plugin/prefixes.rs @@ -1,6 +1,6 @@ use async_trait::async_trait; use twilight_model::id::{marker::ChannelMarker, Id}; -use crate::system::types::Response; +use crate::system::{log::Logger, types::Response}; use super::{CommandOutcome, SeancePlugin}; @@ -8,23 +8,19 @@ pub struct ProxyPrefixes; #[async_trait] impl SeancePlugin for ProxyPrefixes { - async fn handle_command(&self, _system: &crate::system::types::System, _message: &twilight_model::channel::Message) -> CommandOutcome { + async fn handle_command(&self, _logger: &Logger, _system: &crate::system::types::System, _message: &twilight_model::channel::Message) -> CommandOutcome { CommandOutcome::Skipped } - async fn handle_message(&self, system: &crate::system::types::System, message: &twilight_model::channel::Message, response: &mut crate::system::types::Response) { + async fn handle_message(&self, logger: &Logger, system: &crate::system::types::System, message: &twilight_model::channel::Message, response: &mut crate::system::types::Response) { if let Response::Noop { delete_source: _ } = response { for member in &system.members { - println!("Checking member prefix: {:?}", member.message_pattern); match member.message_pattern.captures(message.content.as_str()) { - None => { - println!("Nope"); - continue; - }, + None => continue, Some(captures) => match captures.name("content") { None => continue, Some(matched_content) => { - println!("Matched member prefix: {:?}", member.message_pattern); + logger.log_line(Some(member.discord_token.clone()), "Matched prefix".to_string()).await; *response = Response::Proxy { member: member.clone(), content: matched_content.as_str().to_string() }; return }, @@ -34,7 +30,7 @@ impl SeancePlugin for ProxyPrefixes { } } - async fn post_response(&self, _system: &crate::system::types::System, _message: &twilight_model::channel::Message, _channel: Id<ChannelMarker>, _response: &crate::system::types::Response) { + async fn post_response(&self, _logger: &Logger, _system: &crate::system::types::System, _message: &twilight_model::channel::Message, _channel: Id<ChannelMarker>, _response: &crate::system::types::Response) { return } } |