#![allow(clippy::too_many_arguments)]
use serde::Serialize;
use crate::error::Result;
use crate::Bot;
impl Bot {
pub fn promote_chat_member(&self, chat_id: i64, user_id: i64) -> PromoteChatMemberBuilder {
PromoteChatMemberBuilder::new(self, chat_id, user_id)
}
}
#[derive(Serialize)]
pub struct PromoteChatMemberBuilder<'a> {
#[serde(skip)]
bot: &'a Bot,
pub chat_id: i64,
pub user_id: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_anonymous: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_manage_chat: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_delete_messages: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_manage_video_chats: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_restrict_members: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_promote_members: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_change_info: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_invite_users: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_post_stories: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_edit_stories: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_delete_stories: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_post_messages: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_edit_messages: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_pin_messages: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_manage_topics: Option<bool>,
}
impl<'a> PromoteChatMemberBuilder<'a> {
pub fn new(bot: &'a Bot, chat_id: i64, user_id: i64) -> Self {
Self {
bot,
chat_id,
user_id,
is_anonymous: None,
can_manage_chat: None,
can_delete_messages: None,
can_manage_video_chats: None,
can_restrict_members: None,
can_promote_members: None,
can_change_info: None,
can_invite_users: None,
can_post_stories: None,
can_edit_stories: None,
can_delete_stories: None,
can_post_messages: None,
can_edit_messages: None,
can_pin_messages: None,
can_manage_topics: None,
}
}
pub fn chat_id(mut self, chat_id: i64) -> Self {
self.chat_id = chat_id;
self
}
pub fn user_id(mut self, user_id: i64) -> Self {
self.user_id = user_id;
self
}
pub fn is_anonymous(mut self, is_anonymous: bool) -> Self {
self.is_anonymous = Some(is_anonymous);
self
}
pub fn can_manage_chat(mut self, can_manage_chat: bool) -> Self {
self.can_manage_chat = Some(can_manage_chat);
self
}
pub fn can_delete_messages(mut self, can_delete_messages: bool) -> Self {
self.can_delete_messages = Some(can_delete_messages);
self
}
pub fn can_manage_video_chats(mut self, can_manage_video_chats: bool) -> Self {
self.can_manage_video_chats = Some(can_manage_video_chats);
self
}
pub fn can_restrict_members(mut self, can_restrict_members: bool) -> Self {
self.can_restrict_members = Some(can_restrict_members);
self
}
pub fn can_promote_members(mut self, can_promote_members: bool) -> Self {
self.can_promote_members = Some(can_promote_members);
self
}
pub fn can_change_info(mut self, can_change_info: bool) -> Self {
self.can_change_info = Some(can_change_info);
self
}
pub fn can_invite_users(mut self, can_invite_users: bool) -> Self {
self.can_invite_users = Some(can_invite_users);
self
}
pub fn can_post_stories(mut self, can_post_stories: bool) -> Self {
self.can_post_stories = Some(can_post_stories);
self
}
pub fn can_edit_stories(mut self, can_edit_stories: bool) -> Self {
self.can_edit_stories = Some(can_edit_stories);
self
}
pub fn can_delete_stories(mut self, can_delete_stories: bool) -> Self {
self.can_delete_stories = Some(can_delete_stories);
self
}
pub fn can_post_messages(mut self, can_post_messages: bool) -> Self {
self.can_post_messages = Some(can_post_messages);
self
}
pub fn can_edit_messages(mut self, can_edit_messages: bool) -> Self {
self.can_edit_messages = Some(can_edit_messages);
self
}
pub fn can_pin_messages(mut self, can_pin_messages: bool) -> Self {
self.can_pin_messages = Some(can_pin_messages);
self
}
pub fn can_manage_topics(mut self, can_manage_topics: bool) -> Self {
self.can_manage_topics = Some(can_manage_topics);
self
}
pub async fn send(self) -> Result<bool> {
let form = serde_json::to_value(&self)?;
self.bot.get("promoteChatMember", Some(&form)).await
}
}