1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5use std::fmt::Debug;
6
7pub trait TDMessageContent: Debug + RObject {}
9
10#[derive(Debug, Clone, Deserialize, Serialize, Default)]
12#[serde(tag = "@type")]
13pub enum MessageContent {
14 #[doc(hidden)]
15 #[default]
16 _Default,
17 #[serde(rename = "messageAnimatedEmoji")]
19 MessageAnimatedEmoji(MessageAnimatedEmoji),
20 #[serde(rename = "messageAnimation")]
22 MessageAnimation(MessageAnimation),
23 #[serde(rename = "messageAudio")]
25 MessageAudio(MessageAudio),
26 #[serde(rename = "messageBasicGroupChatCreate")]
28 MessageBasicGroupChatCreate(MessageBasicGroupChatCreate),
29 #[serde(rename = "messageCall")]
31 MessageCall(MessageCall),
32 #[serde(rename = "messageChatAddMembers")]
34 MessageChatAddMembers(MessageChatAddMembers),
35 #[serde(rename = "messageChatChangePhoto")]
37 MessageChatChangePhoto(MessageChatChangePhoto),
38 #[serde(rename = "messageChatChangeTitle")]
40 MessageChatChangeTitle(MessageChatChangeTitle),
41 #[serde(rename = "messageChatDeleteMember")]
43 MessageChatDeleteMember(MessageChatDeleteMember),
44 #[serde(rename = "messageChatDeletePhoto")]
46 MessageChatDeletePhoto(MessageChatDeletePhoto),
47 #[serde(rename = "messageChatJoinByLink")]
49 MessageChatJoinByLink(MessageChatJoinByLink),
50 #[serde(rename = "messageChatJoinByRequest")]
52 MessageChatJoinByRequest(MessageChatJoinByRequest),
53 #[serde(rename = "messageChatSetTheme")]
55 MessageChatSetTheme(MessageChatSetTheme),
56 #[serde(rename = "messageChatSetTtl")]
58 MessageChatSetTtl(MessageChatSetTtl),
59 #[serde(rename = "messageChatUpgradeFrom")]
61 MessageChatUpgradeFrom(MessageChatUpgradeFrom),
62 #[serde(rename = "messageChatUpgradeTo")]
64 MessageChatUpgradeTo(MessageChatUpgradeTo),
65 #[serde(rename = "messageContact")]
67 MessageContact(MessageContact),
68 #[serde(rename = "messageContactRegistered")]
70 MessageContactRegistered(MessageContactRegistered),
71 #[serde(rename = "messageCustomServiceAction")]
73 MessageCustomServiceAction(MessageCustomServiceAction),
74 #[serde(rename = "messageDice")]
76 MessageDice(Box<MessageDice>),
77 #[serde(rename = "messageDocument")]
79 MessageDocument(MessageDocument),
80 #[serde(rename = "messageExpiredPhoto")]
82 MessageExpiredPhoto(MessageExpiredPhoto),
83 #[serde(rename = "messageExpiredVideo")]
85 MessageExpiredVideo(MessageExpiredVideo),
86 #[serde(rename = "messageGame")]
88 MessageGame(MessageGame),
89 #[serde(rename = "messageGameScore")]
91 MessageGameScore(MessageGameScore),
92 #[serde(rename = "messageInviteVideoChatParticipants")]
94 MessageInviteVideoChatParticipants(MessageInviteVideoChatParticipants),
95 #[serde(rename = "messageInvoice")]
97 MessageInvoice(MessageInvoice),
98 #[serde(rename = "messageLocation")]
100 MessageLocation(MessageLocation),
101 #[serde(rename = "messagePassportDataReceived")]
103 MessagePassportDataReceived(MessagePassportDataReceived),
104 #[serde(rename = "messagePassportDataSent")]
106 MessagePassportDataSent(MessagePassportDataSent),
107 #[serde(rename = "messagePaymentSuccessful")]
109 MessagePaymentSuccessful(MessagePaymentSuccessful),
110 #[serde(rename = "messagePaymentSuccessfulBot")]
112 MessagePaymentSuccessfulBot(MessagePaymentSuccessfulBot),
113 #[serde(rename = "messagePhoto")]
115 MessagePhoto(MessagePhoto),
116 #[serde(rename = "messagePinMessage")]
118 MessagePinMessage(MessagePinMessage),
119 #[serde(rename = "messagePoll")]
121 MessagePoll(MessagePoll),
122 #[serde(rename = "messageProximityAlertTriggered")]
124 MessageProximityAlertTriggered(MessageProximityAlertTriggered),
125 #[serde(rename = "messageScreenshotTaken")]
127 MessageScreenshotTaken(MessageScreenshotTaken),
128 #[serde(rename = "messageSticker")]
130 MessageSticker(MessageSticker),
131 #[serde(rename = "messageSupergroupChatCreate")]
133 MessageSupergroupChatCreate(MessageSupergroupChatCreate),
134 #[serde(rename = "messageText")]
136 MessageText(Box<MessageText>),
137 #[serde(rename = "messageUnsupported")]
139 MessageUnsupported(MessageUnsupported),
140 #[serde(rename = "messageVenue")]
142 MessageVenue(MessageVenue),
143 #[serde(rename = "messageVideo")]
145 MessageVideo(MessageVideo),
146 #[serde(rename = "messageVideoChatEnded")]
148 MessageVideoChatEnded(MessageVideoChatEnded),
149 #[serde(rename = "messageVideoChatScheduled")]
151 MessageVideoChatScheduled(MessageVideoChatScheduled),
152 #[serde(rename = "messageVideoChatStarted")]
154 MessageVideoChatStarted(MessageVideoChatStarted),
155 #[serde(rename = "messageVideoNote")]
157 MessageVideoNote(MessageVideoNote),
158 #[serde(rename = "messageVoiceNote")]
160 MessageVoiceNote(MessageVoiceNote),
161 #[serde(rename = "messageWebsiteConnected")]
163 MessageWebsiteConnected(MessageWebsiteConnected),
164}
165
166impl RObject for MessageContent {
167 #[doc(hidden)]
168 fn extra(&self) -> Option<&str> {
169 match self {
170 MessageContent::MessageAnimatedEmoji(t) => t.extra(),
171 MessageContent::MessageAnimation(t) => t.extra(),
172 MessageContent::MessageAudio(t) => t.extra(),
173 MessageContent::MessageBasicGroupChatCreate(t) => t.extra(),
174 MessageContent::MessageCall(t) => t.extra(),
175 MessageContent::MessageChatAddMembers(t) => t.extra(),
176 MessageContent::MessageChatChangePhoto(t) => t.extra(),
177 MessageContent::MessageChatChangeTitle(t) => t.extra(),
178 MessageContent::MessageChatDeleteMember(t) => t.extra(),
179 MessageContent::MessageChatDeletePhoto(t) => t.extra(),
180 MessageContent::MessageChatJoinByLink(t) => t.extra(),
181 MessageContent::MessageChatJoinByRequest(t) => t.extra(),
182 MessageContent::MessageChatSetTheme(t) => t.extra(),
183 MessageContent::MessageChatSetTtl(t) => t.extra(),
184 MessageContent::MessageChatUpgradeFrom(t) => t.extra(),
185 MessageContent::MessageChatUpgradeTo(t) => t.extra(),
186 MessageContent::MessageContact(t) => t.extra(),
187 MessageContent::MessageContactRegistered(t) => t.extra(),
188 MessageContent::MessageCustomServiceAction(t) => t.extra(),
189 MessageContent::MessageDice(t) => t.extra(),
190 MessageContent::MessageDocument(t) => t.extra(),
191 MessageContent::MessageExpiredPhoto(t) => t.extra(),
192 MessageContent::MessageExpiredVideo(t) => t.extra(),
193 MessageContent::MessageGame(t) => t.extra(),
194 MessageContent::MessageGameScore(t) => t.extra(),
195 MessageContent::MessageInviteVideoChatParticipants(t) => t.extra(),
196 MessageContent::MessageInvoice(t) => t.extra(),
197 MessageContent::MessageLocation(t) => t.extra(),
198 MessageContent::MessagePassportDataReceived(t) => t.extra(),
199 MessageContent::MessagePassportDataSent(t) => t.extra(),
200 MessageContent::MessagePaymentSuccessful(t) => t.extra(),
201 MessageContent::MessagePaymentSuccessfulBot(t) => t.extra(),
202 MessageContent::MessagePhoto(t) => t.extra(),
203 MessageContent::MessagePinMessage(t) => t.extra(),
204 MessageContent::MessagePoll(t) => t.extra(),
205 MessageContent::MessageProximityAlertTriggered(t) => t.extra(),
206 MessageContent::MessageScreenshotTaken(t) => t.extra(),
207 MessageContent::MessageSticker(t) => t.extra(),
208 MessageContent::MessageSupergroupChatCreate(t) => t.extra(),
209 MessageContent::MessageText(t) => t.extra(),
210 MessageContent::MessageUnsupported(t) => t.extra(),
211 MessageContent::MessageVenue(t) => t.extra(),
212 MessageContent::MessageVideo(t) => t.extra(),
213 MessageContent::MessageVideoChatEnded(t) => t.extra(),
214 MessageContent::MessageVideoChatScheduled(t) => t.extra(),
215 MessageContent::MessageVideoChatStarted(t) => t.extra(),
216 MessageContent::MessageVideoNote(t) => t.extra(),
217 MessageContent::MessageVoiceNote(t) => t.extra(),
218 MessageContent::MessageWebsiteConnected(t) => t.extra(),
219
220 _ => None,
221 }
222 }
223 #[doc(hidden)]
224 fn client_id(&self) -> Option<i32> {
225 match self {
226 MessageContent::MessageAnimatedEmoji(t) => t.client_id(),
227 MessageContent::MessageAnimation(t) => t.client_id(),
228 MessageContent::MessageAudio(t) => t.client_id(),
229 MessageContent::MessageBasicGroupChatCreate(t) => t.client_id(),
230 MessageContent::MessageCall(t) => t.client_id(),
231 MessageContent::MessageChatAddMembers(t) => t.client_id(),
232 MessageContent::MessageChatChangePhoto(t) => t.client_id(),
233 MessageContent::MessageChatChangeTitle(t) => t.client_id(),
234 MessageContent::MessageChatDeleteMember(t) => t.client_id(),
235 MessageContent::MessageChatDeletePhoto(t) => t.client_id(),
236 MessageContent::MessageChatJoinByLink(t) => t.client_id(),
237 MessageContent::MessageChatJoinByRequest(t) => t.client_id(),
238 MessageContent::MessageChatSetTheme(t) => t.client_id(),
239 MessageContent::MessageChatSetTtl(t) => t.client_id(),
240 MessageContent::MessageChatUpgradeFrom(t) => t.client_id(),
241 MessageContent::MessageChatUpgradeTo(t) => t.client_id(),
242 MessageContent::MessageContact(t) => t.client_id(),
243 MessageContent::MessageContactRegistered(t) => t.client_id(),
244 MessageContent::MessageCustomServiceAction(t) => t.client_id(),
245 MessageContent::MessageDice(t) => t.client_id(),
246 MessageContent::MessageDocument(t) => t.client_id(),
247 MessageContent::MessageExpiredPhoto(t) => t.client_id(),
248 MessageContent::MessageExpiredVideo(t) => t.client_id(),
249 MessageContent::MessageGame(t) => t.client_id(),
250 MessageContent::MessageGameScore(t) => t.client_id(),
251 MessageContent::MessageInviteVideoChatParticipants(t) => t.client_id(),
252 MessageContent::MessageInvoice(t) => t.client_id(),
253 MessageContent::MessageLocation(t) => t.client_id(),
254 MessageContent::MessagePassportDataReceived(t) => t.client_id(),
255 MessageContent::MessagePassportDataSent(t) => t.client_id(),
256 MessageContent::MessagePaymentSuccessful(t) => t.client_id(),
257 MessageContent::MessagePaymentSuccessfulBot(t) => t.client_id(),
258 MessageContent::MessagePhoto(t) => t.client_id(),
259 MessageContent::MessagePinMessage(t) => t.client_id(),
260 MessageContent::MessagePoll(t) => t.client_id(),
261 MessageContent::MessageProximityAlertTriggered(t) => t.client_id(),
262 MessageContent::MessageScreenshotTaken(t) => t.client_id(),
263 MessageContent::MessageSticker(t) => t.client_id(),
264 MessageContent::MessageSupergroupChatCreate(t) => t.client_id(),
265 MessageContent::MessageText(t) => t.client_id(),
266 MessageContent::MessageUnsupported(t) => t.client_id(),
267 MessageContent::MessageVenue(t) => t.client_id(),
268 MessageContent::MessageVideo(t) => t.client_id(),
269 MessageContent::MessageVideoChatEnded(t) => t.client_id(),
270 MessageContent::MessageVideoChatScheduled(t) => t.client_id(),
271 MessageContent::MessageVideoChatStarted(t) => t.client_id(),
272 MessageContent::MessageVideoNote(t) => t.client_id(),
273 MessageContent::MessageVoiceNote(t) => t.client_id(),
274 MessageContent::MessageWebsiteConnected(t) => t.client_id(),
275
276 _ => None,
277 }
278 }
279}
280
281impl MessageContent {
282 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
283 Ok(serde_json::from_str(json.as_ref())?)
284 }
285 #[doc(hidden)]
286 pub fn _is_default(&self) -> bool {
287 matches!(self, MessageContent::_Default)
288 }
289}
290
291impl AsRef<MessageContent> for MessageContent {
292 fn as_ref(&self) -> &MessageContent {
293 self
294 }
295}
296
297#[derive(Debug, Clone, Default, Serialize, Deserialize)]
299pub struct MessageAnimatedEmoji {
300 #[doc(hidden)]
301 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
302 extra: Option<String>,
303 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
304 client_id: Option<i32>,
305 animated_emoji: AnimatedEmoji,
307 #[serde(default)]
310 emoji: String,
311}
312
313impl RObject for MessageAnimatedEmoji {
314 #[doc(hidden)]
315 fn extra(&self) -> Option<&str> {
316 self.extra.as_deref()
317 }
318 #[doc(hidden)]
319 fn client_id(&self) -> Option<i32> {
320 self.client_id
321 }
322}
323
324impl TDMessageContent for MessageAnimatedEmoji {}
325
326impl MessageAnimatedEmoji {
327 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
328 Ok(serde_json::from_str(json.as_ref())?)
329 }
330 pub fn builder() -> MessageAnimatedEmojiBuilder {
331 let mut inner = MessageAnimatedEmoji::default();
332 inner.extra = Some(Uuid::new_v4().to_string());
333
334 MessageAnimatedEmojiBuilder { inner }
335 }
336
337 pub fn animated_emoji(&self) -> &AnimatedEmoji {
338 &self.animated_emoji
339 }
340
341 pub fn emoji(&self) -> &String {
342 &self.emoji
343 }
344}
345
346#[doc(hidden)]
347pub struct MessageAnimatedEmojiBuilder {
348 inner: MessageAnimatedEmoji,
349}
350
351#[deprecated]
352pub type RTDMessageAnimatedEmojiBuilder = MessageAnimatedEmojiBuilder;
353
354impl MessageAnimatedEmojiBuilder {
355 pub fn build(&self) -> MessageAnimatedEmoji {
356 self.inner.clone()
357 }
358
359 pub fn animated_emoji<T: AsRef<AnimatedEmoji>>(&mut self, animated_emoji: T) -> &mut Self {
360 self.inner.animated_emoji = animated_emoji.as_ref().clone();
361 self
362 }
363
364 pub fn emoji<T: AsRef<str>>(&mut self, emoji: T) -> &mut Self {
365 self.inner.emoji = emoji.as_ref().to_string();
366 self
367 }
368}
369
370impl AsRef<MessageAnimatedEmoji> for MessageAnimatedEmoji {
371 fn as_ref(&self) -> &MessageAnimatedEmoji {
372 self
373 }
374}
375
376impl AsRef<MessageAnimatedEmoji> for MessageAnimatedEmojiBuilder {
377 fn as_ref(&self) -> &MessageAnimatedEmoji {
378 &self.inner
379 }
380}
381
382#[derive(Debug, Clone, Default, Serialize, Deserialize)]
384pub struct MessageAnimation {
385 #[doc(hidden)]
386 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
387 extra: Option<String>,
388 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
389 client_id: Option<i32>,
390 animation: Animation,
392 caption: FormattedText,
394 #[serde(default)]
397 is_secret: bool,
398}
399
400impl RObject for MessageAnimation {
401 #[doc(hidden)]
402 fn extra(&self) -> Option<&str> {
403 self.extra.as_deref()
404 }
405 #[doc(hidden)]
406 fn client_id(&self) -> Option<i32> {
407 self.client_id
408 }
409}
410
411impl TDMessageContent for MessageAnimation {}
412
413impl MessageAnimation {
414 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
415 Ok(serde_json::from_str(json.as_ref())?)
416 }
417 pub fn builder() -> MessageAnimationBuilder {
418 let mut inner = MessageAnimation::default();
419 inner.extra = Some(Uuid::new_v4().to_string());
420
421 MessageAnimationBuilder { inner }
422 }
423
424 pub fn animation(&self) -> &Animation {
425 &self.animation
426 }
427
428 pub fn caption(&self) -> &FormattedText {
429 &self.caption
430 }
431
432 pub fn is_secret(&self) -> bool {
433 self.is_secret
434 }
435}
436
437#[doc(hidden)]
438pub struct MessageAnimationBuilder {
439 inner: MessageAnimation,
440}
441
442#[deprecated]
443pub type RTDMessageAnimationBuilder = MessageAnimationBuilder;
444
445impl MessageAnimationBuilder {
446 pub fn build(&self) -> MessageAnimation {
447 self.inner.clone()
448 }
449
450 pub fn animation<T: AsRef<Animation>>(&mut self, animation: T) -> &mut Self {
451 self.inner.animation = animation.as_ref().clone();
452 self
453 }
454
455 pub fn caption<T: AsRef<FormattedText>>(&mut self, caption: T) -> &mut Self {
456 self.inner.caption = caption.as_ref().clone();
457 self
458 }
459
460 pub fn is_secret(&mut self, is_secret: bool) -> &mut Self {
461 self.inner.is_secret = is_secret;
462 self
463 }
464}
465
466impl AsRef<MessageAnimation> for MessageAnimation {
467 fn as_ref(&self) -> &MessageAnimation {
468 self
469 }
470}
471
472impl AsRef<MessageAnimation> for MessageAnimationBuilder {
473 fn as_ref(&self) -> &MessageAnimation {
474 &self.inner
475 }
476}
477
478#[derive(Debug, Clone, Default, Serialize, Deserialize)]
480pub struct MessageAudio {
481 #[doc(hidden)]
482 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
483 extra: Option<String>,
484 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
485 client_id: Option<i32>,
486 audio: Audio,
488 caption: FormattedText,
490}
491
492impl RObject for MessageAudio {
493 #[doc(hidden)]
494 fn extra(&self) -> Option<&str> {
495 self.extra.as_deref()
496 }
497 #[doc(hidden)]
498 fn client_id(&self) -> Option<i32> {
499 self.client_id
500 }
501}
502
503impl TDMessageContent for MessageAudio {}
504
505impl MessageAudio {
506 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
507 Ok(serde_json::from_str(json.as_ref())?)
508 }
509 pub fn builder() -> MessageAudioBuilder {
510 let mut inner = MessageAudio::default();
511 inner.extra = Some(Uuid::new_v4().to_string());
512
513 MessageAudioBuilder { inner }
514 }
515
516 pub fn audio(&self) -> &Audio {
517 &self.audio
518 }
519
520 pub fn caption(&self) -> &FormattedText {
521 &self.caption
522 }
523}
524
525#[doc(hidden)]
526pub struct MessageAudioBuilder {
527 inner: MessageAudio,
528}
529
530#[deprecated]
531pub type RTDMessageAudioBuilder = MessageAudioBuilder;
532
533impl MessageAudioBuilder {
534 pub fn build(&self) -> MessageAudio {
535 self.inner.clone()
536 }
537
538 pub fn audio<T: AsRef<Audio>>(&mut self, audio: T) -> &mut Self {
539 self.inner.audio = audio.as_ref().clone();
540 self
541 }
542
543 pub fn caption<T: AsRef<FormattedText>>(&mut self, caption: T) -> &mut Self {
544 self.inner.caption = caption.as_ref().clone();
545 self
546 }
547}
548
549impl AsRef<MessageAudio> for MessageAudio {
550 fn as_ref(&self) -> &MessageAudio {
551 self
552 }
553}
554
555impl AsRef<MessageAudio> for MessageAudioBuilder {
556 fn as_ref(&self) -> &MessageAudio {
557 &self.inner
558 }
559}
560
561#[derive(Debug, Clone, Default, Serialize, Deserialize)]
563pub struct MessageBasicGroupChatCreate {
564 #[doc(hidden)]
565 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
566 extra: Option<String>,
567 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
568 client_id: Option<i32>,
569 #[serde(default)]
572 title: String,
573 #[serde(default)]
576 member_user_ids: Vec<i64>,
577}
578
579impl RObject for MessageBasicGroupChatCreate {
580 #[doc(hidden)]
581 fn extra(&self) -> Option<&str> {
582 self.extra.as_deref()
583 }
584 #[doc(hidden)]
585 fn client_id(&self) -> Option<i32> {
586 self.client_id
587 }
588}
589
590impl TDMessageContent for MessageBasicGroupChatCreate {}
591
592impl MessageBasicGroupChatCreate {
593 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
594 Ok(serde_json::from_str(json.as_ref())?)
595 }
596 pub fn builder() -> MessageBasicGroupChatCreateBuilder {
597 let mut inner = MessageBasicGroupChatCreate::default();
598 inner.extra = Some(Uuid::new_v4().to_string());
599
600 MessageBasicGroupChatCreateBuilder { inner }
601 }
602
603 pub fn title(&self) -> &String {
604 &self.title
605 }
606
607 pub fn member_user_ids(&self) -> &Vec<i64> {
608 &self.member_user_ids
609 }
610}
611
612#[doc(hidden)]
613pub struct MessageBasicGroupChatCreateBuilder {
614 inner: MessageBasicGroupChatCreate,
615}
616
617#[deprecated]
618pub type RTDMessageBasicGroupChatCreateBuilder = MessageBasicGroupChatCreateBuilder;
619
620impl MessageBasicGroupChatCreateBuilder {
621 pub fn build(&self) -> MessageBasicGroupChatCreate {
622 self.inner.clone()
623 }
624
625 pub fn title<T: AsRef<str>>(&mut self, title: T) -> &mut Self {
626 self.inner.title = title.as_ref().to_string();
627 self
628 }
629
630 pub fn member_user_ids(&mut self, member_user_ids: Vec<i64>) -> &mut Self {
631 self.inner.member_user_ids = member_user_ids;
632 self
633 }
634}
635
636impl AsRef<MessageBasicGroupChatCreate> for MessageBasicGroupChatCreate {
637 fn as_ref(&self) -> &MessageBasicGroupChatCreate {
638 self
639 }
640}
641
642impl AsRef<MessageBasicGroupChatCreate> for MessageBasicGroupChatCreateBuilder {
643 fn as_ref(&self) -> &MessageBasicGroupChatCreate {
644 &self.inner
645 }
646}
647
648#[derive(Debug, Clone, Default, Serialize, Deserialize)]
650pub struct MessageCall {
651 #[doc(hidden)]
652 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
653 extra: Option<String>,
654 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
655 client_id: Option<i32>,
656 #[serde(default)]
659 is_video: bool,
660 #[serde(skip_serializing_if = "CallDiscardReason::_is_default")]
663 discard_reason: CallDiscardReason,
664 #[serde(default)]
667 duration: i32,
668}
669
670impl RObject for MessageCall {
671 #[doc(hidden)]
672 fn extra(&self) -> Option<&str> {
673 self.extra.as_deref()
674 }
675 #[doc(hidden)]
676 fn client_id(&self) -> Option<i32> {
677 self.client_id
678 }
679}
680
681impl TDMessageContent for MessageCall {}
682
683impl MessageCall {
684 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
685 Ok(serde_json::from_str(json.as_ref())?)
686 }
687 pub fn builder() -> MessageCallBuilder {
688 let mut inner = MessageCall::default();
689 inner.extra = Some(Uuid::new_v4().to_string());
690
691 MessageCallBuilder { inner }
692 }
693
694 pub fn is_video(&self) -> bool {
695 self.is_video
696 }
697
698 pub fn discard_reason(&self) -> &CallDiscardReason {
699 &self.discard_reason
700 }
701
702 pub fn duration(&self) -> i32 {
703 self.duration
704 }
705}
706
707#[doc(hidden)]
708pub struct MessageCallBuilder {
709 inner: MessageCall,
710}
711
712#[deprecated]
713pub type RTDMessageCallBuilder = MessageCallBuilder;
714
715impl MessageCallBuilder {
716 pub fn build(&self) -> MessageCall {
717 self.inner.clone()
718 }
719
720 pub fn is_video(&mut self, is_video: bool) -> &mut Self {
721 self.inner.is_video = is_video;
722 self
723 }
724
725 pub fn discard_reason<T: AsRef<CallDiscardReason>>(&mut self, discard_reason: T) -> &mut Self {
726 self.inner.discard_reason = discard_reason.as_ref().clone();
727 self
728 }
729
730 pub fn duration(&mut self, duration: i32) -> &mut Self {
731 self.inner.duration = duration;
732 self
733 }
734}
735
736impl AsRef<MessageCall> for MessageCall {
737 fn as_ref(&self) -> &MessageCall {
738 self
739 }
740}
741
742impl AsRef<MessageCall> for MessageCallBuilder {
743 fn as_ref(&self) -> &MessageCall {
744 &self.inner
745 }
746}
747
748#[derive(Debug, Clone, Default, Serialize, Deserialize)]
750pub struct MessageChatAddMembers {
751 #[doc(hidden)]
752 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
753 extra: Option<String>,
754 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
755 client_id: Option<i32>,
756 #[serde(default)]
759 member_user_ids: Vec<i64>,
760}
761
762impl RObject for MessageChatAddMembers {
763 #[doc(hidden)]
764 fn extra(&self) -> Option<&str> {
765 self.extra.as_deref()
766 }
767 #[doc(hidden)]
768 fn client_id(&self) -> Option<i32> {
769 self.client_id
770 }
771}
772
773impl TDMessageContent for MessageChatAddMembers {}
774
775impl MessageChatAddMembers {
776 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
777 Ok(serde_json::from_str(json.as_ref())?)
778 }
779 pub fn builder() -> MessageChatAddMembersBuilder {
780 let mut inner = MessageChatAddMembers::default();
781 inner.extra = Some(Uuid::new_v4().to_string());
782
783 MessageChatAddMembersBuilder { inner }
784 }
785
786 pub fn member_user_ids(&self) -> &Vec<i64> {
787 &self.member_user_ids
788 }
789}
790
791#[doc(hidden)]
792pub struct MessageChatAddMembersBuilder {
793 inner: MessageChatAddMembers,
794}
795
796#[deprecated]
797pub type RTDMessageChatAddMembersBuilder = MessageChatAddMembersBuilder;
798
799impl MessageChatAddMembersBuilder {
800 pub fn build(&self) -> MessageChatAddMembers {
801 self.inner.clone()
802 }
803
804 pub fn member_user_ids(&mut self, member_user_ids: Vec<i64>) -> &mut Self {
805 self.inner.member_user_ids = member_user_ids;
806 self
807 }
808}
809
810impl AsRef<MessageChatAddMembers> for MessageChatAddMembers {
811 fn as_ref(&self) -> &MessageChatAddMembers {
812 self
813 }
814}
815
816impl AsRef<MessageChatAddMembers> for MessageChatAddMembersBuilder {
817 fn as_ref(&self) -> &MessageChatAddMembers {
818 &self.inner
819 }
820}
821
822#[derive(Debug, Clone, Default, Serialize, Deserialize)]
824pub struct MessageChatChangePhoto {
825 #[doc(hidden)]
826 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
827 extra: Option<String>,
828 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
829 client_id: Option<i32>,
830 photo: ChatPhoto,
832}
833
834impl RObject for MessageChatChangePhoto {
835 #[doc(hidden)]
836 fn extra(&self) -> Option<&str> {
837 self.extra.as_deref()
838 }
839 #[doc(hidden)]
840 fn client_id(&self) -> Option<i32> {
841 self.client_id
842 }
843}
844
845impl TDMessageContent for MessageChatChangePhoto {}
846
847impl MessageChatChangePhoto {
848 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
849 Ok(serde_json::from_str(json.as_ref())?)
850 }
851 pub fn builder() -> MessageChatChangePhotoBuilder {
852 let mut inner = MessageChatChangePhoto::default();
853 inner.extra = Some(Uuid::new_v4().to_string());
854
855 MessageChatChangePhotoBuilder { inner }
856 }
857
858 pub fn photo(&self) -> &ChatPhoto {
859 &self.photo
860 }
861}
862
863#[doc(hidden)]
864pub struct MessageChatChangePhotoBuilder {
865 inner: MessageChatChangePhoto,
866}
867
868#[deprecated]
869pub type RTDMessageChatChangePhotoBuilder = MessageChatChangePhotoBuilder;
870
871impl MessageChatChangePhotoBuilder {
872 pub fn build(&self) -> MessageChatChangePhoto {
873 self.inner.clone()
874 }
875
876 pub fn photo<T: AsRef<ChatPhoto>>(&mut self, photo: T) -> &mut Self {
877 self.inner.photo = photo.as_ref().clone();
878 self
879 }
880}
881
882impl AsRef<MessageChatChangePhoto> for MessageChatChangePhoto {
883 fn as_ref(&self) -> &MessageChatChangePhoto {
884 self
885 }
886}
887
888impl AsRef<MessageChatChangePhoto> for MessageChatChangePhotoBuilder {
889 fn as_ref(&self) -> &MessageChatChangePhoto {
890 &self.inner
891 }
892}
893
894#[derive(Debug, Clone, Default, Serialize, Deserialize)]
896pub struct MessageChatChangeTitle {
897 #[doc(hidden)]
898 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
899 extra: Option<String>,
900 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
901 client_id: Option<i32>,
902 #[serde(default)]
905 title: String,
906}
907
908impl RObject for MessageChatChangeTitle {
909 #[doc(hidden)]
910 fn extra(&self) -> Option<&str> {
911 self.extra.as_deref()
912 }
913 #[doc(hidden)]
914 fn client_id(&self) -> Option<i32> {
915 self.client_id
916 }
917}
918
919impl TDMessageContent for MessageChatChangeTitle {}
920
921impl MessageChatChangeTitle {
922 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
923 Ok(serde_json::from_str(json.as_ref())?)
924 }
925 pub fn builder() -> MessageChatChangeTitleBuilder {
926 let mut inner = MessageChatChangeTitle::default();
927 inner.extra = Some(Uuid::new_v4().to_string());
928
929 MessageChatChangeTitleBuilder { inner }
930 }
931
932 pub fn title(&self) -> &String {
933 &self.title
934 }
935}
936
937#[doc(hidden)]
938pub struct MessageChatChangeTitleBuilder {
939 inner: MessageChatChangeTitle,
940}
941
942#[deprecated]
943pub type RTDMessageChatChangeTitleBuilder = MessageChatChangeTitleBuilder;
944
945impl MessageChatChangeTitleBuilder {
946 pub fn build(&self) -> MessageChatChangeTitle {
947 self.inner.clone()
948 }
949
950 pub fn title<T: AsRef<str>>(&mut self, title: T) -> &mut Self {
951 self.inner.title = title.as_ref().to_string();
952 self
953 }
954}
955
956impl AsRef<MessageChatChangeTitle> for MessageChatChangeTitle {
957 fn as_ref(&self) -> &MessageChatChangeTitle {
958 self
959 }
960}
961
962impl AsRef<MessageChatChangeTitle> for MessageChatChangeTitleBuilder {
963 fn as_ref(&self) -> &MessageChatChangeTitle {
964 &self.inner
965 }
966}
967
968#[derive(Debug, Clone, Default, Serialize, Deserialize)]
970pub struct MessageChatDeleteMember {
971 #[doc(hidden)]
972 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
973 extra: Option<String>,
974 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
975 client_id: Option<i32>,
976 #[serde(default)]
979 user_id: i64,
980}
981
982impl RObject for MessageChatDeleteMember {
983 #[doc(hidden)]
984 fn extra(&self) -> Option<&str> {
985 self.extra.as_deref()
986 }
987 #[doc(hidden)]
988 fn client_id(&self) -> Option<i32> {
989 self.client_id
990 }
991}
992
993impl TDMessageContent for MessageChatDeleteMember {}
994
995impl MessageChatDeleteMember {
996 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
997 Ok(serde_json::from_str(json.as_ref())?)
998 }
999 pub fn builder() -> MessageChatDeleteMemberBuilder {
1000 let mut inner = MessageChatDeleteMember::default();
1001 inner.extra = Some(Uuid::new_v4().to_string());
1002
1003 MessageChatDeleteMemberBuilder { inner }
1004 }
1005
1006 pub fn user_id(&self) -> i64 {
1007 self.user_id
1008 }
1009}
1010
1011#[doc(hidden)]
1012pub struct MessageChatDeleteMemberBuilder {
1013 inner: MessageChatDeleteMember,
1014}
1015
1016#[deprecated]
1017pub type RTDMessageChatDeleteMemberBuilder = MessageChatDeleteMemberBuilder;
1018
1019impl MessageChatDeleteMemberBuilder {
1020 pub fn build(&self) -> MessageChatDeleteMember {
1021 self.inner.clone()
1022 }
1023
1024 pub fn user_id(&mut self, user_id: i64) -> &mut Self {
1025 self.inner.user_id = user_id;
1026 self
1027 }
1028}
1029
1030impl AsRef<MessageChatDeleteMember> for MessageChatDeleteMember {
1031 fn as_ref(&self) -> &MessageChatDeleteMember {
1032 self
1033 }
1034}
1035
1036impl AsRef<MessageChatDeleteMember> for MessageChatDeleteMemberBuilder {
1037 fn as_ref(&self) -> &MessageChatDeleteMember {
1038 &self.inner
1039 }
1040}
1041
1042#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1044pub struct MessageChatDeletePhoto {
1045 #[doc(hidden)]
1046 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
1047 extra: Option<String>,
1048 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
1049 client_id: Option<i32>,
1050}
1051
1052impl RObject for MessageChatDeletePhoto {
1053 #[doc(hidden)]
1054 fn extra(&self) -> Option<&str> {
1055 self.extra.as_deref()
1056 }
1057 #[doc(hidden)]
1058 fn client_id(&self) -> Option<i32> {
1059 self.client_id
1060 }
1061}
1062
1063impl TDMessageContent for MessageChatDeletePhoto {}
1064
1065impl MessageChatDeletePhoto {
1066 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
1067 Ok(serde_json::from_str(json.as_ref())?)
1068 }
1069 pub fn builder() -> MessageChatDeletePhotoBuilder {
1070 let mut inner = MessageChatDeletePhoto::default();
1071 inner.extra = Some(Uuid::new_v4().to_string());
1072
1073 MessageChatDeletePhotoBuilder { inner }
1074 }
1075}
1076
1077#[doc(hidden)]
1078pub struct MessageChatDeletePhotoBuilder {
1079 inner: MessageChatDeletePhoto,
1080}
1081
1082#[deprecated]
1083pub type RTDMessageChatDeletePhotoBuilder = MessageChatDeletePhotoBuilder;
1084
1085impl MessageChatDeletePhotoBuilder {
1086 pub fn build(&self) -> MessageChatDeletePhoto {
1087 self.inner.clone()
1088 }
1089}
1090
1091impl AsRef<MessageChatDeletePhoto> for MessageChatDeletePhoto {
1092 fn as_ref(&self) -> &MessageChatDeletePhoto {
1093 self
1094 }
1095}
1096
1097impl AsRef<MessageChatDeletePhoto> for MessageChatDeletePhotoBuilder {
1098 fn as_ref(&self) -> &MessageChatDeletePhoto {
1099 &self.inner
1100 }
1101}
1102
1103#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1105pub struct MessageChatJoinByLink {
1106 #[doc(hidden)]
1107 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
1108 extra: Option<String>,
1109 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
1110 client_id: Option<i32>,
1111}
1112
1113impl RObject for MessageChatJoinByLink {
1114 #[doc(hidden)]
1115 fn extra(&self) -> Option<&str> {
1116 self.extra.as_deref()
1117 }
1118 #[doc(hidden)]
1119 fn client_id(&self) -> Option<i32> {
1120 self.client_id
1121 }
1122}
1123
1124impl TDMessageContent for MessageChatJoinByLink {}
1125
1126impl MessageChatJoinByLink {
1127 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
1128 Ok(serde_json::from_str(json.as_ref())?)
1129 }
1130 pub fn builder() -> MessageChatJoinByLinkBuilder {
1131 let mut inner = MessageChatJoinByLink::default();
1132 inner.extra = Some(Uuid::new_v4().to_string());
1133
1134 MessageChatJoinByLinkBuilder { inner }
1135 }
1136}
1137
1138#[doc(hidden)]
1139pub struct MessageChatJoinByLinkBuilder {
1140 inner: MessageChatJoinByLink,
1141}
1142
1143#[deprecated]
1144pub type RTDMessageChatJoinByLinkBuilder = MessageChatJoinByLinkBuilder;
1145
1146impl MessageChatJoinByLinkBuilder {
1147 pub fn build(&self) -> MessageChatJoinByLink {
1148 self.inner.clone()
1149 }
1150}
1151
1152impl AsRef<MessageChatJoinByLink> for MessageChatJoinByLink {
1153 fn as_ref(&self) -> &MessageChatJoinByLink {
1154 self
1155 }
1156}
1157
1158impl AsRef<MessageChatJoinByLink> for MessageChatJoinByLinkBuilder {
1159 fn as_ref(&self) -> &MessageChatJoinByLink {
1160 &self.inner
1161 }
1162}
1163
1164#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1166pub struct MessageChatJoinByRequest {
1167 #[doc(hidden)]
1168 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
1169 extra: Option<String>,
1170 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
1171 client_id: Option<i32>,
1172}
1173
1174impl RObject for MessageChatJoinByRequest {
1175 #[doc(hidden)]
1176 fn extra(&self) -> Option<&str> {
1177 self.extra.as_deref()
1178 }
1179 #[doc(hidden)]
1180 fn client_id(&self) -> Option<i32> {
1181 self.client_id
1182 }
1183}
1184
1185impl TDMessageContent for MessageChatJoinByRequest {}
1186
1187impl MessageChatJoinByRequest {
1188 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
1189 Ok(serde_json::from_str(json.as_ref())?)
1190 }
1191 pub fn builder() -> MessageChatJoinByRequestBuilder {
1192 let mut inner = MessageChatJoinByRequest::default();
1193 inner.extra = Some(Uuid::new_v4().to_string());
1194
1195 MessageChatJoinByRequestBuilder { inner }
1196 }
1197}
1198
1199#[doc(hidden)]
1200pub struct MessageChatJoinByRequestBuilder {
1201 inner: MessageChatJoinByRequest,
1202}
1203
1204#[deprecated]
1205pub type RTDMessageChatJoinByRequestBuilder = MessageChatJoinByRequestBuilder;
1206
1207impl MessageChatJoinByRequestBuilder {
1208 pub fn build(&self) -> MessageChatJoinByRequest {
1209 self.inner.clone()
1210 }
1211}
1212
1213impl AsRef<MessageChatJoinByRequest> for MessageChatJoinByRequest {
1214 fn as_ref(&self) -> &MessageChatJoinByRequest {
1215 self
1216 }
1217}
1218
1219impl AsRef<MessageChatJoinByRequest> for MessageChatJoinByRequestBuilder {
1220 fn as_ref(&self) -> &MessageChatJoinByRequest {
1221 &self.inner
1222 }
1223}
1224
1225#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1227pub struct MessageChatSetTheme {
1228 #[doc(hidden)]
1229 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
1230 extra: Option<String>,
1231 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
1232 client_id: Option<i32>,
1233 #[serde(default)]
1236 theme_name: String,
1237}
1238
1239impl RObject for MessageChatSetTheme {
1240 #[doc(hidden)]
1241 fn extra(&self) -> Option<&str> {
1242 self.extra.as_deref()
1243 }
1244 #[doc(hidden)]
1245 fn client_id(&self) -> Option<i32> {
1246 self.client_id
1247 }
1248}
1249
1250impl TDMessageContent for MessageChatSetTheme {}
1251
1252impl MessageChatSetTheme {
1253 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
1254 Ok(serde_json::from_str(json.as_ref())?)
1255 }
1256 pub fn builder() -> MessageChatSetThemeBuilder {
1257 let mut inner = MessageChatSetTheme::default();
1258 inner.extra = Some(Uuid::new_v4().to_string());
1259
1260 MessageChatSetThemeBuilder { inner }
1261 }
1262
1263 pub fn theme_name(&self) -> &String {
1264 &self.theme_name
1265 }
1266}
1267
1268#[doc(hidden)]
1269pub struct MessageChatSetThemeBuilder {
1270 inner: MessageChatSetTheme,
1271}
1272
1273#[deprecated]
1274pub type RTDMessageChatSetThemeBuilder = MessageChatSetThemeBuilder;
1275
1276impl MessageChatSetThemeBuilder {
1277 pub fn build(&self) -> MessageChatSetTheme {
1278 self.inner.clone()
1279 }
1280
1281 pub fn theme_name<T: AsRef<str>>(&mut self, theme_name: T) -> &mut Self {
1282 self.inner.theme_name = theme_name.as_ref().to_string();
1283 self
1284 }
1285}
1286
1287impl AsRef<MessageChatSetTheme> for MessageChatSetTheme {
1288 fn as_ref(&self) -> &MessageChatSetTheme {
1289 self
1290 }
1291}
1292
1293impl AsRef<MessageChatSetTheme> for MessageChatSetThemeBuilder {
1294 fn as_ref(&self) -> &MessageChatSetTheme {
1295 &self.inner
1296 }
1297}
1298
1299#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1301pub struct MessageChatSetTtl {
1302 #[doc(hidden)]
1303 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
1304 extra: Option<String>,
1305 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
1306 client_id: Option<i32>,
1307 #[serde(default)]
1310 ttl: i32,
1311}
1312
1313impl RObject for MessageChatSetTtl {
1314 #[doc(hidden)]
1315 fn extra(&self) -> Option<&str> {
1316 self.extra.as_deref()
1317 }
1318 #[doc(hidden)]
1319 fn client_id(&self) -> Option<i32> {
1320 self.client_id
1321 }
1322}
1323
1324impl TDMessageContent for MessageChatSetTtl {}
1325
1326impl MessageChatSetTtl {
1327 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
1328 Ok(serde_json::from_str(json.as_ref())?)
1329 }
1330 pub fn builder() -> MessageChatSetTtlBuilder {
1331 let mut inner = MessageChatSetTtl::default();
1332 inner.extra = Some(Uuid::new_v4().to_string());
1333
1334 MessageChatSetTtlBuilder { inner }
1335 }
1336
1337 pub fn ttl(&self) -> i32 {
1338 self.ttl
1339 }
1340}
1341
1342#[doc(hidden)]
1343pub struct MessageChatSetTtlBuilder {
1344 inner: MessageChatSetTtl,
1345}
1346
1347#[deprecated]
1348pub type RTDMessageChatSetTtlBuilder = MessageChatSetTtlBuilder;
1349
1350impl MessageChatSetTtlBuilder {
1351 pub fn build(&self) -> MessageChatSetTtl {
1352 self.inner.clone()
1353 }
1354
1355 pub fn ttl(&mut self, ttl: i32) -> &mut Self {
1356 self.inner.ttl = ttl;
1357 self
1358 }
1359}
1360
1361impl AsRef<MessageChatSetTtl> for MessageChatSetTtl {
1362 fn as_ref(&self) -> &MessageChatSetTtl {
1363 self
1364 }
1365}
1366
1367impl AsRef<MessageChatSetTtl> for MessageChatSetTtlBuilder {
1368 fn as_ref(&self) -> &MessageChatSetTtl {
1369 &self.inner
1370 }
1371}
1372
1373#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1375pub struct MessageChatUpgradeFrom {
1376 #[doc(hidden)]
1377 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
1378 extra: Option<String>,
1379 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
1380 client_id: Option<i32>,
1381 #[serde(default)]
1384 title: String,
1385 #[serde(default)]
1388 basic_group_id: i64,
1389}
1390
1391impl RObject for MessageChatUpgradeFrom {
1392 #[doc(hidden)]
1393 fn extra(&self) -> Option<&str> {
1394 self.extra.as_deref()
1395 }
1396 #[doc(hidden)]
1397 fn client_id(&self) -> Option<i32> {
1398 self.client_id
1399 }
1400}
1401
1402impl TDMessageContent for MessageChatUpgradeFrom {}
1403
1404impl MessageChatUpgradeFrom {
1405 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
1406 Ok(serde_json::from_str(json.as_ref())?)
1407 }
1408 pub fn builder() -> MessageChatUpgradeFromBuilder {
1409 let mut inner = MessageChatUpgradeFrom::default();
1410 inner.extra = Some(Uuid::new_v4().to_string());
1411
1412 MessageChatUpgradeFromBuilder { inner }
1413 }
1414
1415 pub fn title(&self) -> &String {
1416 &self.title
1417 }
1418
1419 pub fn basic_group_id(&self) -> i64 {
1420 self.basic_group_id
1421 }
1422}
1423
1424#[doc(hidden)]
1425pub struct MessageChatUpgradeFromBuilder {
1426 inner: MessageChatUpgradeFrom,
1427}
1428
1429#[deprecated]
1430pub type RTDMessageChatUpgradeFromBuilder = MessageChatUpgradeFromBuilder;
1431
1432impl MessageChatUpgradeFromBuilder {
1433 pub fn build(&self) -> MessageChatUpgradeFrom {
1434 self.inner.clone()
1435 }
1436
1437 pub fn title<T: AsRef<str>>(&mut self, title: T) -> &mut Self {
1438 self.inner.title = title.as_ref().to_string();
1439 self
1440 }
1441
1442 pub fn basic_group_id(&mut self, basic_group_id: i64) -> &mut Self {
1443 self.inner.basic_group_id = basic_group_id;
1444 self
1445 }
1446}
1447
1448impl AsRef<MessageChatUpgradeFrom> for MessageChatUpgradeFrom {
1449 fn as_ref(&self) -> &MessageChatUpgradeFrom {
1450 self
1451 }
1452}
1453
1454impl AsRef<MessageChatUpgradeFrom> for MessageChatUpgradeFromBuilder {
1455 fn as_ref(&self) -> &MessageChatUpgradeFrom {
1456 &self.inner
1457 }
1458}
1459
1460#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1462pub struct MessageChatUpgradeTo {
1463 #[doc(hidden)]
1464 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
1465 extra: Option<String>,
1466 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
1467 client_id: Option<i32>,
1468 #[serde(default)]
1471 supergroup_id: i64,
1472}
1473
1474impl RObject for MessageChatUpgradeTo {
1475 #[doc(hidden)]
1476 fn extra(&self) -> Option<&str> {
1477 self.extra.as_deref()
1478 }
1479 #[doc(hidden)]
1480 fn client_id(&self) -> Option<i32> {
1481 self.client_id
1482 }
1483}
1484
1485impl TDMessageContent for MessageChatUpgradeTo {}
1486
1487impl MessageChatUpgradeTo {
1488 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
1489 Ok(serde_json::from_str(json.as_ref())?)
1490 }
1491 pub fn builder() -> MessageChatUpgradeToBuilder {
1492 let mut inner = MessageChatUpgradeTo::default();
1493 inner.extra = Some(Uuid::new_v4().to_string());
1494
1495 MessageChatUpgradeToBuilder { inner }
1496 }
1497
1498 pub fn supergroup_id(&self) -> i64 {
1499 self.supergroup_id
1500 }
1501}
1502
1503#[doc(hidden)]
1504pub struct MessageChatUpgradeToBuilder {
1505 inner: MessageChatUpgradeTo,
1506}
1507
1508#[deprecated]
1509pub type RTDMessageChatUpgradeToBuilder = MessageChatUpgradeToBuilder;
1510
1511impl MessageChatUpgradeToBuilder {
1512 pub fn build(&self) -> MessageChatUpgradeTo {
1513 self.inner.clone()
1514 }
1515
1516 pub fn supergroup_id(&mut self, supergroup_id: i64) -> &mut Self {
1517 self.inner.supergroup_id = supergroup_id;
1518 self
1519 }
1520}
1521
1522impl AsRef<MessageChatUpgradeTo> for MessageChatUpgradeTo {
1523 fn as_ref(&self) -> &MessageChatUpgradeTo {
1524 self
1525 }
1526}
1527
1528impl AsRef<MessageChatUpgradeTo> for MessageChatUpgradeToBuilder {
1529 fn as_ref(&self) -> &MessageChatUpgradeTo {
1530 &self.inner
1531 }
1532}
1533
1534#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1536pub struct MessageContact {
1537 #[doc(hidden)]
1538 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
1539 extra: Option<String>,
1540 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
1541 client_id: Option<i32>,
1542 contact: Contact,
1544}
1545
1546impl RObject for MessageContact {
1547 #[doc(hidden)]
1548 fn extra(&self) -> Option<&str> {
1549 self.extra.as_deref()
1550 }
1551 #[doc(hidden)]
1552 fn client_id(&self) -> Option<i32> {
1553 self.client_id
1554 }
1555}
1556
1557impl TDMessageContent for MessageContact {}
1558
1559impl MessageContact {
1560 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
1561 Ok(serde_json::from_str(json.as_ref())?)
1562 }
1563 pub fn builder() -> MessageContactBuilder {
1564 let mut inner = MessageContact::default();
1565 inner.extra = Some(Uuid::new_v4().to_string());
1566
1567 MessageContactBuilder { inner }
1568 }
1569
1570 pub fn contact(&self) -> &Contact {
1571 &self.contact
1572 }
1573}
1574
1575#[doc(hidden)]
1576pub struct MessageContactBuilder {
1577 inner: MessageContact,
1578}
1579
1580#[deprecated]
1581pub type RTDMessageContactBuilder = MessageContactBuilder;
1582
1583impl MessageContactBuilder {
1584 pub fn build(&self) -> MessageContact {
1585 self.inner.clone()
1586 }
1587
1588 pub fn contact<T: AsRef<Contact>>(&mut self, contact: T) -> &mut Self {
1589 self.inner.contact = contact.as_ref().clone();
1590 self
1591 }
1592}
1593
1594impl AsRef<MessageContact> for MessageContact {
1595 fn as_ref(&self) -> &MessageContact {
1596 self
1597 }
1598}
1599
1600impl AsRef<MessageContact> for MessageContactBuilder {
1601 fn as_ref(&self) -> &MessageContact {
1602 &self.inner
1603 }
1604}
1605
1606#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1608pub struct MessageContactRegistered {
1609 #[doc(hidden)]
1610 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
1611 extra: Option<String>,
1612 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
1613 client_id: Option<i32>,
1614}
1615
1616impl RObject for MessageContactRegistered {
1617 #[doc(hidden)]
1618 fn extra(&self) -> Option<&str> {
1619 self.extra.as_deref()
1620 }
1621 #[doc(hidden)]
1622 fn client_id(&self) -> Option<i32> {
1623 self.client_id
1624 }
1625}
1626
1627impl TDMessageContent for MessageContactRegistered {}
1628
1629impl MessageContactRegistered {
1630 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
1631 Ok(serde_json::from_str(json.as_ref())?)
1632 }
1633 pub fn builder() -> MessageContactRegisteredBuilder {
1634 let mut inner = MessageContactRegistered::default();
1635 inner.extra = Some(Uuid::new_v4().to_string());
1636
1637 MessageContactRegisteredBuilder { inner }
1638 }
1639}
1640
1641#[doc(hidden)]
1642pub struct MessageContactRegisteredBuilder {
1643 inner: MessageContactRegistered,
1644}
1645
1646#[deprecated]
1647pub type RTDMessageContactRegisteredBuilder = MessageContactRegisteredBuilder;
1648
1649impl MessageContactRegisteredBuilder {
1650 pub fn build(&self) -> MessageContactRegistered {
1651 self.inner.clone()
1652 }
1653}
1654
1655impl AsRef<MessageContactRegistered> for MessageContactRegistered {
1656 fn as_ref(&self) -> &MessageContactRegistered {
1657 self
1658 }
1659}
1660
1661impl AsRef<MessageContactRegistered> for MessageContactRegisteredBuilder {
1662 fn as_ref(&self) -> &MessageContactRegistered {
1663 &self.inner
1664 }
1665}
1666
1667#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1669pub struct MessageCustomServiceAction {
1670 #[doc(hidden)]
1671 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
1672 extra: Option<String>,
1673 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
1674 client_id: Option<i32>,
1675 #[serde(default)]
1678 text: String,
1679}
1680
1681impl RObject for MessageCustomServiceAction {
1682 #[doc(hidden)]
1683 fn extra(&self) -> Option<&str> {
1684 self.extra.as_deref()
1685 }
1686 #[doc(hidden)]
1687 fn client_id(&self) -> Option<i32> {
1688 self.client_id
1689 }
1690}
1691
1692impl TDMessageContent for MessageCustomServiceAction {}
1693
1694impl MessageCustomServiceAction {
1695 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
1696 Ok(serde_json::from_str(json.as_ref())?)
1697 }
1698 pub fn builder() -> MessageCustomServiceActionBuilder {
1699 let mut inner = MessageCustomServiceAction::default();
1700 inner.extra = Some(Uuid::new_v4().to_string());
1701
1702 MessageCustomServiceActionBuilder { inner }
1703 }
1704
1705 pub fn text(&self) -> &String {
1706 &self.text
1707 }
1708}
1709
1710#[doc(hidden)]
1711pub struct MessageCustomServiceActionBuilder {
1712 inner: MessageCustomServiceAction,
1713}
1714
1715#[deprecated]
1716pub type RTDMessageCustomServiceActionBuilder = MessageCustomServiceActionBuilder;
1717
1718impl MessageCustomServiceActionBuilder {
1719 pub fn build(&self) -> MessageCustomServiceAction {
1720 self.inner.clone()
1721 }
1722
1723 pub fn text<T: AsRef<str>>(&mut self, text: T) -> &mut Self {
1724 self.inner.text = text.as_ref().to_string();
1725 self
1726 }
1727}
1728
1729impl AsRef<MessageCustomServiceAction> for MessageCustomServiceAction {
1730 fn as_ref(&self) -> &MessageCustomServiceAction {
1731 self
1732 }
1733}
1734
1735impl AsRef<MessageCustomServiceAction> for MessageCustomServiceActionBuilder {
1736 fn as_ref(&self) -> &MessageCustomServiceAction {
1737 &self.inner
1738 }
1739}
1740
1741#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1743pub struct MessageDice {
1744 #[doc(hidden)]
1745 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
1746 extra: Option<String>,
1747 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
1748 client_id: Option<i32>,
1749 initial_state: Option<DiceStickers>,
1751 final_state: Option<DiceStickers>,
1753 #[serde(default)]
1756 emoji: String,
1757 #[serde(default)]
1760 value: i32,
1761 #[serde(default)]
1764 success_animation_frame_number: i32,
1765}
1766
1767impl RObject for MessageDice {
1768 #[doc(hidden)]
1769 fn extra(&self) -> Option<&str> {
1770 self.extra.as_deref()
1771 }
1772 #[doc(hidden)]
1773 fn client_id(&self) -> Option<i32> {
1774 self.client_id
1775 }
1776}
1777
1778impl TDMessageContent for MessageDice {}
1779
1780impl MessageDice {
1781 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
1782 Ok(serde_json::from_str(json.as_ref())?)
1783 }
1784 pub fn builder() -> MessageDiceBuilder {
1785 let mut inner = MessageDice::default();
1786 inner.extra = Some(Uuid::new_v4().to_string());
1787
1788 MessageDiceBuilder { inner }
1789 }
1790
1791 pub fn initial_state(&self) -> &Option<DiceStickers> {
1792 &self.initial_state
1793 }
1794
1795 pub fn final_state(&self) -> &Option<DiceStickers> {
1796 &self.final_state
1797 }
1798
1799 pub fn emoji(&self) -> &String {
1800 &self.emoji
1801 }
1802
1803 pub fn value(&self) -> i32 {
1804 self.value
1805 }
1806
1807 pub fn success_animation_frame_number(&self) -> i32 {
1808 self.success_animation_frame_number
1809 }
1810}
1811
1812#[doc(hidden)]
1813pub struct MessageDiceBuilder {
1814 inner: MessageDice,
1815}
1816
1817#[deprecated]
1818pub type RTDMessageDiceBuilder = MessageDiceBuilder;
1819
1820impl MessageDiceBuilder {
1821 pub fn build(&self) -> MessageDice {
1822 self.inner.clone()
1823 }
1824
1825 pub fn initial_state<T: AsRef<DiceStickers>>(&mut self, initial_state: T) -> &mut Self {
1826 self.inner.initial_state = Some(initial_state.as_ref().clone());
1827 self
1828 }
1829
1830 pub fn final_state<T: AsRef<DiceStickers>>(&mut self, final_state: T) -> &mut Self {
1831 self.inner.final_state = Some(final_state.as_ref().clone());
1832 self
1833 }
1834
1835 pub fn emoji<T: AsRef<str>>(&mut self, emoji: T) -> &mut Self {
1836 self.inner.emoji = emoji.as_ref().to_string();
1837 self
1838 }
1839
1840 pub fn value(&mut self, value: i32) -> &mut Self {
1841 self.inner.value = value;
1842 self
1843 }
1844
1845 pub fn success_animation_frame_number(
1846 &mut self,
1847 success_animation_frame_number: i32,
1848 ) -> &mut Self {
1849 self.inner.success_animation_frame_number = success_animation_frame_number;
1850 self
1851 }
1852}
1853
1854impl AsRef<MessageDice> for MessageDice {
1855 fn as_ref(&self) -> &MessageDice {
1856 self
1857 }
1858}
1859
1860impl AsRef<MessageDice> for MessageDiceBuilder {
1861 fn as_ref(&self) -> &MessageDice {
1862 &self.inner
1863 }
1864}
1865
1866#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1868pub struct MessageDocument {
1869 #[doc(hidden)]
1870 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
1871 extra: Option<String>,
1872 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
1873 client_id: Option<i32>,
1874 document: Document,
1876 caption: FormattedText,
1878}
1879
1880impl RObject for MessageDocument {
1881 #[doc(hidden)]
1882 fn extra(&self) -> Option<&str> {
1883 self.extra.as_deref()
1884 }
1885 #[doc(hidden)]
1886 fn client_id(&self) -> Option<i32> {
1887 self.client_id
1888 }
1889}
1890
1891impl TDMessageContent for MessageDocument {}
1892
1893impl MessageDocument {
1894 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
1895 Ok(serde_json::from_str(json.as_ref())?)
1896 }
1897 pub fn builder() -> MessageDocumentBuilder {
1898 let mut inner = MessageDocument::default();
1899 inner.extra = Some(Uuid::new_v4().to_string());
1900
1901 MessageDocumentBuilder { inner }
1902 }
1903
1904 pub fn document(&self) -> &Document {
1905 &self.document
1906 }
1907
1908 pub fn caption(&self) -> &FormattedText {
1909 &self.caption
1910 }
1911}
1912
1913#[doc(hidden)]
1914pub struct MessageDocumentBuilder {
1915 inner: MessageDocument,
1916}
1917
1918#[deprecated]
1919pub type RTDMessageDocumentBuilder = MessageDocumentBuilder;
1920
1921impl MessageDocumentBuilder {
1922 pub fn build(&self) -> MessageDocument {
1923 self.inner.clone()
1924 }
1925
1926 pub fn document<T: AsRef<Document>>(&mut self, document: T) -> &mut Self {
1927 self.inner.document = document.as_ref().clone();
1928 self
1929 }
1930
1931 pub fn caption<T: AsRef<FormattedText>>(&mut self, caption: T) -> &mut Self {
1932 self.inner.caption = caption.as_ref().clone();
1933 self
1934 }
1935}
1936
1937impl AsRef<MessageDocument> for MessageDocument {
1938 fn as_ref(&self) -> &MessageDocument {
1939 self
1940 }
1941}
1942
1943impl AsRef<MessageDocument> for MessageDocumentBuilder {
1944 fn as_ref(&self) -> &MessageDocument {
1945 &self.inner
1946 }
1947}
1948
1949#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1951pub struct MessageExpiredPhoto {
1952 #[doc(hidden)]
1953 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
1954 extra: Option<String>,
1955 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
1956 client_id: Option<i32>,
1957}
1958
1959impl RObject for MessageExpiredPhoto {
1960 #[doc(hidden)]
1961 fn extra(&self) -> Option<&str> {
1962 self.extra.as_deref()
1963 }
1964 #[doc(hidden)]
1965 fn client_id(&self) -> Option<i32> {
1966 self.client_id
1967 }
1968}
1969
1970impl TDMessageContent for MessageExpiredPhoto {}
1971
1972impl MessageExpiredPhoto {
1973 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
1974 Ok(serde_json::from_str(json.as_ref())?)
1975 }
1976 pub fn builder() -> MessageExpiredPhotoBuilder {
1977 let mut inner = MessageExpiredPhoto::default();
1978 inner.extra = Some(Uuid::new_v4().to_string());
1979
1980 MessageExpiredPhotoBuilder { inner }
1981 }
1982}
1983
1984#[doc(hidden)]
1985pub struct MessageExpiredPhotoBuilder {
1986 inner: MessageExpiredPhoto,
1987}
1988
1989#[deprecated]
1990pub type RTDMessageExpiredPhotoBuilder = MessageExpiredPhotoBuilder;
1991
1992impl MessageExpiredPhotoBuilder {
1993 pub fn build(&self) -> MessageExpiredPhoto {
1994 self.inner.clone()
1995 }
1996}
1997
1998impl AsRef<MessageExpiredPhoto> for MessageExpiredPhoto {
1999 fn as_ref(&self) -> &MessageExpiredPhoto {
2000 self
2001 }
2002}
2003
2004impl AsRef<MessageExpiredPhoto> for MessageExpiredPhotoBuilder {
2005 fn as_ref(&self) -> &MessageExpiredPhoto {
2006 &self.inner
2007 }
2008}
2009
2010#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2012pub struct MessageExpiredVideo {
2013 #[doc(hidden)]
2014 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
2015 extra: Option<String>,
2016 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
2017 client_id: Option<i32>,
2018}
2019
2020impl RObject for MessageExpiredVideo {
2021 #[doc(hidden)]
2022 fn extra(&self) -> Option<&str> {
2023 self.extra.as_deref()
2024 }
2025 #[doc(hidden)]
2026 fn client_id(&self) -> Option<i32> {
2027 self.client_id
2028 }
2029}
2030
2031impl TDMessageContent for MessageExpiredVideo {}
2032
2033impl MessageExpiredVideo {
2034 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
2035 Ok(serde_json::from_str(json.as_ref())?)
2036 }
2037 pub fn builder() -> MessageExpiredVideoBuilder {
2038 let mut inner = MessageExpiredVideo::default();
2039 inner.extra = Some(Uuid::new_v4().to_string());
2040
2041 MessageExpiredVideoBuilder { inner }
2042 }
2043}
2044
2045#[doc(hidden)]
2046pub struct MessageExpiredVideoBuilder {
2047 inner: MessageExpiredVideo,
2048}
2049
2050#[deprecated]
2051pub type RTDMessageExpiredVideoBuilder = MessageExpiredVideoBuilder;
2052
2053impl MessageExpiredVideoBuilder {
2054 pub fn build(&self) -> MessageExpiredVideo {
2055 self.inner.clone()
2056 }
2057}
2058
2059impl AsRef<MessageExpiredVideo> for MessageExpiredVideo {
2060 fn as_ref(&self) -> &MessageExpiredVideo {
2061 self
2062 }
2063}
2064
2065impl AsRef<MessageExpiredVideo> for MessageExpiredVideoBuilder {
2066 fn as_ref(&self) -> &MessageExpiredVideo {
2067 &self.inner
2068 }
2069}
2070
2071#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2073pub struct MessageGame {
2074 #[doc(hidden)]
2075 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
2076 extra: Option<String>,
2077 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
2078 client_id: Option<i32>,
2079 game: Game,
2081}
2082
2083impl RObject for MessageGame {
2084 #[doc(hidden)]
2085 fn extra(&self) -> Option<&str> {
2086 self.extra.as_deref()
2087 }
2088 #[doc(hidden)]
2089 fn client_id(&self) -> Option<i32> {
2090 self.client_id
2091 }
2092}
2093
2094impl TDMessageContent for MessageGame {}
2095
2096impl MessageGame {
2097 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
2098 Ok(serde_json::from_str(json.as_ref())?)
2099 }
2100 pub fn builder() -> MessageGameBuilder {
2101 let mut inner = MessageGame::default();
2102 inner.extra = Some(Uuid::new_v4().to_string());
2103
2104 MessageGameBuilder { inner }
2105 }
2106
2107 pub fn game(&self) -> &Game {
2108 &self.game
2109 }
2110}
2111
2112#[doc(hidden)]
2113pub struct MessageGameBuilder {
2114 inner: MessageGame,
2115}
2116
2117#[deprecated]
2118pub type RTDMessageGameBuilder = MessageGameBuilder;
2119
2120impl MessageGameBuilder {
2121 pub fn build(&self) -> MessageGame {
2122 self.inner.clone()
2123 }
2124
2125 pub fn game<T: AsRef<Game>>(&mut self, game: T) -> &mut Self {
2126 self.inner.game = game.as_ref().clone();
2127 self
2128 }
2129}
2130
2131impl AsRef<MessageGame> for MessageGame {
2132 fn as_ref(&self) -> &MessageGame {
2133 self
2134 }
2135}
2136
2137impl AsRef<MessageGame> for MessageGameBuilder {
2138 fn as_ref(&self) -> &MessageGame {
2139 &self.inner
2140 }
2141}
2142
2143#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2145pub struct MessageGameScore {
2146 #[doc(hidden)]
2147 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
2148 extra: Option<String>,
2149 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
2150 client_id: Option<i32>,
2151 #[serde(default)]
2154 game_message_id: i64,
2155 #[serde(
2158 deserialize_with = "super::_common::number_from_string",
2159 serialize_with = "super::_common::string_to_number"
2160 )]
2161 #[serde(default)]
2162 game_id: i64,
2163 #[serde(default)]
2166 score: i32,
2167}
2168
2169impl RObject for MessageGameScore {
2170 #[doc(hidden)]
2171 fn extra(&self) -> Option<&str> {
2172 self.extra.as_deref()
2173 }
2174 #[doc(hidden)]
2175 fn client_id(&self) -> Option<i32> {
2176 self.client_id
2177 }
2178}
2179
2180impl TDMessageContent for MessageGameScore {}
2181
2182impl MessageGameScore {
2183 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
2184 Ok(serde_json::from_str(json.as_ref())?)
2185 }
2186 pub fn builder() -> MessageGameScoreBuilder {
2187 let mut inner = MessageGameScore::default();
2188 inner.extra = Some(Uuid::new_v4().to_string());
2189
2190 MessageGameScoreBuilder { inner }
2191 }
2192
2193 pub fn game_message_id(&self) -> i64 {
2194 self.game_message_id
2195 }
2196
2197 pub fn game_id(&self) -> i64 {
2198 self.game_id
2199 }
2200
2201 pub fn score(&self) -> i32 {
2202 self.score
2203 }
2204}
2205
2206#[doc(hidden)]
2207pub struct MessageGameScoreBuilder {
2208 inner: MessageGameScore,
2209}
2210
2211#[deprecated]
2212pub type RTDMessageGameScoreBuilder = MessageGameScoreBuilder;
2213
2214impl MessageGameScoreBuilder {
2215 pub fn build(&self) -> MessageGameScore {
2216 self.inner.clone()
2217 }
2218
2219 pub fn game_message_id(&mut self, game_message_id: i64) -> &mut Self {
2220 self.inner.game_message_id = game_message_id;
2221 self
2222 }
2223
2224 pub fn game_id(&mut self, game_id: i64) -> &mut Self {
2225 self.inner.game_id = game_id;
2226 self
2227 }
2228
2229 pub fn score(&mut self, score: i32) -> &mut Self {
2230 self.inner.score = score;
2231 self
2232 }
2233}
2234
2235impl AsRef<MessageGameScore> for MessageGameScore {
2236 fn as_ref(&self) -> &MessageGameScore {
2237 self
2238 }
2239}
2240
2241impl AsRef<MessageGameScore> for MessageGameScoreBuilder {
2242 fn as_ref(&self) -> &MessageGameScore {
2243 &self.inner
2244 }
2245}
2246
2247#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2249pub struct MessageInviteVideoChatParticipants {
2250 #[doc(hidden)]
2251 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
2252 extra: Option<String>,
2253 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
2254 client_id: Option<i32>,
2255 #[serde(default)]
2258 group_call_id: i32,
2259 #[serde(default)]
2262 user_ids: Vec<i64>,
2263}
2264
2265impl RObject for MessageInviteVideoChatParticipants {
2266 #[doc(hidden)]
2267 fn extra(&self) -> Option<&str> {
2268 self.extra.as_deref()
2269 }
2270 #[doc(hidden)]
2271 fn client_id(&self) -> Option<i32> {
2272 self.client_id
2273 }
2274}
2275
2276impl TDMessageContent for MessageInviteVideoChatParticipants {}
2277
2278impl MessageInviteVideoChatParticipants {
2279 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
2280 Ok(serde_json::from_str(json.as_ref())?)
2281 }
2282 pub fn builder() -> MessageInviteVideoChatParticipantsBuilder {
2283 let mut inner = MessageInviteVideoChatParticipants::default();
2284 inner.extra = Some(Uuid::new_v4().to_string());
2285
2286 MessageInviteVideoChatParticipantsBuilder { inner }
2287 }
2288
2289 pub fn group_call_id(&self) -> i32 {
2290 self.group_call_id
2291 }
2292
2293 pub fn user_ids(&self) -> &Vec<i64> {
2294 &self.user_ids
2295 }
2296}
2297
2298#[doc(hidden)]
2299pub struct MessageInviteVideoChatParticipantsBuilder {
2300 inner: MessageInviteVideoChatParticipants,
2301}
2302
2303#[deprecated]
2304pub type RTDMessageInviteVideoChatParticipantsBuilder = MessageInviteVideoChatParticipantsBuilder;
2305
2306impl MessageInviteVideoChatParticipantsBuilder {
2307 pub fn build(&self) -> MessageInviteVideoChatParticipants {
2308 self.inner.clone()
2309 }
2310
2311 pub fn group_call_id(&mut self, group_call_id: i32) -> &mut Self {
2312 self.inner.group_call_id = group_call_id;
2313 self
2314 }
2315
2316 pub fn user_ids(&mut self, user_ids: Vec<i64>) -> &mut Self {
2317 self.inner.user_ids = user_ids;
2318 self
2319 }
2320}
2321
2322impl AsRef<MessageInviteVideoChatParticipants> for MessageInviteVideoChatParticipants {
2323 fn as_ref(&self) -> &MessageInviteVideoChatParticipants {
2324 self
2325 }
2326}
2327
2328impl AsRef<MessageInviteVideoChatParticipants> for MessageInviteVideoChatParticipantsBuilder {
2329 fn as_ref(&self) -> &MessageInviteVideoChatParticipants {
2330 &self.inner
2331 }
2332}
2333
2334#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2336pub struct MessageInvoice {
2337 #[doc(hidden)]
2338 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
2339 extra: Option<String>,
2340 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
2341 client_id: Option<i32>,
2342 #[serde(default)]
2345 title: String,
2346 #[serde(default)]
2349 description: String,
2350 photo: Option<Photo>,
2352 #[serde(default)]
2355 currency: String,
2356 #[serde(default)]
2359 total_amount: i64,
2360 #[serde(default)]
2363 start_parameter: String,
2364 #[serde(default)]
2367 is_test: bool,
2368 #[serde(default)]
2371 need_shipping_address: bool,
2372 #[serde(default)]
2375 receipt_message_id: i64,
2376}
2377
2378impl RObject for MessageInvoice {
2379 #[doc(hidden)]
2380 fn extra(&self) -> Option<&str> {
2381 self.extra.as_deref()
2382 }
2383 #[doc(hidden)]
2384 fn client_id(&self) -> Option<i32> {
2385 self.client_id
2386 }
2387}
2388
2389impl TDMessageContent for MessageInvoice {}
2390
2391impl MessageInvoice {
2392 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
2393 Ok(serde_json::from_str(json.as_ref())?)
2394 }
2395 pub fn builder() -> MessageInvoiceBuilder {
2396 let mut inner = MessageInvoice::default();
2397 inner.extra = Some(Uuid::new_v4().to_string());
2398
2399 MessageInvoiceBuilder { inner }
2400 }
2401
2402 pub fn title(&self) -> &String {
2403 &self.title
2404 }
2405
2406 pub fn description(&self) -> &String {
2407 &self.description
2408 }
2409
2410 pub fn photo(&self) -> &Option<Photo> {
2411 &self.photo
2412 }
2413
2414 pub fn currency(&self) -> &String {
2415 &self.currency
2416 }
2417
2418 pub fn total_amount(&self) -> i64 {
2419 self.total_amount
2420 }
2421
2422 pub fn start_parameter(&self) -> &String {
2423 &self.start_parameter
2424 }
2425
2426 pub fn is_test(&self) -> bool {
2427 self.is_test
2428 }
2429
2430 pub fn need_shipping_address(&self) -> bool {
2431 self.need_shipping_address
2432 }
2433
2434 pub fn receipt_message_id(&self) -> i64 {
2435 self.receipt_message_id
2436 }
2437}
2438
2439#[doc(hidden)]
2440pub struct MessageInvoiceBuilder {
2441 inner: MessageInvoice,
2442}
2443
2444#[deprecated]
2445pub type RTDMessageInvoiceBuilder = MessageInvoiceBuilder;
2446
2447impl MessageInvoiceBuilder {
2448 pub fn build(&self) -> MessageInvoice {
2449 self.inner.clone()
2450 }
2451
2452 pub fn title<T: AsRef<str>>(&mut self, title: T) -> &mut Self {
2453 self.inner.title = title.as_ref().to_string();
2454 self
2455 }
2456
2457 pub fn description<T: AsRef<str>>(&mut self, description: T) -> &mut Self {
2458 self.inner.description = description.as_ref().to_string();
2459 self
2460 }
2461
2462 pub fn photo<T: AsRef<Photo>>(&mut self, photo: T) -> &mut Self {
2463 self.inner.photo = Some(photo.as_ref().clone());
2464 self
2465 }
2466
2467 pub fn currency<T: AsRef<str>>(&mut self, currency: T) -> &mut Self {
2468 self.inner.currency = currency.as_ref().to_string();
2469 self
2470 }
2471
2472 pub fn total_amount(&mut self, total_amount: i64) -> &mut Self {
2473 self.inner.total_amount = total_amount;
2474 self
2475 }
2476
2477 pub fn start_parameter<T: AsRef<str>>(&mut self, start_parameter: T) -> &mut Self {
2478 self.inner.start_parameter = start_parameter.as_ref().to_string();
2479 self
2480 }
2481
2482 pub fn is_test(&mut self, is_test: bool) -> &mut Self {
2483 self.inner.is_test = is_test;
2484 self
2485 }
2486
2487 pub fn need_shipping_address(&mut self, need_shipping_address: bool) -> &mut Self {
2488 self.inner.need_shipping_address = need_shipping_address;
2489 self
2490 }
2491
2492 pub fn receipt_message_id(&mut self, receipt_message_id: i64) -> &mut Self {
2493 self.inner.receipt_message_id = receipt_message_id;
2494 self
2495 }
2496}
2497
2498impl AsRef<MessageInvoice> for MessageInvoice {
2499 fn as_ref(&self) -> &MessageInvoice {
2500 self
2501 }
2502}
2503
2504impl AsRef<MessageInvoice> for MessageInvoiceBuilder {
2505 fn as_ref(&self) -> &MessageInvoice {
2506 &self.inner
2507 }
2508}
2509
2510#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2512pub struct MessageLocation {
2513 #[doc(hidden)]
2514 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
2515 extra: Option<String>,
2516 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
2517 client_id: Option<i32>,
2518 location: Location,
2520 #[serde(default)]
2523 live_period: i32,
2524 #[serde(default)]
2527 expires_in: i32,
2528 #[serde(default)]
2531 heading: i32,
2532 #[serde(default)]
2535 proximity_alert_radius: i32,
2536}
2537
2538impl RObject for MessageLocation {
2539 #[doc(hidden)]
2540 fn extra(&self) -> Option<&str> {
2541 self.extra.as_deref()
2542 }
2543 #[doc(hidden)]
2544 fn client_id(&self) -> Option<i32> {
2545 self.client_id
2546 }
2547}
2548
2549impl TDMessageContent for MessageLocation {}
2550
2551impl MessageLocation {
2552 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
2553 Ok(serde_json::from_str(json.as_ref())?)
2554 }
2555 pub fn builder() -> MessageLocationBuilder {
2556 let mut inner = MessageLocation::default();
2557 inner.extra = Some(Uuid::new_v4().to_string());
2558
2559 MessageLocationBuilder { inner }
2560 }
2561
2562 pub fn location(&self) -> &Location {
2563 &self.location
2564 }
2565
2566 pub fn live_period(&self) -> i32 {
2567 self.live_period
2568 }
2569
2570 pub fn expires_in(&self) -> i32 {
2571 self.expires_in
2572 }
2573
2574 pub fn heading(&self) -> i32 {
2575 self.heading
2576 }
2577
2578 pub fn proximity_alert_radius(&self) -> i32 {
2579 self.proximity_alert_radius
2580 }
2581}
2582
2583#[doc(hidden)]
2584pub struct MessageLocationBuilder {
2585 inner: MessageLocation,
2586}
2587
2588#[deprecated]
2589pub type RTDMessageLocationBuilder = MessageLocationBuilder;
2590
2591impl MessageLocationBuilder {
2592 pub fn build(&self) -> MessageLocation {
2593 self.inner.clone()
2594 }
2595
2596 pub fn location<T: AsRef<Location>>(&mut self, location: T) -> &mut Self {
2597 self.inner.location = location.as_ref().clone();
2598 self
2599 }
2600
2601 pub fn live_period(&mut self, live_period: i32) -> &mut Self {
2602 self.inner.live_period = live_period;
2603 self
2604 }
2605
2606 pub fn expires_in(&mut self, expires_in: i32) -> &mut Self {
2607 self.inner.expires_in = expires_in;
2608 self
2609 }
2610
2611 pub fn heading(&mut self, heading: i32) -> &mut Self {
2612 self.inner.heading = heading;
2613 self
2614 }
2615
2616 pub fn proximity_alert_radius(&mut self, proximity_alert_radius: i32) -> &mut Self {
2617 self.inner.proximity_alert_radius = proximity_alert_radius;
2618 self
2619 }
2620}
2621
2622impl AsRef<MessageLocation> for MessageLocation {
2623 fn as_ref(&self) -> &MessageLocation {
2624 self
2625 }
2626}
2627
2628impl AsRef<MessageLocation> for MessageLocationBuilder {
2629 fn as_ref(&self) -> &MessageLocation {
2630 &self.inner
2631 }
2632}
2633
2634#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2636pub struct MessagePassportDataReceived {
2637 #[doc(hidden)]
2638 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
2639 extra: Option<String>,
2640 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
2641 client_id: Option<i32>,
2642 #[serde(default)]
2645 elements: Vec<EncryptedPassportElement>,
2646 credentials: EncryptedCredentials,
2648}
2649
2650impl RObject for MessagePassportDataReceived {
2651 #[doc(hidden)]
2652 fn extra(&self) -> Option<&str> {
2653 self.extra.as_deref()
2654 }
2655 #[doc(hidden)]
2656 fn client_id(&self) -> Option<i32> {
2657 self.client_id
2658 }
2659}
2660
2661impl TDMessageContent for MessagePassportDataReceived {}
2662
2663impl MessagePassportDataReceived {
2664 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
2665 Ok(serde_json::from_str(json.as_ref())?)
2666 }
2667 pub fn builder() -> MessagePassportDataReceivedBuilder {
2668 let mut inner = MessagePassportDataReceived::default();
2669 inner.extra = Some(Uuid::new_v4().to_string());
2670
2671 MessagePassportDataReceivedBuilder { inner }
2672 }
2673
2674 pub fn elements(&self) -> &Vec<EncryptedPassportElement> {
2675 &self.elements
2676 }
2677
2678 pub fn credentials(&self) -> &EncryptedCredentials {
2679 &self.credentials
2680 }
2681}
2682
2683#[doc(hidden)]
2684pub struct MessagePassportDataReceivedBuilder {
2685 inner: MessagePassportDataReceived,
2686}
2687
2688#[deprecated]
2689pub type RTDMessagePassportDataReceivedBuilder = MessagePassportDataReceivedBuilder;
2690
2691impl MessagePassportDataReceivedBuilder {
2692 pub fn build(&self) -> MessagePassportDataReceived {
2693 self.inner.clone()
2694 }
2695
2696 pub fn elements(&mut self, elements: Vec<EncryptedPassportElement>) -> &mut Self {
2697 self.inner.elements = elements;
2698 self
2699 }
2700
2701 pub fn credentials<T: AsRef<EncryptedCredentials>>(&mut self, credentials: T) -> &mut Self {
2702 self.inner.credentials = credentials.as_ref().clone();
2703 self
2704 }
2705}
2706
2707impl AsRef<MessagePassportDataReceived> for MessagePassportDataReceived {
2708 fn as_ref(&self) -> &MessagePassportDataReceived {
2709 self
2710 }
2711}
2712
2713impl AsRef<MessagePassportDataReceived> for MessagePassportDataReceivedBuilder {
2714 fn as_ref(&self) -> &MessagePassportDataReceived {
2715 &self.inner
2716 }
2717}
2718
2719#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2721pub struct MessagePassportDataSent {
2722 #[doc(hidden)]
2723 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
2724 extra: Option<String>,
2725 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
2726 client_id: Option<i32>,
2727 #[serde(default)]
2730 types: Vec<PassportElementType>,
2731}
2732
2733impl RObject for MessagePassportDataSent {
2734 #[doc(hidden)]
2735 fn extra(&self) -> Option<&str> {
2736 self.extra.as_deref()
2737 }
2738 #[doc(hidden)]
2739 fn client_id(&self) -> Option<i32> {
2740 self.client_id
2741 }
2742}
2743
2744impl TDMessageContent for MessagePassportDataSent {}
2745
2746impl MessagePassportDataSent {
2747 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
2748 Ok(serde_json::from_str(json.as_ref())?)
2749 }
2750 pub fn builder() -> MessagePassportDataSentBuilder {
2751 let mut inner = MessagePassportDataSent::default();
2752 inner.extra = Some(Uuid::new_v4().to_string());
2753
2754 MessagePassportDataSentBuilder { inner }
2755 }
2756
2757 pub fn types(&self) -> &Vec<PassportElementType> {
2758 &self.types
2759 }
2760}
2761
2762#[doc(hidden)]
2763pub struct MessagePassportDataSentBuilder {
2764 inner: MessagePassportDataSent,
2765}
2766
2767#[deprecated]
2768pub type RTDMessagePassportDataSentBuilder = MessagePassportDataSentBuilder;
2769
2770impl MessagePassportDataSentBuilder {
2771 pub fn build(&self) -> MessagePassportDataSent {
2772 self.inner.clone()
2773 }
2774
2775 pub fn types(&mut self, types: Vec<PassportElementType>) -> &mut Self {
2776 self.inner.types = types;
2777 self
2778 }
2779}
2780
2781impl AsRef<MessagePassportDataSent> for MessagePassportDataSent {
2782 fn as_ref(&self) -> &MessagePassportDataSent {
2783 self
2784 }
2785}
2786
2787impl AsRef<MessagePassportDataSent> for MessagePassportDataSentBuilder {
2788 fn as_ref(&self) -> &MessagePassportDataSent {
2789 &self.inner
2790 }
2791}
2792
2793#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2795pub struct MessagePaymentSuccessful {
2796 #[doc(hidden)]
2797 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
2798 extra: Option<String>,
2799 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
2800 client_id: Option<i32>,
2801 #[serde(default)]
2804 invoice_chat_id: i64,
2805 #[serde(default)]
2808 invoice_message_id: i64,
2809 #[serde(default)]
2812 currency: String,
2813 #[serde(default)]
2816 total_amount: i64,
2817}
2818
2819impl RObject for MessagePaymentSuccessful {
2820 #[doc(hidden)]
2821 fn extra(&self) -> Option<&str> {
2822 self.extra.as_deref()
2823 }
2824 #[doc(hidden)]
2825 fn client_id(&self) -> Option<i32> {
2826 self.client_id
2827 }
2828}
2829
2830impl TDMessageContent for MessagePaymentSuccessful {}
2831
2832impl MessagePaymentSuccessful {
2833 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
2834 Ok(serde_json::from_str(json.as_ref())?)
2835 }
2836 pub fn builder() -> MessagePaymentSuccessfulBuilder {
2837 let mut inner = MessagePaymentSuccessful::default();
2838 inner.extra = Some(Uuid::new_v4().to_string());
2839
2840 MessagePaymentSuccessfulBuilder { inner }
2841 }
2842
2843 pub fn invoice_chat_id(&self) -> i64 {
2844 self.invoice_chat_id
2845 }
2846
2847 pub fn invoice_message_id(&self) -> i64 {
2848 self.invoice_message_id
2849 }
2850
2851 pub fn currency(&self) -> &String {
2852 &self.currency
2853 }
2854
2855 pub fn total_amount(&self) -> i64 {
2856 self.total_amount
2857 }
2858}
2859
2860#[doc(hidden)]
2861pub struct MessagePaymentSuccessfulBuilder {
2862 inner: MessagePaymentSuccessful,
2863}
2864
2865#[deprecated]
2866pub type RTDMessagePaymentSuccessfulBuilder = MessagePaymentSuccessfulBuilder;
2867
2868impl MessagePaymentSuccessfulBuilder {
2869 pub fn build(&self) -> MessagePaymentSuccessful {
2870 self.inner.clone()
2871 }
2872
2873 pub fn invoice_chat_id(&mut self, invoice_chat_id: i64) -> &mut Self {
2874 self.inner.invoice_chat_id = invoice_chat_id;
2875 self
2876 }
2877
2878 pub fn invoice_message_id(&mut self, invoice_message_id: i64) -> &mut Self {
2879 self.inner.invoice_message_id = invoice_message_id;
2880 self
2881 }
2882
2883 pub fn currency<T: AsRef<str>>(&mut self, currency: T) -> &mut Self {
2884 self.inner.currency = currency.as_ref().to_string();
2885 self
2886 }
2887
2888 pub fn total_amount(&mut self, total_amount: i64) -> &mut Self {
2889 self.inner.total_amount = total_amount;
2890 self
2891 }
2892}
2893
2894impl AsRef<MessagePaymentSuccessful> for MessagePaymentSuccessful {
2895 fn as_ref(&self) -> &MessagePaymentSuccessful {
2896 self
2897 }
2898}
2899
2900impl AsRef<MessagePaymentSuccessful> for MessagePaymentSuccessfulBuilder {
2901 fn as_ref(&self) -> &MessagePaymentSuccessful {
2902 &self.inner
2903 }
2904}
2905
2906#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2908pub struct MessagePaymentSuccessfulBot {
2909 #[doc(hidden)]
2910 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
2911 extra: Option<String>,
2912 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
2913 client_id: Option<i32>,
2914 #[serde(default)]
2917 currency: String,
2918 #[serde(default)]
2921 total_amount: i64,
2922 #[serde(default)]
2925 invoice_payload: String,
2926 #[serde(default)]
2929 shipping_option_id: String,
2930 order_info: Option<OrderInfo>,
2932 #[serde(default)]
2935 telegram_payment_charge_id: String,
2936 #[serde(default)]
2939 provider_payment_charge_id: String,
2940}
2941
2942impl RObject for MessagePaymentSuccessfulBot {
2943 #[doc(hidden)]
2944 fn extra(&self) -> Option<&str> {
2945 self.extra.as_deref()
2946 }
2947 #[doc(hidden)]
2948 fn client_id(&self) -> Option<i32> {
2949 self.client_id
2950 }
2951}
2952
2953impl TDMessageContent for MessagePaymentSuccessfulBot {}
2954
2955impl MessagePaymentSuccessfulBot {
2956 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
2957 Ok(serde_json::from_str(json.as_ref())?)
2958 }
2959 pub fn builder() -> MessagePaymentSuccessfulBotBuilder {
2960 let mut inner = MessagePaymentSuccessfulBot::default();
2961 inner.extra = Some(Uuid::new_v4().to_string());
2962
2963 MessagePaymentSuccessfulBotBuilder { inner }
2964 }
2965
2966 pub fn currency(&self) -> &String {
2967 &self.currency
2968 }
2969
2970 pub fn total_amount(&self) -> i64 {
2971 self.total_amount
2972 }
2973
2974 pub fn invoice_payload(&self) -> &String {
2975 &self.invoice_payload
2976 }
2977
2978 pub fn shipping_option_id(&self) -> &String {
2979 &self.shipping_option_id
2980 }
2981
2982 pub fn order_info(&self) -> &Option<OrderInfo> {
2983 &self.order_info
2984 }
2985
2986 pub fn telegram_payment_charge_id(&self) -> &String {
2987 &self.telegram_payment_charge_id
2988 }
2989
2990 pub fn provider_payment_charge_id(&self) -> &String {
2991 &self.provider_payment_charge_id
2992 }
2993}
2994
2995#[doc(hidden)]
2996pub struct MessagePaymentSuccessfulBotBuilder {
2997 inner: MessagePaymentSuccessfulBot,
2998}
2999
3000#[deprecated]
3001pub type RTDMessagePaymentSuccessfulBotBuilder = MessagePaymentSuccessfulBotBuilder;
3002
3003impl MessagePaymentSuccessfulBotBuilder {
3004 pub fn build(&self) -> MessagePaymentSuccessfulBot {
3005 self.inner.clone()
3006 }
3007
3008 pub fn currency<T: AsRef<str>>(&mut self, currency: T) -> &mut Self {
3009 self.inner.currency = currency.as_ref().to_string();
3010 self
3011 }
3012
3013 pub fn total_amount(&mut self, total_amount: i64) -> &mut Self {
3014 self.inner.total_amount = total_amount;
3015 self
3016 }
3017
3018 pub fn invoice_payload<T: AsRef<str>>(&mut self, invoice_payload: T) -> &mut Self {
3019 self.inner.invoice_payload = invoice_payload.as_ref().to_string();
3020 self
3021 }
3022
3023 pub fn shipping_option_id<T: AsRef<str>>(&mut self, shipping_option_id: T) -> &mut Self {
3024 self.inner.shipping_option_id = shipping_option_id.as_ref().to_string();
3025 self
3026 }
3027
3028 pub fn order_info<T: AsRef<OrderInfo>>(&mut self, order_info: T) -> &mut Self {
3029 self.inner.order_info = Some(order_info.as_ref().clone());
3030 self
3031 }
3032
3033 pub fn telegram_payment_charge_id<T: AsRef<str>>(
3034 &mut self,
3035 telegram_payment_charge_id: T,
3036 ) -> &mut Self {
3037 self.inner.telegram_payment_charge_id = telegram_payment_charge_id.as_ref().to_string();
3038 self
3039 }
3040
3041 pub fn provider_payment_charge_id<T: AsRef<str>>(
3042 &mut self,
3043 provider_payment_charge_id: T,
3044 ) -> &mut Self {
3045 self.inner.provider_payment_charge_id = provider_payment_charge_id.as_ref().to_string();
3046 self
3047 }
3048}
3049
3050impl AsRef<MessagePaymentSuccessfulBot> for MessagePaymentSuccessfulBot {
3051 fn as_ref(&self) -> &MessagePaymentSuccessfulBot {
3052 self
3053 }
3054}
3055
3056impl AsRef<MessagePaymentSuccessfulBot> for MessagePaymentSuccessfulBotBuilder {
3057 fn as_ref(&self) -> &MessagePaymentSuccessfulBot {
3058 &self.inner
3059 }
3060}
3061
3062#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3064pub struct MessagePhoto {
3065 #[doc(hidden)]
3066 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
3067 extra: Option<String>,
3068 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
3069 client_id: Option<i32>,
3070 photo: Photo,
3072 caption: FormattedText,
3074 #[serde(default)]
3077 is_secret: bool,
3078}
3079
3080impl RObject for MessagePhoto {
3081 #[doc(hidden)]
3082 fn extra(&self) -> Option<&str> {
3083 self.extra.as_deref()
3084 }
3085 #[doc(hidden)]
3086 fn client_id(&self) -> Option<i32> {
3087 self.client_id
3088 }
3089}
3090
3091impl TDMessageContent for MessagePhoto {}
3092
3093impl MessagePhoto {
3094 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
3095 Ok(serde_json::from_str(json.as_ref())?)
3096 }
3097 pub fn builder() -> MessagePhotoBuilder {
3098 let mut inner = MessagePhoto::default();
3099 inner.extra = Some(Uuid::new_v4().to_string());
3100
3101 MessagePhotoBuilder { inner }
3102 }
3103
3104 pub fn photo(&self) -> &Photo {
3105 &self.photo
3106 }
3107
3108 pub fn caption(&self) -> &FormattedText {
3109 &self.caption
3110 }
3111
3112 pub fn is_secret(&self) -> bool {
3113 self.is_secret
3114 }
3115}
3116
3117#[doc(hidden)]
3118pub struct MessagePhotoBuilder {
3119 inner: MessagePhoto,
3120}
3121
3122#[deprecated]
3123pub type RTDMessagePhotoBuilder = MessagePhotoBuilder;
3124
3125impl MessagePhotoBuilder {
3126 pub fn build(&self) -> MessagePhoto {
3127 self.inner.clone()
3128 }
3129
3130 pub fn photo<T: AsRef<Photo>>(&mut self, photo: T) -> &mut Self {
3131 self.inner.photo = photo.as_ref().clone();
3132 self
3133 }
3134
3135 pub fn caption<T: AsRef<FormattedText>>(&mut self, caption: T) -> &mut Self {
3136 self.inner.caption = caption.as_ref().clone();
3137 self
3138 }
3139
3140 pub fn is_secret(&mut self, is_secret: bool) -> &mut Self {
3141 self.inner.is_secret = is_secret;
3142 self
3143 }
3144}
3145
3146impl AsRef<MessagePhoto> for MessagePhoto {
3147 fn as_ref(&self) -> &MessagePhoto {
3148 self
3149 }
3150}
3151
3152impl AsRef<MessagePhoto> for MessagePhotoBuilder {
3153 fn as_ref(&self) -> &MessagePhoto {
3154 &self.inner
3155 }
3156}
3157
3158#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3160pub struct MessagePinMessage {
3161 #[doc(hidden)]
3162 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
3163 extra: Option<String>,
3164 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
3165 client_id: Option<i32>,
3166 #[serde(default)]
3169 message_id: i64,
3170}
3171
3172impl RObject for MessagePinMessage {
3173 #[doc(hidden)]
3174 fn extra(&self) -> Option<&str> {
3175 self.extra.as_deref()
3176 }
3177 #[doc(hidden)]
3178 fn client_id(&self) -> Option<i32> {
3179 self.client_id
3180 }
3181}
3182
3183impl TDMessageContent for MessagePinMessage {}
3184
3185impl MessagePinMessage {
3186 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
3187 Ok(serde_json::from_str(json.as_ref())?)
3188 }
3189 pub fn builder() -> MessagePinMessageBuilder {
3190 let mut inner = MessagePinMessage::default();
3191 inner.extra = Some(Uuid::new_v4().to_string());
3192
3193 MessagePinMessageBuilder { inner }
3194 }
3195
3196 pub fn message_id(&self) -> i64 {
3197 self.message_id
3198 }
3199}
3200
3201#[doc(hidden)]
3202pub struct MessagePinMessageBuilder {
3203 inner: MessagePinMessage,
3204}
3205
3206#[deprecated]
3207pub type RTDMessagePinMessageBuilder = MessagePinMessageBuilder;
3208
3209impl MessagePinMessageBuilder {
3210 pub fn build(&self) -> MessagePinMessage {
3211 self.inner.clone()
3212 }
3213
3214 pub fn message_id(&mut self, message_id: i64) -> &mut Self {
3215 self.inner.message_id = message_id;
3216 self
3217 }
3218}
3219
3220impl AsRef<MessagePinMessage> for MessagePinMessage {
3221 fn as_ref(&self) -> &MessagePinMessage {
3222 self
3223 }
3224}
3225
3226impl AsRef<MessagePinMessage> for MessagePinMessageBuilder {
3227 fn as_ref(&self) -> &MessagePinMessage {
3228 &self.inner
3229 }
3230}
3231
3232#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3234pub struct MessagePoll {
3235 #[doc(hidden)]
3236 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
3237 extra: Option<String>,
3238 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
3239 client_id: Option<i32>,
3240 poll: Poll,
3242}
3243
3244impl RObject for MessagePoll {
3245 #[doc(hidden)]
3246 fn extra(&self) -> Option<&str> {
3247 self.extra.as_deref()
3248 }
3249 #[doc(hidden)]
3250 fn client_id(&self) -> Option<i32> {
3251 self.client_id
3252 }
3253}
3254
3255impl TDMessageContent for MessagePoll {}
3256
3257impl MessagePoll {
3258 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
3259 Ok(serde_json::from_str(json.as_ref())?)
3260 }
3261 pub fn builder() -> MessagePollBuilder {
3262 let mut inner = MessagePoll::default();
3263 inner.extra = Some(Uuid::new_v4().to_string());
3264
3265 MessagePollBuilder { inner }
3266 }
3267
3268 pub fn poll(&self) -> &Poll {
3269 &self.poll
3270 }
3271}
3272
3273#[doc(hidden)]
3274pub struct MessagePollBuilder {
3275 inner: MessagePoll,
3276}
3277
3278#[deprecated]
3279pub type RTDMessagePollBuilder = MessagePollBuilder;
3280
3281impl MessagePollBuilder {
3282 pub fn build(&self) -> MessagePoll {
3283 self.inner.clone()
3284 }
3285
3286 pub fn poll<T: AsRef<Poll>>(&mut self, poll: T) -> &mut Self {
3287 self.inner.poll = poll.as_ref().clone();
3288 self
3289 }
3290}
3291
3292impl AsRef<MessagePoll> for MessagePoll {
3293 fn as_ref(&self) -> &MessagePoll {
3294 self
3295 }
3296}
3297
3298impl AsRef<MessagePoll> for MessagePollBuilder {
3299 fn as_ref(&self) -> &MessagePoll {
3300 &self.inner
3301 }
3302}
3303
3304#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3306pub struct MessageProximityAlertTriggered {
3307 #[doc(hidden)]
3308 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
3309 extra: Option<String>,
3310 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
3311 client_id: Option<i32>,
3312 #[serde(skip_serializing_if = "MessageSender::_is_default")]
3315 traveler_id: MessageSender,
3316 #[serde(skip_serializing_if = "MessageSender::_is_default")]
3319 watcher_id: MessageSender,
3320 #[serde(default)]
3323 distance: i32,
3324}
3325
3326impl RObject for MessageProximityAlertTriggered {
3327 #[doc(hidden)]
3328 fn extra(&self) -> Option<&str> {
3329 self.extra.as_deref()
3330 }
3331 #[doc(hidden)]
3332 fn client_id(&self) -> Option<i32> {
3333 self.client_id
3334 }
3335}
3336
3337impl TDMessageContent for MessageProximityAlertTriggered {}
3338
3339impl MessageProximityAlertTriggered {
3340 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
3341 Ok(serde_json::from_str(json.as_ref())?)
3342 }
3343 pub fn builder() -> MessageProximityAlertTriggeredBuilder {
3344 let mut inner = MessageProximityAlertTriggered::default();
3345 inner.extra = Some(Uuid::new_v4().to_string());
3346
3347 MessageProximityAlertTriggeredBuilder { inner }
3348 }
3349
3350 pub fn traveler_id(&self) -> &MessageSender {
3351 &self.traveler_id
3352 }
3353
3354 pub fn watcher_id(&self) -> &MessageSender {
3355 &self.watcher_id
3356 }
3357
3358 pub fn distance(&self) -> i32 {
3359 self.distance
3360 }
3361}
3362
3363#[doc(hidden)]
3364pub struct MessageProximityAlertTriggeredBuilder {
3365 inner: MessageProximityAlertTriggered,
3366}
3367
3368#[deprecated]
3369pub type RTDMessageProximityAlertTriggeredBuilder = MessageProximityAlertTriggeredBuilder;
3370
3371impl MessageProximityAlertTriggeredBuilder {
3372 pub fn build(&self) -> MessageProximityAlertTriggered {
3373 self.inner.clone()
3374 }
3375
3376 pub fn traveler_id<T: AsRef<MessageSender>>(&mut self, traveler_id: T) -> &mut Self {
3377 self.inner.traveler_id = traveler_id.as_ref().clone();
3378 self
3379 }
3380
3381 pub fn watcher_id<T: AsRef<MessageSender>>(&mut self, watcher_id: T) -> &mut Self {
3382 self.inner.watcher_id = watcher_id.as_ref().clone();
3383 self
3384 }
3385
3386 pub fn distance(&mut self, distance: i32) -> &mut Self {
3387 self.inner.distance = distance;
3388 self
3389 }
3390}
3391
3392impl AsRef<MessageProximityAlertTriggered> for MessageProximityAlertTriggered {
3393 fn as_ref(&self) -> &MessageProximityAlertTriggered {
3394 self
3395 }
3396}
3397
3398impl AsRef<MessageProximityAlertTriggered> for MessageProximityAlertTriggeredBuilder {
3399 fn as_ref(&self) -> &MessageProximityAlertTriggered {
3400 &self.inner
3401 }
3402}
3403
3404#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3406pub struct MessageScreenshotTaken {
3407 #[doc(hidden)]
3408 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
3409 extra: Option<String>,
3410 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
3411 client_id: Option<i32>,
3412}
3413
3414impl RObject for MessageScreenshotTaken {
3415 #[doc(hidden)]
3416 fn extra(&self) -> Option<&str> {
3417 self.extra.as_deref()
3418 }
3419 #[doc(hidden)]
3420 fn client_id(&self) -> Option<i32> {
3421 self.client_id
3422 }
3423}
3424
3425impl TDMessageContent for MessageScreenshotTaken {}
3426
3427impl MessageScreenshotTaken {
3428 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
3429 Ok(serde_json::from_str(json.as_ref())?)
3430 }
3431 pub fn builder() -> MessageScreenshotTakenBuilder {
3432 let mut inner = MessageScreenshotTaken::default();
3433 inner.extra = Some(Uuid::new_v4().to_string());
3434
3435 MessageScreenshotTakenBuilder { inner }
3436 }
3437}
3438
3439#[doc(hidden)]
3440pub struct MessageScreenshotTakenBuilder {
3441 inner: MessageScreenshotTaken,
3442}
3443
3444#[deprecated]
3445pub type RTDMessageScreenshotTakenBuilder = MessageScreenshotTakenBuilder;
3446
3447impl MessageScreenshotTakenBuilder {
3448 pub fn build(&self) -> MessageScreenshotTaken {
3449 self.inner.clone()
3450 }
3451}
3452
3453impl AsRef<MessageScreenshotTaken> for MessageScreenshotTaken {
3454 fn as_ref(&self) -> &MessageScreenshotTaken {
3455 self
3456 }
3457}
3458
3459impl AsRef<MessageScreenshotTaken> for MessageScreenshotTakenBuilder {
3460 fn as_ref(&self) -> &MessageScreenshotTaken {
3461 &self.inner
3462 }
3463}
3464
3465#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3467pub struct MessageSticker {
3468 #[doc(hidden)]
3469 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
3470 extra: Option<String>,
3471 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
3472 client_id: Option<i32>,
3473 sticker: Sticker,
3475}
3476
3477impl RObject for MessageSticker {
3478 #[doc(hidden)]
3479 fn extra(&self) -> Option<&str> {
3480 self.extra.as_deref()
3481 }
3482 #[doc(hidden)]
3483 fn client_id(&self) -> Option<i32> {
3484 self.client_id
3485 }
3486}
3487
3488impl TDMessageContent for MessageSticker {}
3489
3490impl MessageSticker {
3491 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
3492 Ok(serde_json::from_str(json.as_ref())?)
3493 }
3494 pub fn builder() -> MessageStickerBuilder {
3495 let mut inner = MessageSticker::default();
3496 inner.extra = Some(Uuid::new_v4().to_string());
3497
3498 MessageStickerBuilder { inner }
3499 }
3500
3501 pub fn sticker(&self) -> &Sticker {
3502 &self.sticker
3503 }
3504}
3505
3506#[doc(hidden)]
3507pub struct MessageStickerBuilder {
3508 inner: MessageSticker,
3509}
3510
3511#[deprecated]
3512pub type RTDMessageStickerBuilder = MessageStickerBuilder;
3513
3514impl MessageStickerBuilder {
3515 pub fn build(&self) -> MessageSticker {
3516 self.inner.clone()
3517 }
3518
3519 pub fn sticker<T: AsRef<Sticker>>(&mut self, sticker: T) -> &mut Self {
3520 self.inner.sticker = sticker.as_ref().clone();
3521 self
3522 }
3523}
3524
3525impl AsRef<MessageSticker> for MessageSticker {
3526 fn as_ref(&self) -> &MessageSticker {
3527 self
3528 }
3529}
3530
3531impl AsRef<MessageSticker> for MessageStickerBuilder {
3532 fn as_ref(&self) -> &MessageSticker {
3533 &self.inner
3534 }
3535}
3536
3537#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3539pub struct MessageSupergroupChatCreate {
3540 #[doc(hidden)]
3541 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
3542 extra: Option<String>,
3543 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
3544 client_id: Option<i32>,
3545 #[serde(default)]
3548 title: String,
3549}
3550
3551impl RObject for MessageSupergroupChatCreate {
3552 #[doc(hidden)]
3553 fn extra(&self) -> Option<&str> {
3554 self.extra.as_deref()
3555 }
3556 #[doc(hidden)]
3557 fn client_id(&self) -> Option<i32> {
3558 self.client_id
3559 }
3560}
3561
3562impl TDMessageContent for MessageSupergroupChatCreate {}
3563
3564impl MessageSupergroupChatCreate {
3565 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
3566 Ok(serde_json::from_str(json.as_ref())?)
3567 }
3568 pub fn builder() -> MessageSupergroupChatCreateBuilder {
3569 let mut inner = MessageSupergroupChatCreate::default();
3570 inner.extra = Some(Uuid::new_v4().to_string());
3571
3572 MessageSupergroupChatCreateBuilder { inner }
3573 }
3574
3575 pub fn title(&self) -> &String {
3576 &self.title
3577 }
3578}
3579
3580#[doc(hidden)]
3581pub struct MessageSupergroupChatCreateBuilder {
3582 inner: MessageSupergroupChatCreate,
3583}
3584
3585#[deprecated]
3586pub type RTDMessageSupergroupChatCreateBuilder = MessageSupergroupChatCreateBuilder;
3587
3588impl MessageSupergroupChatCreateBuilder {
3589 pub fn build(&self) -> MessageSupergroupChatCreate {
3590 self.inner.clone()
3591 }
3592
3593 pub fn title<T: AsRef<str>>(&mut self, title: T) -> &mut Self {
3594 self.inner.title = title.as_ref().to_string();
3595 self
3596 }
3597}
3598
3599impl AsRef<MessageSupergroupChatCreate> for MessageSupergroupChatCreate {
3600 fn as_ref(&self) -> &MessageSupergroupChatCreate {
3601 self
3602 }
3603}
3604
3605impl AsRef<MessageSupergroupChatCreate> for MessageSupergroupChatCreateBuilder {
3606 fn as_ref(&self) -> &MessageSupergroupChatCreate {
3607 &self.inner
3608 }
3609}
3610
3611#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3613pub struct MessageText {
3614 #[doc(hidden)]
3615 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
3616 extra: Option<String>,
3617 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
3618 client_id: Option<i32>,
3619 text: FormattedText,
3621 web_page: Option<WebPage>,
3623}
3624
3625impl RObject for MessageText {
3626 #[doc(hidden)]
3627 fn extra(&self) -> Option<&str> {
3628 self.extra.as_deref()
3629 }
3630 #[doc(hidden)]
3631 fn client_id(&self) -> Option<i32> {
3632 self.client_id
3633 }
3634}
3635
3636impl TDMessageContent for MessageText {}
3637
3638impl MessageText {
3639 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
3640 Ok(serde_json::from_str(json.as_ref())?)
3641 }
3642 pub fn builder() -> MessageTextBuilder {
3643 let mut inner = MessageText::default();
3644 inner.extra = Some(Uuid::new_v4().to_string());
3645
3646 MessageTextBuilder { inner }
3647 }
3648
3649 pub fn text(&self) -> &FormattedText {
3650 &self.text
3651 }
3652
3653 pub fn web_page(&self) -> &Option<WebPage> {
3654 &self.web_page
3655 }
3656}
3657
3658#[doc(hidden)]
3659pub struct MessageTextBuilder {
3660 inner: MessageText,
3661}
3662
3663#[deprecated]
3664pub type RTDMessageTextBuilder = MessageTextBuilder;
3665
3666impl MessageTextBuilder {
3667 pub fn build(&self) -> MessageText {
3668 self.inner.clone()
3669 }
3670
3671 pub fn text<T: AsRef<FormattedText>>(&mut self, text: T) -> &mut Self {
3672 self.inner.text = text.as_ref().clone();
3673 self
3674 }
3675
3676 pub fn web_page<T: AsRef<WebPage>>(&mut self, web_page: T) -> &mut Self {
3677 self.inner.web_page = Some(web_page.as_ref().clone());
3678 self
3679 }
3680}
3681
3682impl AsRef<MessageText> for MessageText {
3683 fn as_ref(&self) -> &MessageText {
3684 self
3685 }
3686}
3687
3688impl AsRef<MessageText> for MessageTextBuilder {
3689 fn as_ref(&self) -> &MessageText {
3690 &self.inner
3691 }
3692}
3693
3694#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3696pub struct MessageUnsupported {
3697 #[doc(hidden)]
3698 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
3699 extra: Option<String>,
3700 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
3701 client_id: Option<i32>,
3702}
3703
3704impl RObject for MessageUnsupported {
3705 #[doc(hidden)]
3706 fn extra(&self) -> Option<&str> {
3707 self.extra.as_deref()
3708 }
3709 #[doc(hidden)]
3710 fn client_id(&self) -> Option<i32> {
3711 self.client_id
3712 }
3713}
3714
3715impl TDMessageContent for MessageUnsupported {}
3716
3717impl MessageUnsupported {
3718 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
3719 Ok(serde_json::from_str(json.as_ref())?)
3720 }
3721 pub fn builder() -> MessageUnsupportedBuilder {
3722 let mut inner = MessageUnsupported::default();
3723 inner.extra = Some(Uuid::new_v4().to_string());
3724
3725 MessageUnsupportedBuilder { inner }
3726 }
3727}
3728
3729#[doc(hidden)]
3730pub struct MessageUnsupportedBuilder {
3731 inner: MessageUnsupported,
3732}
3733
3734#[deprecated]
3735pub type RTDMessageUnsupportedBuilder = MessageUnsupportedBuilder;
3736
3737impl MessageUnsupportedBuilder {
3738 pub fn build(&self) -> MessageUnsupported {
3739 self.inner.clone()
3740 }
3741}
3742
3743impl AsRef<MessageUnsupported> for MessageUnsupported {
3744 fn as_ref(&self) -> &MessageUnsupported {
3745 self
3746 }
3747}
3748
3749impl AsRef<MessageUnsupported> for MessageUnsupportedBuilder {
3750 fn as_ref(&self) -> &MessageUnsupported {
3751 &self.inner
3752 }
3753}
3754
3755#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3757pub struct MessageVenue {
3758 #[doc(hidden)]
3759 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
3760 extra: Option<String>,
3761 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
3762 client_id: Option<i32>,
3763 venue: Venue,
3765}
3766
3767impl RObject for MessageVenue {
3768 #[doc(hidden)]
3769 fn extra(&self) -> Option<&str> {
3770 self.extra.as_deref()
3771 }
3772 #[doc(hidden)]
3773 fn client_id(&self) -> Option<i32> {
3774 self.client_id
3775 }
3776}
3777
3778impl TDMessageContent for MessageVenue {}
3779
3780impl MessageVenue {
3781 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
3782 Ok(serde_json::from_str(json.as_ref())?)
3783 }
3784 pub fn builder() -> MessageVenueBuilder {
3785 let mut inner = MessageVenue::default();
3786 inner.extra = Some(Uuid::new_v4().to_string());
3787
3788 MessageVenueBuilder { inner }
3789 }
3790
3791 pub fn venue(&self) -> &Venue {
3792 &self.venue
3793 }
3794}
3795
3796#[doc(hidden)]
3797pub struct MessageVenueBuilder {
3798 inner: MessageVenue,
3799}
3800
3801#[deprecated]
3802pub type RTDMessageVenueBuilder = MessageVenueBuilder;
3803
3804impl MessageVenueBuilder {
3805 pub fn build(&self) -> MessageVenue {
3806 self.inner.clone()
3807 }
3808
3809 pub fn venue<T: AsRef<Venue>>(&mut self, venue: T) -> &mut Self {
3810 self.inner.venue = venue.as_ref().clone();
3811 self
3812 }
3813}
3814
3815impl AsRef<MessageVenue> for MessageVenue {
3816 fn as_ref(&self) -> &MessageVenue {
3817 self
3818 }
3819}
3820
3821impl AsRef<MessageVenue> for MessageVenueBuilder {
3822 fn as_ref(&self) -> &MessageVenue {
3823 &self.inner
3824 }
3825}
3826
3827#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3829pub struct MessageVideo {
3830 #[doc(hidden)]
3831 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
3832 extra: Option<String>,
3833 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
3834 client_id: Option<i32>,
3835 video: Video,
3837 caption: FormattedText,
3839 #[serde(default)]
3842 is_secret: bool,
3843}
3844
3845impl RObject for MessageVideo {
3846 #[doc(hidden)]
3847 fn extra(&self) -> Option<&str> {
3848 self.extra.as_deref()
3849 }
3850 #[doc(hidden)]
3851 fn client_id(&self) -> Option<i32> {
3852 self.client_id
3853 }
3854}
3855
3856impl TDMessageContent for MessageVideo {}
3857
3858impl MessageVideo {
3859 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
3860 Ok(serde_json::from_str(json.as_ref())?)
3861 }
3862 pub fn builder() -> MessageVideoBuilder {
3863 let mut inner = MessageVideo::default();
3864 inner.extra = Some(Uuid::new_v4().to_string());
3865
3866 MessageVideoBuilder { inner }
3867 }
3868
3869 pub fn video(&self) -> &Video {
3870 &self.video
3871 }
3872
3873 pub fn caption(&self) -> &FormattedText {
3874 &self.caption
3875 }
3876
3877 pub fn is_secret(&self) -> bool {
3878 self.is_secret
3879 }
3880}
3881
3882#[doc(hidden)]
3883pub struct MessageVideoBuilder {
3884 inner: MessageVideo,
3885}
3886
3887#[deprecated]
3888pub type RTDMessageVideoBuilder = MessageVideoBuilder;
3889
3890impl MessageVideoBuilder {
3891 pub fn build(&self) -> MessageVideo {
3892 self.inner.clone()
3893 }
3894
3895 pub fn video<T: AsRef<Video>>(&mut self, video: T) -> &mut Self {
3896 self.inner.video = video.as_ref().clone();
3897 self
3898 }
3899
3900 pub fn caption<T: AsRef<FormattedText>>(&mut self, caption: T) -> &mut Self {
3901 self.inner.caption = caption.as_ref().clone();
3902 self
3903 }
3904
3905 pub fn is_secret(&mut self, is_secret: bool) -> &mut Self {
3906 self.inner.is_secret = is_secret;
3907 self
3908 }
3909}
3910
3911impl AsRef<MessageVideo> for MessageVideo {
3912 fn as_ref(&self) -> &MessageVideo {
3913 self
3914 }
3915}
3916
3917impl AsRef<MessageVideo> for MessageVideoBuilder {
3918 fn as_ref(&self) -> &MessageVideo {
3919 &self.inner
3920 }
3921}
3922
3923#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3925pub struct MessageVideoChatEnded {
3926 #[doc(hidden)]
3927 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
3928 extra: Option<String>,
3929 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
3930 client_id: Option<i32>,
3931 #[serde(default)]
3934 duration: i32,
3935}
3936
3937impl RObject for MessageVideoChatEnded {
3938 #[doc(hidden)]
3939 fn extra(&self) -> Option<&str> {
3940 self.extra.as_deref()
3941 }
3942 #[doc(hidden)]
3943 fn client_id(&self) -> Option<i32> {
3944 self.client_id
3945 }
3946}
3947
3948impl TDMessageContent for MessageVideoChatEnded {}
3949
3950impl MessageVideoChatEnded {
3951 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
3952 Ok(serde_json::from_str(json.as_ref())?)
3953 }
3954 pub fn builder() -> MessageVideoChatEndedBuilder {
3955 let mut inner = MessageVideoChatEnded::default();
3956 inner.extra = Some(Uuid::new_v4().to_string());
3957
3958 MessageVideoChatEndedBuilder { inner }
3959 }
3960
3961 pub fn duration(&self) -> i32 {
3962 self.duration
3963 }
3964}
3965
3966#[doc(hidden)]
3967pub struct MessageVideoChatEndedBuilder {
3968 inner: MessageVideoChatEnded,
3969}
3970
3971#[deprecated]
3972pub type RTDMessageVideoChatEndedBuilder = MessageVideoChatEndedBuilder;
3973
3974impl MessageVideoChatEndedBuilder {
3975 pub fn build(&self) -> MessageVideoChatEnded {
3976 self.inner.clone()
3977 }
3978
3979 pub fn duration(&mut self, duration: i32) -> &mut Self {
3980 self.inner.duration = duration;
3981 self
3982 }
3983}
3984
3985impl AsRef<MessageVideoChatEnded> for MessageVideoChatEnded {
3986 fn as_ref(&self) -> &MessageVideoChatEnded {
3987 self
3988 }
3989}
3990
3991impl AsRef<MessageVideoChatEnded> for MessageVideoChatEndedBuilder {
3992 fn as_ref(&self) -> &MessageVideoChatEnded {
3993 &self.inner
3994 }
3995}
3996
3997#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3999pub struct MessageVideoChatScheduled {
4000 #[doc(hidden)]
4001 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
4002 extra: Option<String>,
4003 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
4004 client_id: Option<i32>,
4005 #[serde(default)]
4008 group_call_id: i32,
4009 #[serde(default)]
4012 start_date: i32,
4013}
4014
4015impl RObject for MessageVideoChatScheduled {
4016 #[doc(hidden)]
4017 fn extra(&self) -> Option<&str> {
4018 self.extra.as_deref()
4019 }
4020 #[doc(hidden)]
4021 fn client_id(&self) -> Option<i32> {
4022 self.client_id
4023 }
4024}
4025
4026impl TDMessageContent for MessageVideoChatScheduled {}
4027
4028impl MessageVideoChatScheduled {
4029 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
4030 Ok(serde_json::from_str(json.as_ref())?)
4031 }
4032 pub fn builder() -> MessageVideoChatScheduledBuilder {
4033 let mut inner = MessageVideoChatScheduled::default();
4034 inner.extra = Some(Uuid::new_v4().to_string());
4035
4036 MessageVideoChatScheduledBuilder { inner }
4037 }
4038
4039 pub fn group_call_id(&self) -> i32 {
4040 self.group_call_id
4041 }
4042
4043 pub fn start_date(&self) -> i32 {
4044 self.start_date
4045 }
4046}
4047
4048#[doc(hidden)]
4049pub struct MessageVideoChatScheduledBuilder {
4050 inner: MessageVideoChatScheduled,
4051}
4052
4053#[deprecated]
4054pub type RTDMessageVideoChatScheduledBuilder = MessageVideoChatScheduledBuilder;
4055
4056impl MessageVideoChatScheduledBuilder {
4057 pub fn build(&self) -> MessageVideoChatScheduled {
4058 self.inner.clone()
4059 }
4060
4061 pub fn group_call_id(&mut self, group_call_id: i32) -> &mut Self {
4062 self.inner.group_call_id = group_call_id;
4063 self
4064 }
4065
4066 pub fn start_date(&mut self, start_date: i32) -> &mut Self {
4067 self.inner.start_date = start_date;
4068 self
4069 }
4070}
4071
4072impl AsRef<MessageVideoChatScheduled> for MessageVideoChatScheduled {
4073 fn as_ref(&self) -> &MessageVideoChatScheduled {
4074 self
4075 }
4076}
4077
4078impl AsRef<MessageVideoChatScheduled> for MessageVideoChatScheduledBuilder {
4079 fn as_ref(&self) -> &MessageVideoChatScheduled {
4080 &self.inner
4081 }
4082}
4083
4084#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4086pub struct MessageVideoChatStarted {
4087 #[doc(hidden)]
4088 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
4089 extra: Option<String>,
4090 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
4091 client_id: Option<i32>,
4092 #[serde(default)]
4095 group_call_id: i32,
4096}
4097
4098impl RObject for MessageVideoChatStarted {
4099 #[doc(hidden)]
4100 fn extra(&self) -> Option<&str> {
4101 self.extra.as_deref()
4102 }
4103 #[doc(hidden)]
4104 fn client_id(&self) -> Option<i32> {
4105 self.client_id
4106 }
4107}
4108
4109impl TDMessageContent for MessageVideoChatStarted {}
4110
4111impl MessageVideoChatStarted {
4112 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
4113 Ok(serde_json::from_str(json.as_ref())?)
4114 }
4115 pub fn builder() -> MessageVideoChatStartedBuilder {
4116 let mut inner = MessageVideoChatStarted::default();
4117 inner.extra = Some(Uuid::new_v4().to_string());
4118
4119 MessageVideoChatStartedBuilder { inner }
4120 }
4121
4122 pub fn group_call_id(&self) -> i32 {
4123 self.group_call_id
4124 }
4125}
4126
4127#[doc(hidden)]
4128pub struct MessageVideoChatStartedBuilder {
4129 inner: MessageVideoChatStarted,
4130}
4131
4132#[deprecated]
4133pub type RTDMessageVideoChatStartedBuilder = MessageVideoChatStartedBuilder;
4134
4135impl MessageVideoChatStartedBuilder {
4136 pub fn build(&self) -> MessageVideoChatStarted {
4137 self.inner.clone()
4138 }
4139
4140 pub fn group_call_id(&mut self, group_call_id: i32) -> &mut Self {
4141 self.inner.group_call_id = group_call_id;
4142 self
4143 }
4144}
4145
4146impl AsRef<MessageVideoChatStarted> for MessageVideoChatStarted {
4147 fn as_ref(&self) -> &MessageVideoChatStarted {
4148 self
4149 }
4150}
4151
4152impl AsRef<MessageVideoChatStarted> for MessageVideoChatStartedBuilder {
4153 fn as_ref(&self) -> &MessageVideoChatStarted {
4154 &self.inner
4155 }
4156}
4157
4158#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4160pub struct MessageVideoNote {
4161 #[doc(hidden)]
4162 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
4163 extra: Option<String>,
4164 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
4165 client_id: Option<i32>,
4166 video_note: VideoNote,
4168 #[serde(default)]
4171 is_viewed: bool,
4172 #[serde(default)]
4175 is_secret: bool,
4176}
4177
4178impl RObject for MessageVideoNote {
4179 #[doc(hidden)]
4180 fn extra(&self) -> Option<&str> {
4181 self.extra.as_deref()
4182 }
4183 #[doc(hidden)]
4184 fn client_id(&self) -> Option<i32> {
4185 self.client_id
4186 }
4187}
4188
4189impl TDMessageContent for MessageVideoNote {}
4190
4191impl MessageVideoNote {
4192 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
4193 Ok(serde_json::from_str(json.as_ref())?)
4194 }
4195 pub fn builder() -> MessageVideoNoteBuilder {
4196 let mut inner = MessageVideoNote::default();
4197 inner.extra = Some(Uuid::new_v4().to_string());
4198
4199 MessageVideoNoteBuilder { inner }
4200 }
4201
4202 pub fn video_note(&self) -> &VideoNote {
4203 &self.video_note
4204 }
4205
4206 pub fn is_viewed(&self) -> bool {
4207 self.is_viewed
4208 }
4209
4210 pub fn is_secret(&self) -> bool {
4211 self.is_secret
4212 }
4213}
4214
4215#[doc(hidden)]
4216pub struct MessageVideoNoteBuilder {
4217 inner: MessageVideoNote,
4218}
4219
4220#[deprecated]
4221pub type RTDMessageVideoNoteBuilder = MessageVideoNoteBuilder;
4222
4223impl MessageVideoNoteBuilder {
4224 pub fn build(&self) -> MessageVideoNote {
4225 self.inner.clone()
4226 }
4227
4228 pub fn video_note<T: AsRef<VideoNote>>(&mut self, video_note: T) -> &mut Self {
4229 self.inner.video_note = video_note.as_ref().clone();
4230 self
4231 }
4232
4233 pub fn is_viewed(&mut self, is_viewed: bool) -> &mut Self {
4234 self.inner.is_viewed = is_viewed;
4235 self
4236 }
4237
4238 pub fn is_secret(&mut self, is_secret: bool) -> &mut Self {
4239 self.inner.is_secret = is_secret;
4240 self
4241 }
4242}
4243
4244impl AsRef<MessageVideoNote> for MessageVideoNote {
4245 fn as_ref(&self) -> &MessageVideoNote {
4246 self
4247 }
4248}
4249
4250impl AsRef<MessageVideoNote> for MessageVideoNoteBuilder {
4251 fn as_ref(&self) -> &MessageVideoNote {
4252 &self.inner
4253 }
4254}
4255
4256#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4258pub struct MessageVoiceNote {
4259 #[doc(hidden)]
4260 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
4261 extra: Option<String>,
4262 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
4263 client_id: Option<i32>,
4264 voice_note: VoiceNote,
4266 caption: FormattedText,
4268 #[serde(default)]
4271 is_listened: bool,
4272}
4273
4274impl RObject for MessageVoiceNote {
4275 #[doc(hidden)]
4276 fn extra(&self) -> Option<&str> {
4277 self.extra.as_deref()
4278 }
4279 #[doc(hidden)]
4280 fn client_id(&self) -> Option<i32> {
4281 self.client_id
4282 }
4283}
4284
4285impl TDMessageContent for MessageVoiceNote {}
4286
4287impl MessageVoiceNote {
4288 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
4289 Ok(serde_json::from_str(json.as_ref())?)
4290 }
4291 pub fn builder() -> MessageVoiceNoteBuilder {
4292 let mut inner = MessageVoiceNote::default();
4293 inner.extra = Some(Uuid::new_v4().to_string());
4294
4295 MessageVoiceNoteBuilder { inner }
4296 }
4297
4298 pub fn voice_note(&self) -> &VoiceNote {
4299 &self.voice_note
4300 }
4301
4302 pub fn caption(&self) -> &FormattedText {
4303 &self.caption
4304 }
4305
4306 pub fn is_listened(&self) -> bool {
4307 self.is_listened
4308 }
4309}
4310
4311#[doc(hidden)]
4312pub struct MessageVoiceNoteBuilder {
4313 inner: MessageVoiceNote,
4314}
4315
4316#[deprecated]
4317pub type RTDMessageVoiceNoteBuilder = MessageVoiceNoteBuilder;
4318
4319impl MessageVoiceNoteBuilder {
4320 pub fn build(&self) -> MessageVoiceNote {
4321 self.inner.clone()
4322 }
4323
4324 pub fn voice_note<T: AsRef<VoiceNote>>(&mut self, voice_note: T) -> &mut Self {
4325 self.inner.voice_note = voice_note.as_ref().clone();
4326 self
4327 }
4328
4329 pub fn caption<T: AsRef<FormattedText>>(&mut self, caption: T) -> &mut Self {
4330 self.inner.caption = caption.as_ref().clone();
4331 self
4332 }
4333
4334 pub fn is_listened(&mut self, is_listened: bool) -> &mut Self {
4335 self.inner.is_listened = is_listened;
4336 self
4337 }
4338}
4339
4340impl AsRef<MessageVoiceNote> for MessageVoiceNote {
4341 fn as_ref(&self) -> &MessageVoiceNote {
4342 self
4343 }
4344}
4345
4346impl AsRef<MessageVoiceNote> for MessageVoiceNoteBuilder {
4347 fn as_ref(&self) -> &MessageVoiceNote {
4348 &self.inner
4349 }
4350}
4351
4352#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4354pub struct MessageWebsiteConnected {
4355 #[doc(hidden)]
4356 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
4357 extra: Option<String>,
4358 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
4359 client_id: Option<i32>,
4360 #[serde(default)]
4363 domain_name: String,
4364}
4365
4366impl RObject for MessageWebsiteConnected {
4367 #[doc(hidden)]
4368 fn extra(&self) -> Option<&str> {
4369 self.extra.as_deref()
4370 }
4371 #[doc(hidden)]
4372 fn client_id(&self) -> Option<i32> {
4373 self.client_id
4374 }
4375}
4376
4377impl TDMessageContent for MessageWebsiteConnected {}
4378
4379impl MessageWebsiteConnected {
4380 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
4381 Ok(serde_json::from_str(json.as_ref())?)
4382 }
4383 pub fn builder() -> MessageWebsiteConnectedBuilder {
4384 let mut inner = MessageWebsiteConnected::default();
4385 inner.extra = Some(Uuid::new_v4().to_string());
4386
4387 MessageWebsiteConnectedBuilder { inner }
4388 }
4389
4390 pub fn domain_name(&self) -> &String {
4391 &self.domain_name
4392 }
4393}
4394
4395#[doc(hidden)]
4396pub struct MessageWebsiteConnectedBuilder {
4397 inner: MessageWebsiteConnected,
4398}
4399
4400#[deprecated]
4401pub type RTDMessageWebsiteConnectedBuilder = MessageWebsiteConnectedBuilder;
4402
4403impl MessageWebsiteConnectedBuilder {
4404 pub fn build(&self) -> MessageWebsiteConnected {
4405 self.inner.clone()
4406 }
4407
4408 pub fn domain_name<T: AsRef<str>>(&mut self, domain_name: T) -> &mut Self {
4409 self.inner.domain_name = domain_name.as_ref().to_string();
4410 self
4411 }
4412}
4413
4414impl AsRef<MessageWebsiteConnected> for MessageWebsiteConnected {
4415 fn as_ref(&self) -> &MessageWebsiteConnected {
4416 self
4417 }
4418}
4419
4420impl AsRef<MessageWebsiteConnected> for MessageWebsiteConnectedBuilder {
4421 fn as_ref(&self) -> &MessageWebsiteConnected {
4422 &self.inner
4423 }
4424}