rust_tdlib/types/
message_forward_info.rs

1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5/// Contains information about a forwarded message
6#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7pub struct MessageForwardInfo {
8    #[doc(hidden)]
9    #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
10    extra: Option<String>,
11    #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
12    client_id: Option<i32>,
13    /// Origin of a forwarded message
14
15    #[serde(skip_serializing_if = "MessageForwardOrigin::_is_default")]
16    origin: MessageForwardOrigin,
17    /// Point in time (Unix timestamp) when the message was originally sent
18
19    #[serde(default)]
20    date: i32,
21    /// The type of a public service announcement for the forwarded message
22
23    #[serde(default)]
24    public_service_announcement_type: String,
25    /// For messages forwarded to the chat with the current user (Saved Messages), to the Replies bot chat, or to the channel's discussion group, the identifier of the chat from which the message was forwarded last time; 0 if unknown
26
27    #[serde(default)]
28    from_chat_id: i64,
29    /// For messages forwarded to the chat with the current user (Saved Messages), to the Replies bot chat, or to the channel's discussion group, the identifier of the original message from which the new message was forwarded last time; 0 if unknown
30
31    #[serde(default)]
32    from_message_id: i64,
33}
34
35impl RObject for MessageForwardInfo {
36    #[doc(hidden)]
37    fn extra(&self) -> Option<&str> {
38        self.extra.as_deref()
39    }
40    #[doc(hidden)]
41    fn client_id(&self) -> Option<i32> {
42        self.client_id
43    }
44}
45
46impl MessageForwardInfo {
47    pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
48        Ok(serde_json::from_str(json.as_ref())?)
49    }
50    pub fn builder() -> MessageForwardInfoBuilder {
51        let mut inner = MessageForwardInfo::default();
52        inner.extra = Some(Uuid::new_v4().to_string());
53
54        MessageForwardInfoBuilder { inner }
55    }
56
57    pub fn origin(&self) -> &MessageForwardOrigin {
58        &self.origin
59    }
60
61    pub fn date(&self) -> i32 {
62        self.date
63    }
64
65    pub fn public_service_announcement_type(&self) -> &String {
66        &self.public_service_announcement_type
67    }
68
69    pub fn from_chat_id(&self) -> i64 {
70        self.from_chat_id
71    }
72
73    pub fn from_message_id(&self) -> i64 {
74        self.from_message_id
75    }
76}
77
78#[doc(hidden)]
79pub struct MessageForwardInfoBuilder {
80    inner: MessageForwardInfo,
81}
82
83#[deprecated]
84pub type RTDMessageForwardInfoBuilder = MessageForwardInfoBuilder;
85
86impl MessageForwardInfoBuilder {
87    pub fn build(&self) -> MessageForwardInfo {
88        self.inner.clone()
89    }
90
91    pub fn origin<T: AsRef<MessageForwardOrigin>>(&mut self, origin: T) -> &mut Self {
92        self.inner.origin = origin.as_ref().clone();
93        self
94    }
95
96    pub fn date(&mut self, date: i32) -> &mut Self {
97        self.inner.date = date;
98        self
99    }
100
101    pub fn public_service_announcement_type<T: AsRef<str>>(
102        &mut self,
103        public_service_announcement_type: T,
104    ) -> &mut Self {
105        self.inner.public_service_announcement_type =
106            public_service_announcement_type.as_ref().to_string();
107        self
108    }
109
110    pub fn from_chat_id(&mut self, from_chat_id: i64) -> &mut Self {
111        self.inner.from_chat_id = from_chat_id;
112        self
113    }
114
115    pub fn from_message_id(&mut self, from_message_id: i64) -> &mut Self {
116        self.inner.from_message_id = from_message_id;
117        self
118    }
119}
120
121impl AsRef<MessageForwardInfo> for MessageForwardInfo {
122    fn as_ref(&self) -> &MessageForwardInfo {
123        self
124    }
125}
126
127impl AsRef<MessageForwardInfo> for MessageForwardInfoBuilder {
128    fn as_ref(&self) -> &MessageForwardInfo {
129        &self.inner
130    }
131}