summary refs log tree commit diff
path: root/src/system/plugin
diff options
context:
space:
mode:
authorAshelyn Rose <git@ashen.earth>2025-03-01 14:03:56 -0700
committerAshelyn Rose <git@ashen.earth>2025-03-01 14:03:56 -0700
commit89bf5a8b4f85583795b9211eaca485d6fc633389 (patch)
tree18375298e6906f0644b9ed5b4d9c974d8e609cfe /src/system/plugin
parent99e5f7e3ff51aebc6796d1b7cf852367eb35d8d5 (diff)
Refactor logging
Diffstat (limited to 'src/system/plugin')
-rw-r--r--src/system/plugin/autoproxy.rs16
-rw-r--r--src/system/plugin/prefixes.rs16
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
     }
 }