From 66147232e6411fffe73f2c3b5c980403c23cc594 Mon Sep 17 00:00:00 2001 From: RustemB Date: Sun, 20 Oct 2019 12:30:07 +0500 Subject: [PATCH] levaeChat --- src/requests/leave_chat.rs | 50 ++++++++++++++++++++++++++++++++++++++ src/requests/mod.rs | 2 ++ 2 files changed, 52 insertions(+) create mode 100644 src/requests/leave_chat.rs diff --git a/src/requests/leave_chat.rs b/src/requests/leave_chat.rs new file mode 100644 index 00000000..2433dec2 --- /dev/null +++ b/src/requests/leave_chat.rs @@ -0,0 +1,50 @@ +use async_trait::async_trait; + +use crate::{ + bot::Bot, + network, + requests::{Request, ResponseResult}, + types::ChatId, +}; + +/// Use this method for your bot to leave a group, supergroup or channel. +/// Returns True on success. +#[derive(Debug, Clone, Serialize)] +pub struct LeaveChat<'a> { + #[serde(skip_serializing)] + bot: &'a Bot, + /// Unique identifier for the target chat or username + /// of the target supergroup or channel (in the format @channelusername) + chat_id: ChatId, +} + +#[async_trait] +impl Request for LeaveChat<'_> { + type Output = bool; + + async fn send_boxed(self) -> ResponseResult { + self.send().await + } +} + +impl LeaveChat<'_> { + pub async fn send(self) -> ResponseResult { + network::request_json( + self.bot.client(), + self.bot.token(), + "leaveChat", + &self, + ) + .await + } +} + +impl<'a> LeaveChat<'a> { + pub fn chat_id(mut self, value: C) -> Self + where + C: Into, + { + self.chat_id = value.into(); + self + } +} diff --git a/src/requests/mod.rs b/src/requests/mod.rs index 3ed8a93d..e356bb2f 100644 --- a/src/requests/mod.rs +++ b/src/requests/mod.rs @@ -19,6 +19,7 @@ pub use get_me::*; pub use get_updates::*; pub use get_user_profile_photos::*; pub use kick_chat_member::*; +pub use leave_chat::*; pub use pin_chat_message::*; pub use promote_chat_member::*; pub use restrict_chat_member::*; @@ -64,6 +65,7 @@ mod get_me; mod get_updates; mod get_user_profile_photos; mod kick_chat_member; +mod leave_chat; mod pin_chat_message; mod promote_chat_member; mod restrict_chat_member;