use crate::types::*;
use crate::errors::*;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Chat {
#[doc(hidden)]
#[serde(rename(serialize = "@type", deserialize = "@type"))]
td_name: String,
id: i64,
#[serde(rename(serialize = "type", deserialize = "type"))] type_: ChatType,
chat_list: Option<ChatList>,
title: String,
photo: Option<ChatPhoto>,
permissions: ChatPermissions,
last_message: Option<Message>,
order: String,
is_pinned: bool,
is_marked_as_unread: bool,
is_sponsored: bool,
has_scheduled_messages: bool,
can_be_deleted_only_for_self: bool,
can_be_deleted_for_all_users: bool,
can_be_reported: bool,
default_disable_notification: bool,
unread_count: i64,
last_read_inbox_message_id: i64,
last_read_outbox_message_id: i64,
unread_mention_count: i64,
notification_settings: ChatNotificationSettings,
action_bar: Option<ChatActionBar>,
pinned_message_id: i64,
reply_markup_message_id: i64,
draft_message: Option<DraftMessage>,
client_data: String,
}
impl RObject for Chat {
#[doc(hidden)] fn td_name(&self) -> &'static str { "chat" }
fn to_json(&self) -> RTDResult<String> { Ok(serde_json::to_string(self)?) }
}
impl Chat {
pub fn from_json<S: AsRef<str>>(json: S) -> RTDResult<Self> { Ok(serde_json::from_str(json.as_ref())?) }
pub fn builder() -> RTDChatBuilder {
let mut inner = Chat::default();
inner.td_name = "chat".to_string();
RTDChatBuilder { inner }
}
pub fn id(&self) -> i64 { self.id }
pub fn type_(&self) -> &ChatType { &self.type_ }
pub fn chat_list(&self) -> &Option<ChatList> { &self.chat_list }
pub fn title(&self) -> &String { &self.title }
pub fn photo(&self) -> &Option<ChatPhoto> { &self.photo }
pub fn permissions(&self) -> &ChatPermissions { &self.permissions }
pub fn last_message(&self) -> &Option<Message> { &self.last_message }
pub fn order(&self) -> &String { &self.order }
pub fn is_pinned(&self) -> bool { self.is_pinned }
pub fn is_marked_as_unread(&self) -> bool { self.is_marked_as_unread }
pub fn is_sponsored(&self) -> bool { self.is_sponsored }
pub fn has_scheduled_messages(&self) -> bool { self.has_scheduled_messages }
pub fn can_be_deleted_only_for_self(&self) -> bool { self.can_be_deleted_only_for_self }
pub fn can_be_deleted_for_all_users(&self) -> bool { self.can_be_deleted_for_all_users }
pub fn can_be_reported(&self) -> bool { self.can_be_reported }
pub fn default_disable_notification(&self) -> bool { self.default_disable_notification }
pub fn unread_count(&self) -> i64 { self.unread_count }
pub fn last_read_inbox_message_id(&self) -> i64 { self.last_read_inbox_message_id }
pub fn last_read_outbox_message_id(&self) -> i64 { self.last_read_outbox_message_id }
pub fn unread_mention_count(&self) -> i64 { self.unread_mention_count }
pub fn notification_settings(&self) -> &ChatNotificationSettings { &self.notification_settings }
pub fn action_bar(&self) -> &Option<ChatActionBar> { &self.action_bar }
pub fn pinned_message_id(&self) -> i64 { self.pinned_message_id }
pub fn reply_markup_message_id(&self) -> i64 { self.reply_markup_message_id }
pub fn draft_message(&self) -> &Option<DraftMessage> { &self.draft_message }
pub fn client_data(&self) -> &String { &self.client_data }
}
#[doc(hidden)]
pub struct RTDChatBuilder {
inner: Chat
}
impl RTDChatBuilder {
pub fn build(&self) -> Chat { self.inner.clone() }
pub fn id(&mut self, id: i64) -> &mut Self {
self.inner.id = id;
self
}
pub fn type_<T: AsRef<ChatType>>(&mut self, type_: T) -> &mut Self {
self.inner.type_ = type_.as_ref().clone();
self
}
pub fn chat_list<T: AsRef<ChatList>>(&mut self, chat_list: T) -> &mut Self {
self.inner.chat_list = Some(chat_list.as_ref().clone());
self
}
pub fn title<T: AsRef<str>>(&mut self, title: T) -> &mut Self {
self.inner.title = title.as_ref().to_string();
self
}
pub fn photo<T: AsRef<ChatPhoto>>(&mut self, photo: T) -> &mut Self {
self.inner.photo = Some(photo.as_ref().clone());
self
}
pub fn permissions<T: AsRef<ChatPermissions>>(&mut self, permissions: T) -> &mut Self {
self.inner.permissions = permissions.as_ref().clone();
self
}
pub fn last_message<T: AsRef<Message>>(&mut self, last_message: T) -> &mut Self {
self.inner.last_message = Some(last_message.as_ref().clone());
self
}
pub fn order<T: AsRef<str>>(&mut self, order: T) -> &mut Self {
self.inner.order = order.as_ref().to_string();
self
}
pub fn is_pinned(&mut self, is_pinned: bool) -> &mut Self {
self.inner.is_pinned = is_pinned;
self
}
pub fn is_marked_as_unread(&mut self, is_marked_as_unread: bool) -> &mut Self {
self.inner.is_marked_as_unread = is_marked_as_unread;
self
}
pub fn is_sponsored(&mut self, is_sponsored: bool) -> &mut Self {
self.inner.is_sponsored = is_sponsored;
self
}
pub fn has_scheduled_messages(&mut self, has_scheduled_messages: bool) -> &mut Self {
self.inner.has_scheduled_messages = has_scheduled_messages;
self
}
pub fn can_be_deleted_only_for_self(&mut self, can_be_deleted_only_for_self: bool) -> &mut Self {
self.inner.can_be_deleted_only_for_self = can_be_deleted_only_for_self;
self
}
pub fn can_be_deleted_for_all_users(&mut self, can_be_deleted_for_all_users: bool) -> &mut Self {
self.inner.can_be_deleted_for_all_users = can_be_deleted_for_all_users;
self
}
pub fn can_be_reported(&mut self, can_be_reported: bool) -> &mut Self {
self.inner.can_be_reported = can_be_reported;
self
}
pub fn default_disable_notification(&mut self, default_disable_notification: bool) -> &mut Self {
self.inner.default_disable_notification = default_disable_notification;
self
}
pub fn unread_count(&mut self, unread_count: i64) -> &mut Self {
self.inner.unread_count = unread_count;
self
}
pub fn last_read_inbox_message_id(&mut self, last_read_inbox_message_id: i64) -> &mut Self {
self.inner.last_read_inbox_message_id = last_read_inbox_message_id;
self
}
pub fn last_read_outbox_message_id(&mut self, last_read_outbox_message_id: i64) -> &mut Self {
self.inner.last_read_outbox_message_id = last_read_outbox_message_id;
self
}
pub fn unread_mention_count(&mut self, unread_mention_count: i64) -> &mut Self {
self.inner.unread_mention_count = unread_mention_count;
self
}
pub fn notification_settings<T: AsRef<ChatNotificationSettings>>(&mut self, notification_settings: T) -> &mut Self {
self.inner.notification_settings = notification_settings.as_ref().clone();
self
}
pub fn action_bar<T: AsRef<ChatActionBar>>(&mut self, action_bar: T) -> &mut Self {
self.inner.action_bar = Some(action_bar.as_ref().clone());
self
}
pub fn pinned_message_id(&mut self, pinned_message_id: i64) -> &mut Self {
self.inner.pinned_message_id = pinned_message_id;
self
}
pub fn reply_markup_message_id(&mut self, reply_markup_message_id: i64) -> &mut Self {
self.inner.reply_markup_message_id = reply_markup_message_id;
self
}
pub fn draft_message<T: AsRef<DraftMessage>>(&mut self, draft_message: T) -> &mut Self {
self.inner.draft_message = Some(draft_message.as_ref().clone());
self
}
pub fn client_data<T: AsRef<str>>(&mut self, client_data: T) -> &mut Self {
self.inner.client_data = client_data.as_ref().to_string();
self
}
}
impl AsRef<Chat> for Chat {
fn as_ref(&self) -> &Chat { self }
}
impl AsRef<Chat> for RTDChatBuilder {
fn as_ref(&self) -> &Chat { &self.inner }
}