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!(),
|