rust_tdlib/types/
suggested_action.rs1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5use std::fmt::Debug;
6
7pub trait TDSuggestedAction: Debug + RObject {}
9
10#[derive(Debug, Clone, Deserialize, Serialize, Default)]
12#[serde(tag = "@type")]
13pub enum SuggestedAction {
14 #[doc(hidden)]
15 #[default]
16 _Default,
17 #[serde(rename = "suggestedActionCheckPassword")]
19 CheckPassword(SuggestedActionCheckPassword),
20 #[serde(rename = "suggestedActionCheckPhoneNumber")]
22 CheckPhoneNumber(SuggestedActionCheckPhoneNumber),
23 #[serde(rename = "suggestedActionConvertToBroadcastGroup")]
25 ConvertToBroadcastGroup(SuggestedActionConvertToBroadcastGroup),
26 #[serde(rename = "suggestedActionEnableArchiveAndMuteNewChats")]
28 EnableArchiveAndMuteNewChats(SuggestedActionEnableArchiveAndMuteNewChats),
29 #[serde(rename = "suggestedActionSetPassword")]
31 SetPassword(SuggestedActionSetPassword),
32 #[serde(rename = "suggestedActionViewChecksHint")]
34 ViewChecksHint(SuggestedActionViewChecksHint),
35}
36
37impl RObject for SuggestedAction {
38 #[doc(hidden)]
39 fn extra(&self) -> Option<&str> {
40 match self {
41 SuggestedAction::CheckPassword(t) => t.extra(),
42 SuggestedAction::CheckPhoneNumber(t) => t.extra(),
43 SuggestedAction::ConvertToBroadcastGroup(t) => t.extra(),
44 SuggestedAction::EnableArchiveAndMuteNewChats(t) => t.extra(),
45 SuggestedAction::SetPassword(t) => t.extra(),
46 SuggestedAction::ViewChecksHint(t) => t.extra(),
47
48 _ => None,
49 }
50 }
51 #[doc(hidden)]
52 fn client_id(&self) -> Option<i32> {
53 match self {
54 SuggestedAction::CheckPassword(t) => t.client_id(),
55 SuggestedAction::CheckPhoneNumber(t) => t.client_id(),
56 SuggestedAction::ConvertToBroadcastGroup(t) => t.client_id(),
57 SuggestedAction::EnableArchiveAndMuteNewChats(t) => t.client_id(),
58 SuggestedAction::SetPassword(t) => t.client_id(),
59 SuggestedAction::ViewChecksHint(t) => t.client_id(),
60
61 _ => None,
62 }
63 }
64}
65
66impl SuggestedAction {
67 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
68 Ok(serde_json::from_str(json.as_ref())?)
69 }
70 #[doc(hidden)]
71 pub fn _is_default(&self) -> bool {
72 matches!(self, SuggestedAction::_Default)
73 }
74}
75
76impl AsRef<SuggestedAction> for SuggestedAction {
77 fn as_ref(&self) -> &SuggestedAction {
78 self
79 }
80}
81
82#[derive(Debug, Clone, Default, Serialize, Deserialize)]
84pub struct SuggestedActionCheckPassword {
85 #[doc(hidden)]
86 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
87 extra: Option<String>,
88 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
89 client_id: Option<i32>,
90}
91
92impl RObject for SuggestedActionCheckPassword {
93 #[doc(hidden)]
94 fn extra(&self) -> Option<&str> {
95 self.extra.as_deref()
96 }
97 #[doc(hidden)]
98 fn client_id(&self) -> Option<i32> {
99 self.client_id
100 }
101}
102
103impl TDSuggestedAction for SuggestedActionCheckPassword {}
104
105impl SuggestedActionCheckPassword {
106 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
107 Ok(serde_json::from_str(json.as_ref())?)
108 }
109 pub fn builder() -> SuggestedActionCheckPasswordBuilder {
110 let mut inner = SuggestedActionCheckPassword::default();
111 inner.extra = Some(Uuid::new_v4().to_string());
112
113 SuggestedActionCheckPasswordBuilder { inner }
114 }
115}
116
117#[doc(hidden)]
118pub struct SuggestedActionCheckPasswordBuilder {
119 inner: SuggestedActionCheckPassword,
120}
121
122#[deprecated]
123pub type RTDSuggestedActionCheckPasswordBuilder = SuggestedActionCheckPasswordBuilder;
124
125impl SuggestedActionCheckPasswordBuilder {
126 pub fn build(&self) -> SuggestedActionCheckPassword {
127 self.inner.clone()
128 }
129}
130
131impl AsRef<SuggestedActionCheckPassword> for SuggestedActionCheckPassword {
132 fn as_ref(&self) -> &SuggestedActionCheckPassword {
133 self
134 }
135}
136
137impl AsRef<SuggestedActionCheckPassword> for SuggestedActionCheckPasswordBuilder {
138 fn as_ref(&self) -> &SuggestedActionCheckPassword {
139 &self.inner
140 }
141}
142
143#[derive(Debug, Clone, Default, Serialize, Deserialize)]
145pub struct SuggestedActionCheckPhoneNumber {
146 #[doc(hidden)]
147 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
148 extra: Option<String>,
149 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
150 client_id: Option<i32>,
151}
152
153impl RObject for SuggestedActionCheckPhoneNumber {
154 #[doc(hidden)]
155 fn extra(&self) -> Option<&str> {
156 self.extra.as_deref()
157 }
158 #[doc(hidden)]
159 fn client_id(&self) -> Option<i32> {
160 self.client_id
161 }
162}
163
164impl TDSuggestedAction for SuggestedActionCheckPhoneNumber {}
165
166impl SuggestedActionCheckPhoneNumber {
167 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
168 Ok(serde_json::from_str(json.as_ref())?)
169 }
170 pub fn builder() -> SuggestedActionCheckPhoneNumberBuilder {
171 let mut inner = SuggestedActionCheckPhoneNumber::default();
172 inner.extra = Some(Uuid::new_v4().to_string());
173
174 SuggestedActionCheckPhoneNumberBuilder { inner }
175 }
176}
177
178#[doc(hidden)]
179pub struct SuggestedActionCheckPhoneNumberBuilder {
180 inner: SuggestedActionCheckPhoneNumber,
181}
182
183#[deprecated]
184pub type RTDSuggestedActionCheckPhoneNumberBuilder = SuggestedActionCheckPhoneNumberBuilder;
185
186impl SuggestedActionCheckPhoneNumberBuilder {
187 pub fn build(&self) -> SuggestedActionCheckPhoneNumber {
188 self.inner.clone()
189 }
190}
191
192impl AsRef<SuggestedActionCheckPhoneNumber> for SuggestedActionCheckPhoneNumber {
193 fn as_ref(&self) -> &SuggestedActionCheckPhoneNumber {
194 self
195 }
196}
197
198impl AsRef<SuggestedActionCheckPhoneNumber> for SuggestedActionCheckPhoneNumberBuilder {
199 fn as_ref(&self) -> &SuggestedActionCheckPhoneNumber {
200 &self.inner
201 }
202}
203
204#[derive(Debug, Clone, Default, Serialize, Deserialize)]
206pub struct SuggestedActionConvertToBroadcastGroup {
207 #[doc(hidden)]
208 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
209 extra: Option<String>,
210 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
211 client_id: Option<i32>,
212 #[serde(default)]
215 supergroup_id: i64,
216}
217
218impl RObject for SuggestedActionConvertToBroadcastGroup {
219 #[doc(hidden)]
220 fn extra(&self) -> Option<&str> {
221 self.extra.as_deref()
222 }
223 #[doc(hidden)]
224 fn client_id(&self) -> Option<i32> {
225 self.client_id
226 }
227}
228
229impl TDSuggestedAction for SuggestedActionConvertToBroadcastGroup {}
230
231impl SuggestedActionConvertToBroadcastGroup {
232 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
233 Ok(serde_json::from_str(json.as_ref())?)
234 }
235 pub fn builder() -> SuggestedActionConvertToBroadcastGroupBuilder {
236 let mut inner = SuggestedActionConvertToBroadcastGroup::default();
237 inner.extra = Some(Uuid::new_v4().to_string());
238
239 SuggestedActionConvertToBroadcastGroupBuilder { inner }
240 }
241
242 pub fn supergroup_id(&self) -> i64 {
243 self.supergroup_id
244 }
245}
246
247#[doc(hidden)]
248pub struct SuggestedActionConvertToBroadcastGroupBuilder {
249 inner: SuggestedActionConvertToBroadcastGroup,
250}
251
252#[deprecated]
253pub type RTDSuggestedActionConvertToBroadcastGroupBuilder =
254 SuggestedActionConvertToBroadcastGroupBuilder;
255
256impl SuggestedActionConvertToBroadcastGroupBuilder {
257 pub fn build(&self) -> SuggestedActionConvertToBroadcastGroup {
258 self.inner.clone()
259 }
260
261 pub fn supergroup_id(&mut self, supergroup_id: i64) -> &mut Self {
262 self.inner.supergroup_id = supergroup_id;
263 self
264 }
265}
266
267impl AsRef<SuggestedActionConvertToBroadcastGroup> for SuggestedActionConvertToBroadcastGroup {
268 fn as_ref(&self) -> &SuggestedActionConvertToBroadcastGroup {
269 self
270 }
271}
272
273impl AsRef<SuggestedActionConvertToBroadcastGroup>
274 for SuggestedActionConvertToBroadcastGroupBuilder
275{
276 fn as_ref(&self) -> &SuggestedActionConvertToBroadcastGroup {
277 &self.inner
278 }
279}
280
281#[derive(Debug, Clone, Default, Serialize, Deserialize)]
283pub struct SuggestedActionEnableArchiveAndMuteNewChats {
284 #[doc(hidden)]
285 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
286 extra: Option<String>,
287 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
288 client_id: Option<i32>,
289}
290
291impl RObject for SuggestedActionEnableArchiveAndMuteNewChats {
292 #[doc(hidden)]
293 fn extra(&self) -> Option<&str> {
294 self.extra.as_deref()
295 }
296 #[doc(hidden)]
297 fn client_id(&self) -> Option<i32> {
298 self.client_id
299 }
300}
301
302impl TDSuggestedAction for SuggestedActionEnableArchiveAndMuteNewChats {}
303
304impl SuggestedActionEnableArchiveAndMuteNewChats {
305 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
306 Ok(serde_json::from_str(json.as_ref())?)
307 }
308 pub fn builder() -> SuggestedActionEnableArchiveAndMuteNewChatsBuilder {
309 let mut inner = SuggestedActionEnableArchiveAndMuteNewChats::default();
310 inner.extra = Some(Uuid::new_v4().to_string());
311
312 SuggestedActionEnableArchiveAndMuteNewChatsBuilder { inner }
313 }
314}
315
316#[doc(hidden)]
317pub struct SuggestedActionEnableArchiveAndMuteNewChatsBuilder {
318 inner: SuggestedActionEnableArchiveAndMuteNewChats,
319}
320
321#[deprecated]
322pub type RTDSuggestedActionEnableArchiveAndMuteNewChatsBuilder =
323 SuggestedActionEnableArchiveAndMuteNewChatsBuilder;
324
325impl SuggestedActionEnableArchiveAndMuteNewChatsBuilder {
326 pub fn build(&self) -> SuggestedActionEnableArchiveAndMuteNewChats {
327 self.inner.clone()
328 }
329}
330
331impl AsRef<SuggestedActionEnableArchiveAndMuteNewChats>
332 for SuggestedActionEnableArchiveAndMuteNewChats
333{
334 fn as_ref(&self) -> &SuggestedActionEnableArchiveAndMuteNewChats {
335 self
336 }
337}
338
339impl AsRef<SuggestedActionEnableArchiveAndMuteNewChats>
340 for SuggestedActionEnableArchiveAndMuteNewChatsBuilder
341{
342 fn as_ref(&self) -> &SuggestedActionEnableArchiveAndMuteNewChats {
343 &self.inner
344 }
345}
346
347#[derive(Debug, Clone, Default, Serialize, Deserialize)]
349pub struct SuggestedActionSetPassword {
350 #[doc(hidden)]
351 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
352 extra: Option<String>,
353 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
354 client_id: Option<i32>,
355 #[serde(default)]
358 authorization_delay: i32,
359}
360
361impl RObject for SuggestedActionSetPassword {
362 #[doc(hidden)]
363 fn extra(&self) -> Option<&str> {
364 self.extra.as_deref()
365 }
366 #[doc(hidden)]
367 fn client_id(&self) -> Option<i32> {
368 self.client_id
369 }
370}
371
372impl TDSuggestedAction for SuggestedActionSetPassword {}
373
374impl SuggestedActionSetPassword {
375 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
376 Ok(serde_json::from_str(json.as_ref())?)
377 }
378 pub fn builder() -> SuggestedActionSetPasswordBuilder {
379 let mut inner = SuggestedActionSetPassword::default();
380 inner.extra = Some(Uuid::new_v4().to_string());
381
382 SuggestedActionSetPasswordBuilder { inner }
383 }
384
385 pub fn authorization_delay(&self) -> i32 {
386 self.authorization_delay
387 }
388}
389
390#[doc(hidden)]
391pub struct SuggestedActionSetPasswordBuilder {
392 inner: SuggestedActionSetPassword,
393}
394
395#[deprecated]
396pub type RTDSuggestedActionSetPasswordBuilder = SuggestedActionSetPasswordBuilder;
397
398impl SuggestedActionSetPasswordBuilder {
399 pub fn build(&self) -> SuggestedActionSetPassword {
400 self.inner.clone()
401 }
402
403 pub fn authorization_delay(&mut self, authorization_delay: i32) -> &mut Self {
404 self.inner.authorization_delay = authorization_delay;
405 self
406 }
407}
408
409impl AsRef<SuggestedActionSetPassword> for SuggestedActionSetPassword {
410 fn as_ref(&self) -> &SuggestedActionSetPassword {
411 self
412 }
413}
414
415impl AsRef<SuggestedActionSetPassword> for SuggestedActionSetPasswordBuilder {
416 fn as_ref(&self) -> &SuggestedActionSetPassword {
417 &self.inner
418 }
419}
420
421#[derive(Debug, Clone, Default, Serialize, Deserialize)]
423pub struct SuggestedActionViewChecksHint {
424 #[doc(hidden)]
425 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
426 extra: Option<String>,
427 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
428 client_id: Option<i32>,
429}
430
431impl RObject for SuggestedActionViewChecksHint {
432 #[doc(hidden)]
433 fn extra(&self) -> Option<&str> {
434 self.extra.as_deref()
435 }
436 #[doc(hidden)]
437 fn client_id(&self) -> Option<i32> {
438 self.client_id
439 }
440}
441
442impl TDSuggestedAction for SuggestedActionViewChecksHint {}
443
444impl SuggestedActionViewChecksHint {
445 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
446 Ok(serde_json::from_str(json.as_ref())?)
447 }
448 pub fn builder() -> SuggestedActionViewChecksHintBuilder {
449 let mut inner = SuggestedActionViewChecksHint::default();
450 inner.extra = Some(Uuid::new_v4().to_string());
451
452 SuggestedActionViewChecksHintBuilder { inner }
453 }
454}
455
456#[doc(hidden)]
457pub struct SuggestedActionViewChecksHintBuilder {
458 inner: SuggestedActionViewChecksHint,
459}
460
461#[deprecated]
462pub type RTDSuggestedActionViewChecksHintBuilder = SuggestedActionViewChecksHintBuilder;
463
464impl SuggestedActionViewChecksHintBuilder {
465 pub fn build(&self) -> SuggestedActionViewChecksHint {
466 self.inner.clone()
467 }
468}
469
470impl AsRef<SuggestedActionViewChecksHint> for SuggestedActionViewChecksHint {
471 fn as_ref(&self) -> &SuggestedActionViewChecksHint {
472 self
473 }
474}
475
476impl AsRef<SuggestedActionViewChecksHint> for SuggestedActionViewChecksHintBuilder {
477 fn as_ref(&self) -> &SuggestedActionViewChecksHint {
478 &self.inner
479 }
480}