1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
use serde::{Deserialize, Serialize};
use super::gifts::Gift;
use super::message_entity::MessageEntity;
use super::unique_gift::UniqueGift;
use super::user::User;
// ---------------------------------------------------------------------------
// OwnedGiftRegular
// ---------------------------------------------------------------------------
/// A regular gift owned by a user or a chat.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct OwnedGiftRegular {
/// Information about the regular gift.
pub gift: Gift,
/// Unix timestamp when the gift was sent.
pub send_date: i64,
/// Unique identifier of the gift for the bot; business accounts only.
#[serde(skip_serializing_if = "Option::is_none")]
pub owned_gift_id: Option<String>,
/// Sender of the gift if they are a known user.
#[serde(skip_serializing_if = "Option::is_none")]
pub sender_user: Option<User>,
/// Text of the message added to the gift.
#[serde(skip_serializing_if = "Option::is_none")]
pub text: Option<String>,
/// Special entities in the gift text.
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub entities: Vec<MessageEntity>,
/// True if the sender and gift text are shown only to the receiver.
#[serde(skip_serializing_if = "Option::is_none")]
pub is_private: Option<bool>,
/// True if the gift is displayed on the account's profile page; business accounts only.
#[serde(skip_serializing_if = "Option::is_none")]
pub is_saved: Option<bool>,
/// True if the gift can be upgraded to a unique gift; business accounts only.
#[serde(skip_serializing_if = "Option::is_none")]
pub can_be_upgraded: Option<bool>,
/// True if the gift was refunded and is no longer available.
#[serde(skip_serializing_if = "Option::is_none")]
pub was_refunded: Option<bool>,
/// Stars the receiver can claim by converting the gift; absent if not convertible.
#[serde(skip_serializing_if = "Option::is_none")]
pub convert_star_count: Option<i64>,
/// Stars prepaid for the ability to upgrade the gift.
#[serde(skip_serializing_if = "Option::is_none")]
pub prepaid_upgrade_star_count: Option<i64>,
/// True if the gift's upgrade was purchased after the gift was sent.
#[serde(skip_serializing_if = "Option::is_none")]
pub is_upgrade_separate: Option<bool>,
/// Unique number reserved for this gift when upgraded.
#[serde(skip_serializing_if = "Option::is_none")]
pub unique_gift_number: Option<i64>,
}
// ---------------------------------------------------------------------------
// OwnedGiftUnique
// ---------------------------------------------------------------------------
/// A unique gift owned by a user or a chat.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct OwnedGiftUnique {
/// Information about the unique gift.
pub gift: UniqueGift,
/// Unix timestamp when the gift was sent.
pub send_date: i64,
/// Unique identifier of the gift for the bot; business accounts only.
#[serde(skip_serializing_if = "Option::is_none")]
pub owned_gift_id: Option<String>,
/// Sender of the gift if they are a known user.
#[serde(skip_serializing_if = "Option::is_none")]
pub sender_user: Option<User>,
/// True if the gift is displayed on the account's profile page; business accounts only.
#[serde(skip_serializing_if = "Option::is_none")]
pub is_saved: Option<bool>,
/// True if the gift can be transferred to another owner; business accounts only.
#[serde(skip_serializing_if = "Option::is_none")]
pub can_be_transferred: Option<bool>,
/// Stars required to transfer the gift; absent if the bot cannot transfer it.
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer_star_count: Option<i64>,
/// Unix timestamp when the gift can be transferred next.
#[serde(skip_serializing_if = "Option::is_none")]
pub next_transfer_date: Option<i64>,
}
// ---------------------------------------------------------------------------
// OwnedGift — polymorphic, tagged on "type"
// ---------------------------------------------------------------------------
/// A gift received and owned by a user or a chat.
///
/// Discriminated by the `"type"` JSON field.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type", rename_all = "snake_case")]
#[non_exhaustive]
pub enum OwnedGift {
/// A regular gift.
Regular(Box<OwnedGiftRegular>),
/// A unique gift.
Unique(Box<OwnedGiftUnique>),
}
// ---------------------------------------------------------------------------
// OwnedGifts
// ---------------------------------------------------------------------------
/// List of gifts received and owned by a user or a chat.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct OwnedGifts {
/// Total number of gifts owned.
pub total_count: i64,
/// The list of gifts.
pub gifts: Vec<OwnedGift>,
/// Offset for the next request; absent when there are no more results.
#[serde(skip_serializing_if = "Option::is_none")]
pub next_offset: Option<String>,
}