summary refs log tree commit diff
path: root/src/system/mod.rs
diff options
context:
space:
mode:
authorAshelyn Rose <git@ashen.earth>2024-10-06 17:53:31 -0600
committerAshelyn Rose <git@ashen.earth>2024-10-06 17:53:31 -0600
commit27d7107a127f3ff513b6281d94e22ce6ff781115 (patch)
treeea9d489b66b81caf097f47d3e01b148e27647f1f /src/system/mod.rs
parent4d3f5abc20a44efc5c9b53efe3b21d34304dc46a (diff)
Reproxy
Diffstat (limited to 'src/system/mod.rs')
-rw-r--r--src/system/mod.rs26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/system/mod.rs b/src/system/mod.rs
index 8fea1fa..ad2031f 100644
--- a/src/system/mod.rs
+++ b/src/system/mod.rs
@@ -21,7 +21,7 @@ use aggregator::MessageAggregator;
 use bot::Bot;
 pub use types::*;
 
-use self::message_parser::Command;
+use self::message_parser::{Command, ParsedMessage};
 
 
 pub struct Manager {
@@ -207,6 +207,7 @@ impl Manager {
             message_parser::ParsedMessage::LatchClear(member_id) => {
                 let _ = self.bots.get(&member_id).unwrap().delete_message(message.channel_id, message.id).await;
                 self.latch_state = None;
+                self.update_status_of_system();
             },
 
             message_parser::ParsedMessage::SetProxyAndDelete(member_id) => {
@@ -240,6 +241,29 @@ impl Manager {
                 }
             }
 
+            message_parser::ParsedMessage::Command(Command::Reproxy(member_id, message_id)) => {
+                if !referenced_message.map(|message| message.id == message_id).unwrap_or(false) {
+                    println!("ERROR: Attempted reproxy on message other than referenced_message");
+                    let _ = self.bots.get(&member_id).unwrap().react_message(message.channel_id, message.id, &RequestReactionType::Unicode { name: "⁉️" }).await;
+                    return
+                }
+
+                let message_author = MessageParser::get_member_id_from_user_id(referenced_message.unwrap().author.id, &self.config).unwrap();
+                if message_author != member_id {
+                    // TODO: Don't allow this if other messages have been sent maybe?
+                    let orig = referenced_message.unwrap().clone();
+                    if let Ok(_) = self.proxy_message(&orig, member_id, orig.content.as_str()).await {
+                        self.update_autoproxy_state_after_message(member_id, timestamp);
+                        self.update_status_of_system().await;
+                    }
+                } else {
+                    println!("Not reproxying under same user");
+                }
+
+                let bot = self.bots.get(&member_id).unwrap();
+                let _ = bot.delete_message(message.channel_id, message.id).await;
+            }
+
             message_parser::ParsedMessage::Command(Command::UnknownCommand) => {
                 let member_id = if let Some((member_id, _)) = self.latch_state {
                     member_id