summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAshelyn Rose <git@ashen.earth>2025-01-29 15:45:32 -0700
committerAshelyn Rose <git@ashen.earth>2025-01-29 15:45:32 -0700
commit5cb49a76c2cedb500b82f405af3cf1dcc0507f98 (patch)
treeefd21ffd35e1c246c03222f1106192f02c19984a /src
parent5e6a11a19d0fec86c9c08d5ce9c5fcc176efde4b (diff)
Add !part HEAD main
Diffstat (limited to 'src')
-rw-r--r--src/system/bot/client.rs8
-rw-r--r--src/system/bot/mod.rs4
-rw-r--r--src/system/message_parser.rs8
-rw-r--r--src/system/mod.rs6
4 files changed, 24 insertions, 2 deletions
diff --git a/src/system/bot/client.rs b/src/system/bot/client.rs
index c556207..ee01e6e 100644
--- a/src/system/bot/client.rs
+++ b/src/system/bot/client.rs
@@ -194,6 +194,14 @@ impl Client {
 
         Ok(new_message)
     }
+
+    pub async fn leave_server(&self, server_id: ServerId) -> Result<(), TwiError> {
+        self.client.lock().await.leave_guild(
+            server_id,
+        ).await?;
+
+        return Ok(())
+    }
 }
 
 #[derive(Debug)]
diff --git a/src/system/bot/mod.rs b/src/system/bot/mod.rs
index 0928a73..d55562d 100644
--- a/src/system/bot/mod.rs
+++ b/src/system/bot/mod.rs
@@ -97,5 +97,9 @@ impl Bot {
     pub async fn duplicate_message(&self, message_id: &TwiMessage, content: &str) ->  Result<TwiMessage, MessageDuplicateError> {
         self.client.duplicate_message(message_id, content).await
     }
+
+    pub async fn leave_server(&self, server_id: ServerId) -> Result<(), TwiError> {
+        self.client.leave_server(server_id).await
+    }
 }
 
diff --git a/src/system/message_parser.rs b/src/system/message_parser.rs
index 2c6d6d2..7845fbf 100644
--- a/src/system/message_parser.rs
+++ b/src/system/message_parser.rs
@@ -5,7 +5,7 @@ use crate::config::System;
 
 use twilight_mention::ParseMention;
 use twilight_model::id::{marker::UserMarker, Id};
-use super::{FullMessage, MemberId, MessageId, Timestamp, UserId};
+use super::{FullMessage, MemberId, MessageId, ServerId, Timestamp, UserId};
 
 pub enum ParsedMessage {
     Command(Command),
@@ -24,6 +24,7 @@ pub enum ParsedMessage {
 }
 
 pub enum Command {
+    Part(ServerId),
     Edit(MemberId, MessageId, String),
     Reproxy(MemberId, MessageId),
     Delete(MessageId),
@@ -108,7 +109,10 @@ impl MessageParser {
                 },
                 "delete" => {
                     return Some(Command::Delete(secondary_message.unwrap().id));
-                }
+                },
+                "part" => {
+                    return Some(Command::Part(message.guild_id.unwrap()));
+                },
                 _ => (),
             },
         }
diff --git a/src/system/mod.rs b/src/system/mod.rs
index 8864139..0cc6463 100644
--- a/src/system/mod.rs
+++ b/src/system/mod.rs
@@ -358,6 +358,12 @@ impl Manager {
 
                 let _ = self.bots.get(&member_id).unwrap().react_message(message.channel_id, message.id, &RequestReactionType::Unicode { name: "⁉️" }).await;
             },
+            message_parser::ParsedMessage::Command(Command::Part(server_id)) => {
+                for bot in self.bots.values() {
+                    let _ = bot.react_message(message.channel_id, message.id, &RequestReactionType::Unicode { name: "👋" }).await;
+                    let _ = bot.leave_server(server_id).await;
+                }
+            },
             message_parser::ParsedMessage::Command(_) => todo!(),
             message_parser::ParsedMessage::EmoteAdd(_, _, _) => todo!(),
             message_parser::ParsedMessage::EmoteRemove(_, _, _) => todo!(),