diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/system/bot/client.rs | 8 | ||||
-rw-r--r-- | src/system/bot/mod.rs | 4 | ||||
-rw-r--r-- | src/system/message_parser.rs | 8 | ||||
-rw-r--r-- | src/system/mod.rs | 6 |
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!(), |