use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[non_exhaustive]
pub struct ChatPermissions {
#[serde(skip_serializing_if = "Option::is_none")]
pub can_send_messages: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_send_polls: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_send_other_messages: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_add_web_page_previews: 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_pin_messages: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_manage_topics: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_send_audios: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_send_documents: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_send_photos: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_send_videos: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_send_video_notes: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_send_voice_notes: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_edit_tag: Option<bool>,
}
impl_new!(ChatPermissions {});
impl ChatPermissions {
pub fn all() -> Self {
Self {
can_send_messages: Some(true),
can_send_polls: Some(true),
can_send_other_messages: Some(true),
can_add_web_page_previews: Some(true),
can_change_info: Some(true),
can_invite_users: Some(true),
can_pin_messages: Some(true),
can_manage_topics: Some(true),
can_send_audios: Some(true),
can_send_documents: Some(true),
can_send_photos: Some(true),
can_send_videos: Some(true),
can_send_video_notes: Some(true),
can_send_voice_notes: Some(true),
can_edit_tag: Some(true),
}
}
pub fn none() -> Self {
Self {
can_send_messages: Some(false),
can_send_polls: Some(false),
can_send_other_messages: Some(false),
can_add_web_page_previews: Some(false),
can_change_info: Some(false),
can_invite_users: Some(false),
can_pin_messages: Some(false),
can_manage_topics: Some(false),
can_send_audios: Some(false),
can_send_documents: Some(false),
can_send_photos: Some(false),
can_send_videos: Some(false),
can_send_video_notes: Some(false),
can_send_voice_notes: Some(false),
can_edit_tag: Some(false),
}
}
}