RubigramClient 1.6.5__py3-none-any.whl → 1.6.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of RubigramClient might be problematic. Click here for more details.
- rubigram/__init__.py +0 -2
- rubigram/client.py +80 -50
- rubigram/method.py +40 -37
- rubigram/network.py +37 -22
- rubigram/types.py +627 -207
- {rubigramclient-1.6.5.dist-info → rubigramclient-1.6.7.dist-info}/METADATA +23 -2
- rubigramclient-1.6.7.dist-info/RECORD +13 -0
- rubigramclient-1.6.5.dist-info/RECORD +0 -13
- {rubigramclient-1.6.5.dist-info → rubigramclient-1.6.7.dist-info}/WHEEL +0 -0
- {rubigramclient-1.6.5.dist-info → rubigramclient-1.6.7.dist-info}/licenses/LICENSE +0 -0
- {rubigramclient-1.6.5.dist-info → rubigramclient-1.6.7.dist-info}/top_level.txt +0 -0
rubigram/types.py
CHANGED
|
@@ -1,82 +1,24 @@
|
|
|
1
|
-
from
|
|
2
|
-
from
|
|
3
|
-
from
|
|
4
|
-
from enum import Enum
|
|
5
|
-
from . import enums
|
|
6
|
-
import rubigram
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
T = TypeVar("T", bound="DataManager")
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
@dataclass
|
|
13
|
-
class DataManager:
|
|
14
|
-
def to_dict(self) -> dict:
|
|
15
|
-
data = {}
|
|
16
|
-
for field in fields(self):
|
|
17
|
-
value = getattr(self, field.name)
|
|
18
|
-
if isinstance(value, Enum):
|
|
19
|
-
data[field.name] = value.value
|
|
20
|
-
elif is_dataclass(value):
|
|
21
|
-
data[field.name] = value.to_dict()
|
|
22
|
-
elif isinstance(value, list):
|
|
23
|
-
data[field.name] = [i.to_dict() if is_dataclass(i) else i for i in value]
|
|
24
|
-
else:
|
|
25
|
-
data[field.name] = value
|
|
26
|
-
return data
|
|
1
|
+
from typing import Optional, Union, Any
|
|
2
|
+
from pydantic import BaseModel
|
|
3
|
+
from rubigram import enums
|
|
27
4
|
|
|
28
5
|
|
|
6
|
+
class DataManager(BaseModel):
|
|
7
|
+
class Config:
|
|
8
|
+
use_enum_values = True
|
|
9
|
+
arbitrary_types_allowed = True
|
|
10
|
+
|
|
29
11
|
@classmethod
|
|
30
|
-
def from_dict(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
init_data[field.name] = field_type.from_dict(value)
|
|
41
|
-
|
|
42
|
-
elif origin == list:
|
|
43
|
-
inner_type = get_args(field_type)[0]
|
|
44
|
-
if isinstance(inner_type, type) and issubclass(inner_type, DataManager):
|
|
45
|
-
init_data[field.name] = [inner_type.from_dict(
|
|
46
|
-
v) if isinstance(v, dict) else v for v in (value or [])]
|
|
47
|
-
else:
|
|
48
|
-
init_data[field.name] = value or []
|
|
49
|
-
|
|
50
|
-
elif origin == Union:
|
|
51
|
-
args = get_args(field_type)
|
|
52
|
-
dict_type = next((a for a in args if isinstance(
|
|
53
|
-
a, type) and issubclass(a, DataManager)), None)
|
|
54
|
-
if dict_type and isinstance(value, dict):
|
|
55
|
-
init_data[field.name] = dict_type.from_dict(value)
|
|
56
|
-
else:
|
|
57
|
-
init_data[field.name] = value
|
|
58
|
-
|
|
59
|
-
else:
|
|
60
|
-
init_data[field.name] = value
|
|
61
|
-
|
|
62
|
-
return Class(**init_data)
|
|
63
|
-
|
|
64
|
-
def json(self):
|
|
65
|
-
def clear(object):
|
|
66
|
-
if isinstance(object, dict):
|
|
67
|
-
return {key: clear(value) for key, value in object.items() if value is not None}
|
|
68
|
-
elif isinstance(object, list):
|
|
69
|
-
return [clear(i) for i in object if i is not None]
|
|
70
|
-
else:
|
|
71
|
-
return object
|
|
72
|
-
|
|
73
|
-
data = self.to_dict()
|
|
74
|
-
data.pop("client", None)
|
|
75
|
-
clean_data = clear(data)
|
|
76
|
-
return dumps(clean_data, ensure_ascii=False, indent=4)
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
@dataclass
|
|
12
|
+
def from_dict(cls, data: dict):
|
|
13
|
+
return cls.model_validate(data or {})
|
|
14
|
+
|
|
15
|
+
def asdict(self, exclude_none: bool = True) -> dict:
|
|
16
|
+
return self.model_dump(exclude_none=exclude_none, exclude={"client"})
|
|
17
|
+
|
|
18
|
+
def asjson(self, exclude_none: bool = True) -> str:
|
|
19
|
+
return self.model_dump_json(indent=4, exclude_none=exclude_none, exclude={"client"})
|
|
20
|
+
|
|
21
|
+
|
|
80
22
|
class Chat(DataManager):
|
|
81
23
|
chat_id: Optional[str] = None
|
|
82
24
|
chat_type: Optional[enums.ChatType] = None
|
|
@@ -86,50 +28,106 @@ class Chat(DataManager):
|
|
|
86
28
|
title: Optional[str] = None
|
|
87
29
|
username: Optional[str] = None
|
|
88
30
|
|
|
89
|
-
def
|
|
90
|
-
|
|
31
|
+
def __init__(
|
|
32
|
+
self,
|
|
33
|
+
chat_id: Optional[str] = None,
|
|
34
|
+
chat_type: Optional[enums.ChatType] = None,
|
|
35
|
+
user_id: Optional[str] = None,
|
|
36
|
+
first_name: Optional[str] = None,
|
|
37
|
+
last_name: Optional[str] = None,
|
|
38
|
+
title: Optional[str] = None,
|
|
39
|
+
username: Optional[str] = None,
|
|
40
|
+
**kwargs
|
|
41
|
+
):
|
|
42
|
+
super().__init__(
|
|
43
|
+
chat_id=chat_id,
|
|
44
|
+
chat_type=chat_type,
|
|
45
|
+
user_id=user_id,
|
|
46
|
+
first_name=first_name,
|
|
47
|
+
last_name=last_name,
|
|
48
|
+
title=title,
|
|
49
|
+
username=username,
|
|
50
|
+
**kwargs
|
|
51
|
+
)
|
|
91
52
|
|
|
92
53
|
|
|
93
|
-
@dataclass
|
|
94
54
|
class File(DataManager):
|
|
95
55
|
file_id: Optional[str] = None
|
|
96
56
|
file_name: Optional[str] = None
|
|
97
57
|
size: Optional[str] = None
|
|
98
58
|
|
|
99
|
-
def
|
|
100
|
-
|
|
59
|
+
def __init__(
|
|
60
|
+
self,
|
|
61
|
+
file_id: Optional[str] = None,
|
|
62
|
+
file_name: Optional[str] = None,
|
|
63
|
+
size: Optional[str] = None,
|
|
64
|
+
**kwargs
|
|
65
|
+
):
|
|
66
|
+
super().__init__(
|
|
67
|
+
file_id=file_id,
|
|
68
|
+
file_name=file_name,
|
|
69
|
+
size=size,
|
|
70
|
+
**kwargs
|
|
71
|
+
)
|
|
101
72
|
|
|
102
73
|
|
|
103
|
-
@dataclass
|
|
104
74
|
class ForwardedFrom(DataManager):
|
|
105
75
|
type_from: Optional[enums.ForwardedFrom] = None
|
|
106
76
|
message_id: Optional[str] = None
|
|
107
77
|
from_chat_id: Optional[str] = None
|
|
108
78
|
from_sender_id: Optional[str] = None
|
|
109
79
|
|
|
110
|
-
def
|
|
111
|
-
|
|
80
|
+
def __init__(
|
|
81
|
+
self,
|
|
82
|
+
type_from: Optional[enums.ForwardedFrom] = None,
|
|
83
|
+
message_id: Optional[str] = None,
|
|
84
|
+
from_chat_id: Optional[str] = None,
|
|
85
|
+
from_sender_id: Optional[str] = None,
|
|
86
|
+
**kwargs
|
|
87
|
+
):
|
|
88
|
+
super().__init__(
|
|
89
|
+
type_from=type_from,
|
|
90
|
+
message_id=message_id,
|
|
91
|
+
from_chat_id=from_chat_id,
|
|
92
|
+
from_sender_id=from_sender_id,
|
|
93
|
+
**kwargs
|
|
94
|
+
)
|
|
112
95
|
|
|
113
96
|
|
|
114
|
-
@dataclass
|
|
115
97
|
class PaymentStatus(DataManager):
|
|
116
98
|
payment_id: Optional[str] = None
|
|
117
99
|
status: Optional[enums.PaymentStatus] = None
|
|
118
100
|
|
|
119
|
-
def
|
|
120
|
-
|
|
101
|
+
def __init__(
|
|
102
|
+
self,
|
|
103
|
+
payment_id: Optional[str] = None,
|
|
104
|
+
status: Optional[enums.PaymentStatus] = None,
|
|
105
|
+
**kwargs
|
|
106
|
+
):
|
|
107
|
+
super().__init__(
|
|
108
|
+
payment_id=payment_id,
|
|
109
|
+
status=status,
|
|
110
|
+
**kwargs
|
|
111
|
+
)
|
|
121
112
|
|
|
122
113
|
|
|
123
|
-
@dataclass
|
|
124
114
|
class MessageTextUpdate(DataManager):
|
|
125
115
|
message_id: Optional[str] = None
|
|
126
116
|
text: Optional[str] = None
|
|
127
117
|
|
|
128
|
-
def
|
|
129
|
-
|
|
118
|
+
def __init__(
|
|
119
|
+
self,
|
|
120
|
+
message_id: Optional[str] = None,
|
|
121
|
+
text: Optional[str] = None,
|
|
122
|
+
**kwargs
|
|
123
|
+
):
|
|
124
|
+
super().__init__(
|
|
125
|
+
message_id=message_id,
|
|
126
|
+
text=text,
|
|
127
|
+
**kwargs
|
|
128
|
+
)
|
|
130
129
|
|
|
131
130
|
|
|
132
|
-
@dataclass
|
|
133
131
|
class Bot(DataManager):
|
|
134
132
|
bot_id: Optional[str] = None
|
|
135
133
|
bot_title: Optional[str] = None
|
|
@@ -139,40 +137,86 @@ class Bot(DataManager):
|
|
|
139
137
|
start_message: Optional[str] = None
|
|
140
138
|
share_url: Optional[str] = None
|
|
141
139
|
|
|
142
|
-
def
|
|
143
|
-
|
|
140
|
+
def __init__(
|
|
141
|
+
self,
|
|
142
|
+
bot_id: Optional[str] = None,
|
|
143
|
+
bot_title: Optional[str] = None,
|
|
144
|
+
avatar: Optional[File] = None,
|
|
145
|
+
description: Optional[str] = None,
|
|
146
|
+
username: Optional[str] = None,
|
|
147
|
+
start_message: Optional[str] = None,
|
|
148
|
+
share_url: Optional[str] = None,
|
|
149
|
+
**kwargs
|
|
150
|
+
):
|
|
151
|
+
super().__init__(
|
|
152
|
+
bot_id=bot_id,
|
|
153
|
+
bot_title=bot_title,
|
|
154
|
+
avatar=avatar,
|
|
155
|
+
description=description,
|
|
156
|
+
username=username,
|
|
157
|
+
start_message=start_message,
|
|
158
|
+
share_url=share_url,
|
|
159
|
+
**kwargs
|
|
160
|
+
)
|
|
144
161
|
|
|
145
162
|
|
|
146
|
-
@dataclass
|
|
147
163
|
class BotCommand(DataManager):
|
|
148
164
|
command: Optional[str] = None
|
|
149
165
|
description: Optional[str] = None
|
|
150
166
|
|
|
151
|
-
def
|
|
152
|
-
|
|
167
|
+
def __init__(
|
|
168
|
+
self,
|
|
169
|
+
command: Optional[str] = None,
|
|
170
|
+
description: Optional[str] = None,
|
|
171
|
+
**kwargs
|
|
172
|
+
):
|
|
173
|
+
super().__init__(
|
|
174
|
+
command=command,
|
|
175
|
+
description=description,
|
|
176
|
+
**kwargs
|
|
177
|
+
)
|
|
153
178
|
|
|
154
179
|
|
|
155
|
-
@dataclass
|
|
156
180
|
class Sticker(DataManager):
|
|
157
181
|
sticker_id: Optional[str] = None
|
|
158
182
|
file: Optional[File] = None
|
|
159
183
|
emoji_character: Optional[str] = None
|
|
160
184
|
|
|
161
|
-
def
|
|
162
|
-
|
|
185
|
+
def __init__(
|
|
186
|
+
self,
|
|
187
|
+
sticker_id: Optional[str] = None,
|
|
188
|
+
file: Optional[File] = None,
|
|
189
|
+
emoji_character: Optional[str] = None,
|
|
190
|
+
**kwargs
|
|
191
|
+
):
|
|
192
|
+
super().__init__(
|
|
193
|
+
sticker_id=sticker_id,
|
|
194
|
+
file=file,
|
|
195
|
+
emoji_character=emoji_character,
|
|
196
|
+
**kwargs
|
|
197
|
+
)
|
|
163
198
|
|
|
164
199
|
|
|
165
|
-
@dataclass
|
|
166
200
|
class ContactMessage(DataManager):
|
|
167
201
|
phone_number: Optional[str] = None
|
|
168
202
|
first_name: Optional[str] = None
|
|
169
203
|
last_name: Optional[str] = None
|
|
170
204
|
|
|
171
|
-
def
|
|
172
|
-
|
|
205
|
+
def __init__(
|
|
206
|
+
self,
|
|
207
|
+
phone_number: Optional[str] = None,
|
|
208
|
+
first_name: Optional[str] = None,
|
|
209
|
+
last_name: Optional[str] = None,
|
|
210
|
+
**kwargs
|
|
211
|
+
):
|
|
212
|
+
super().__init__(
|
|
213
|
+
phone_number=phone_number,
|
|
214
|
+
first_name=first_name,
|
|
215
|
+
last_name=last_name,
|
|
216
|
+
**kwargs
|
|
217
|
+
)
|
|
173
218
|
|
|
174
219
|
|
|
175
|
-
@dataclass
|
|
176
220
|
class PollStatus(DataManager):
|
|
177
221
|
state: Optional[enums.PollStatus] = None
|
|
178
222
|
selection_index: Optional[int] = None
|
|
@@ -180,30 +224,62 @@ class PollStatus(DataManager):
|
|
|
180
224
|
total_vote: Optional[int] = None
|
|
181
225
|
show_total_votes: Optional[bool] = None
|
|
182
226
|
|
|
183
|
-
def
|
|
184
|
-
|
|
227
|
+
def __init__(
|
|
228
|
+
self,
|
|
229
|
+
state: Optional[enums.PollStatus] = None,
|
|
230
|
+
selection_index: Optional[int] = None,
|
|
231
|
+
percent_vote_options: Optional[list[int]] = None,
|
|
232
|
+
total_vote: Optional[int] = None,
|
|
233
|
+
show_total_votes: Optional[bool] = None,
|
|
234
|
+
**kwargs
|
|
235
|
+
):
|
|
236
|
+
super().__init__(
|
|
237
|
+
state=state,
|
|
238
|
+
selection_index=selection_index,
|
|
239
|
+
percent_vote_options=percent_vote_options,
|
|
240
|
+
total_vote=total_vote,
|
|
241
|
+
show_total_votes=show_total_votes,
|
|
242
|
+
**kwargs
|
|
243
|
+
)
|
|
185
244
|
|
|
186
245
|
|
|
187
|
-
@dataclass
|
|
188
246
|
class Poll(DataManager):
|
|
189
247
|
question: Optional[str] = None
|
|
190
248
|
options: Optional[list[str]] = None
|
|
191
249
|
poll_status: Optional[PollStatus] = None
|
|
192
250
|
|
|
193
|
-
def
|
|
194
|
-
|
|
251
|
+
def __init__(
|
|
252
|
+
self,
|
|
253
|
+
question: Optional[str] = None,
|
|
254
|
+
options: Optional[list[str]] = None,
|
|
255
|
+
poll_status: Optional[PollStatus] = None,
|
|
256
|
+
**kwargs
|
|
257
|
+
):
|
|
258
|
+
super().__init__(
|
|
259
|
+
question=question,
|
|
260
|
+
options=options,
|
|
261
|
+
poll_status=poll_status,
|
|
262
|
+
**kwargs
|
|
263
|
+
)
|
|
195
264
|
|
|
196
265
|
|
|
197
|
-
@dataclass
|
|
198
266
|
class Location(DataManager):
|
|
199
267
|
longitude: Optional[str] = None
|
|
200
268
|
latitude: Optional[str] = None
|
|
201
269
|
|
|
202
|
-
def
|
|
203
|
-
|
|
270
|
+
def __init__(
|
|
271
|
+
self,
|
|
272
|
+
longitude: Optional[str] = None,
|
|
273
|
+
latitude: Optional[str] = None,
|
|
274
|
+
**kwargs
|
|
275
|
+
):
|
|
276
|
+
super().__init__(
|
|
277
|
+
longitude=longitude,
|
|
278
|
+
latitude=latitude,
|
|
279
|
+
**kwargs
|
|
280
|
+
)
|
|
204
281
|
|
|
205
282
|
|
|
206
|
-
@dataclass
|
|
207
283
|
class LiveLocation(DataManager):
|
|
208
284
|
start_time: Optional[str] = None
|
|
209
285
|
live_period: Optional[int] = None
|
|
@@ -212,21 +288,47 @@ class LiveLocation(DataManager):
|
|
|
212
288
|
status: Optional[enums.LiveLocationStatus] = None
|
|
213
289
|
last_update_time: Optional[str] = None
|
|
214
290
|
|
|
215
|
-
def
|
|
216
|
-
|
|
291
|
+
def __init__(
|
|
292
|
+
self,
|
|
293
|
+
start_time: Optional[str] = None,
|
|
294
|
+
live_period: Optional[int] = None,
|
|
295
|
+
current_location: Optional[Location] = None,
|
|
296
|
+
user_id: Optional[str] = None,
|
|
297
|
+
status: Optional[enums.LiveLocationStatus] = None,
|
|
298
|
+
last_update_time: Optional[str] = None,
|
|
299
|
+
**kwargs
|
|
300
|
+
):
|
|
301
|
+
super().__init__(
|
|
302
|
+
start_time=start_time,
|
|
303
|
+
live_period=live_period,
|
|
304
|
+
current_location=current_location,
|
|
305
|
+
user_id=user_id,
|
|
306
|
+
status=status,
|
|
307
|
+
last_update_time=last_update_time,
|
|
308
|
+
**kwargs
|
|
309
|
+
)
|
|
217
310
|
|
|
218
311
|
|
|
219
|
-
@dataclass
|
|
220
312
|
class ButtonSelectionItem(DataManager):
|
|
221
313
|
text: Optional[str] = None
|
|
222
314
|
image_url: Optional[str] = None
|
|
223
315
|
type: Optional[enums.ButtonSelectionType] = None
|
|
224
316
|
|
|
225
|
-
def
|
|
226
|
-
|
|
317
|
+
def __init__(
|
|
318
|
+
self,
|
|
319
|
+
text: Optional[str] = None,
|
|
320
|
+
image_url: Optional[str] = None,
|
|
321
|
+
type: Optional[enums.ButtonSelectionType] = None,
|
|
322
|
+
**kwargs
|
|
323
|
+
):
|
|
324
|
+
super().__init__(
|
|
325
|
+
text=text,
|
|
326
|
+
image_url=image_url,
|
|
327
|
+
type=type,
|
|
328
|
+
**kwargs
|
|
329
|
+
)
|
|
227
330
|
|
|
228
331
|
|
|
229
|
-
@dataclass
|
|
230
332
|
class ButtonSelection(DataManager):
|
|
231
333
|
selection_id: Optional[str] = None
|
|
232
334
|
search_type: Optional[str] = None
|
|
@@ -236,11 +338,29 @@ class ButtonSelection(DataManager):
|
|
|
236
338
|
columns_count: Optional[str] = None
|
|
237
339
|
title: Optional[str] = None
|
|
238
340
|
|
|
239
|
-
def
|
|
240
|
-
|
|
341
|
+
def __init__(
|
|
342
|
+
self,
|
|
343
|
+
selection_id: Optional[str] = None,
|
|
344
|
+
search_type: Optional[str] = None,
|
|
345
|
+
get_type: Optional[str] = None,
|
|
346
|
+
items: Optional[list[ButtonSelectionItem]] = None,
|
|
347
|
+
is_multi_selection: Optional[bool] = None,
|
|
348
|
+
columns_count: Optional[str] = None,
|
|
349
|
+
title: Optional[str] = None,
|
|
350
|
+
**kwargs
|
|
351
|
+
):
|
|
352
|
+
super().__init__(
|
|
353
|
+
selection_id=selection_id,
|
|
354
|
+
search_type=search_type,
|
|
355
|
+
get_type=get_type,
|
|
356
|
+
items=items,
|
|
357
|
+
is_multi_selection=is_multi_selection,
|
|
358
|
+
columns_count=columns_count,
|
|
359
|
+
title=title,
|
|
360
|
+
**kwargs
|
|
361
|
+
)
|
|
241
362
|
|
|
242
363
|
|
|
243
|
-
@dataclass
|
|
244
364
|
class ButtonCalendar(DataManager):
|
|
245
365
|
default_value: Optional[str] = None
|
|
246
366
|
type: Optional[enums.ButtonCalendarType] = None
|
|
@@ -248,32 +368,68 @@ class ButtonCalendar(DataManager):
|
|
|
248
368
|
max_year: Optional[str] = None
|
|
249
369
|
title: Optional[str] = None
|
|
250
370
|
|
|
251
|
-
def
|
|
252
|
-
|
|
371
|
+
def __init__(
|
|
372
|
+
self,
|
|
373
|
+
default_value: Optional[str] = None,
|
|
374
|
+
type: Optional[enums.ButtonCalendarType] = None,
|
|
375
|
+
min_year: Optional[str] = None,
|
|
376
|
+
max_year: Optional[str] = None,
|
|
377
|
+
title: Optional[str] = None,
|
|
378
|
+
**kwargs
|
|
379
|
+
):
|
|
380
|
+
super().__init__(
|
|
381
|
+
default_value=default_value,
|
|
382
|
+
type=type,
|
|
383
|
+
min_year=min_year,
|
|
384
|
+
max_year=max_year,
|
|
385
|
+
title=title,
|
|
386
|
+
**kwargs
|
|
387
|
+
)
|
|
253
388
|
|
|
254
389
|
|
|
255
|
-
@dataclass
|
|
256
390
|
class ButtonNumberPicker(DataManager):
|
|
257
391
|
min_value: Optional[str] = None
|
|
258
392
|
max_value: Optional[str] = None
|
|
259
393
|
default_value: Optional[str] = None
|
|
260
394
|
title: Optional[str] = None
|
|
261
395
|
|
|
262
|
-
def
|
|
263
|
-
|
|
396
|
+
def __init__(
|
|
397
|
+
self,
|
|
398
|
+
min_value: Optional[str] = None,
|
|
399
|
+
max_value: Optional[str] = None,
|
|
400
|
+
default_value: Optional[str] = None,
|
|
401
|
+
title: Optional[str] = None,
|
|
402
|
+
**kwargs
|
|
403
|
+
):
|
|
404
|
+
super().__init__(
|
|
405
|
+
min_value=min_value,
|
|
406
|
+
max_value=max_value,
|
|
407
|
+
default_value=default_value,
|
|
408
|
+
title=title,
|
|
409
|
+
**kwargs
|
|
410
|
+
)
|
|
264
411
|
|
|
265
412
|
|
|
266
|
-
@dataclass
|
|
267
413
|
class ButtonStringPicker(DataManager):
|
|
268
414
|
items: Optional[list[str]] = None
|
|
269
415
|
default_value: Optional[str] = None
|
|
270
416
|
title: Optional[str] = None
|
|
271
417
|
|
|
272
|
-
def
|
|
273
|
-
|
|
418
|
+
def __init__(
|
|
419
|
+
self,
|
|
420
|
+
items: Optional[list[str]] = None,
|
|
421
|
+
default_value: Optional[str] = None,
|
|
422
|
+
title: Optional[str] = None,
|
|
423
|
+
**kwargs
|
|
424
|
+
):
|
|
425
|
+
super().__init__(
|
|
426
|
+
items=items,
|
|
427
|
+
default_value=default_value,
|
|
428
|
+
title=title,
|
|
429
|
+
**kwargs
|
|
430
|
+
)
|
|
274
431
|
|
|
275
432
|
|
|
276
|
-
@dataclass
|
|
277
433
|
class ButtonTextbox(DataManager):
|
|
278
434
|
type_line: Optional[enums.ButtonTextboxTypeLine] = None
|
|
279
435
|
type_keypad: Optional[enums.ButtonTextboxTypeKeypad] = None
|
|
@@ -281,11 +437,25 @@ class ButtonTextbox(DataManager):
|
|
|
281
437
|
title: Optional[str] = None
|
|
282
438
|
default_value: Optional[str] = None
|
|
283
439
|
|
|
284
|
-
def
|
|
285
|
-
|
|
440
|
+
def __init__(
|
|
441
|
+
self,
|
|
442
|
+
type_line: Optional[enums.ButtonTextboxTypeLine] = None,
|
|
443
|
+
type_keypad: Optional[enums.ButtonTextboxTypeKeypad] = None,
|
|
444
|
+
place_holder: Optional[str] = None,
|
|
445
|
+
title: Optional[str] = None,
|
|
446
|
+
default_value: Optional[str] = None,
|
|
447
|
+
**kwargs
|
|
448
|
+
):
|
|
449
|
+
super().__init__(
|
|
450
|
+
type_line=type_line,
|
|
451
|
+
type_keypad=type_keypad,
|
|
452
|
+
place_holder=place_holder,
|
|
453
|
+
title=title,
|
|
454
|
+
default_value=default_value,
|
|
455
|
+
**kwargs
|
|
456
|
+
)
|
|
286
457
|
|
|
287
458
|
|
|
288
|
-
@dataclass
|
|
289
459
|
class ButtonLocation(DataManager):
|
|
290
460
|
default_pointer_location: Optional[Location] = None
|
|
291
461
|
default_map_location: Optional[Location] = None
|
|
@@ -293,49 +463,99 @@ class ButtonLocation(DataManager):
|
|
|
293
463
|
title: Optional[str] = None
|
|
294
464
|
location_image_url: Optional[str] = None
|
|
295
465
|
|
|
296
|
-
def
|
|
297
|
-
|
|
466
|
+
def __init__(
|
|
467
|
+
self,
|
|
468
|
+
default_pointer_location: Optional[Location] = None,
|
|
469
|
+
default_map_location: Optional[Location] = None,
|
|
470
|
+
type: Optional[enums.ButtonLocationType] = None,
|
|
471
|
+
title: Optional[str] = None,
|
|
472
|
+
location_image_url: Optional[str] = None,
|
|
473
|
+
**kwargs
|
|
474
|
+
):
|
|
475
|
+
super().__init__(
|
|
476
|
+
default_pointer_location=default_pointer_location,
|
|
477
|
+
default_map_location=default_map_location,
|
|
478
|
+
type=type,
|
|
479
|
+
title=title,
|
|
480
|
+
location_image_url=location_image_url,
|
|
481
|
+
**kwargs
|
|
482
|
+
)
|
|
298
483
|
|
|
299
484
|
|
|
300
|
-
@dataclass
|
|
301
485
|
class OpenChatData(DataManager):
|
|
302
486
|
object_guid: Optional[str] = None
|
|
303
487
|
object_type: Optional[enums.ChatType] = None
|
|
304
488
|
|
|
305
|
-
def
|
|
306
|
-
|
|
489
|
+
def __init__(
|
|
490
|
+
self,
|
|
491
|
+
object_guid: Optional[str] = None,
|
|
492
|
+
object_type: Optional[enums.ChatType] = None,
|
|
493
|
+
**kwargs
|
|
494
|
+
):
|
|
495
|
+
super().__init__(
|
|
496
|
+
object_guid=object_guid,
|
|
497
|
+
object_type=object_type,
|
|
498
|
+
**kwargs
|
|
499
|
+
)
|
|
307
500
|
|
|
308
501
|
|
|
309
|
-
@dataclass
|
|
310
502
|
class JoinChannelData(DataManager):
|
|
311
503
|
username: Optional[str] = None
|
|
312
504
|
ask_join: bool = False
|
|
313
505
|
|
|
314
|
-
def
|
|
315
|
-
|
|
506
|
+
def __init__(
|
|
507
|
+
self,
|
|
508
|
+
username: Optional[str] = None,
|
|
509
|
+
ask_join: bool = False,
|
|
510
|
+
**kwargs
|
|
511
|
+
):
|
|
512
|
+
super().__init__(
|
|
513
|
+
username=username,
|
|
514
|
+
ask_join=ask_join,
|
|
515
|
+
**kwargs
|
|
516
|
+
)
|
|
316
517
|
|
|
317
518
|
|
|
318
|
-
@dataclass
|
|
319
519
|
class ButtonLink(DataManager):
|
|
320
520
|
type: Optional[enums.ButtonLinkType] = None
|
|
321
521
|
link_url: Optional[str] = None
|
|
322
522
|
joinchannel_data: Optional[JoinChannelData] = None
|
|
323
523
|
open_chat_data: Optional[OpenChatData] = None
|
|
324
524
|
|
|
325
|
-
def
|
|
326
|
-
|
|
525
|
+
def __init__(
|
|
526
|
+
self,
|
|
527
|
+
type: Optional[enums.ButtonLinkType] = None,
|
|
528
|
+
link_url: Optional[str] = None,
|
|
529
|
+
joinchannel_data: Optional[JoinChannelData] = None,
|
|
530
|
+
open_chat_data: Optional[OpenChatData] = None,
|
|
531
|
+
**kwargs
|
|
532
|
+
):
|
|
533
|
+
super().__init__(
|
|
534
|
+
type=type,
|
|
535
|
+
link_url=link_url,
|
|
536
|
+
joinchannel_data=joinchannel_data,
|
|
537
|
+
open_chat_data=open_chat_data,
|
|
538
|
+
**kwargs
|
|
539
|
+
)
|
|
327
540
|
|
|
328
541
|
|
|
329
|
-
@dataclass
|
|
330
542
|
class AuxData(DataManager):
|
|
331
543
|
start_id: Optional[str] = None
|
|
332
544
|
button_id: Optional[str] = None
|
|
333
545
|
|
|
334
|
-
def
|
|
335
|
-
|
|
546
|
+
def __init__(
|
|
547
|
+
self,
|
|
548
|
+
start_id: Optional[str] = None,
|
|
549
|
+
button_id: Optional[str] = None,
|
|
550
|
+
**kwargs
|
|
551
|
+
):
|
|
552
|
+
super().__init__(
|
|
553
|
+
start_id=start_id,
|
|
554
|
+
button_id=button_id,
|
|
555
|
+
**kwargs
|
|
556
|
+
)
|
|
336
557
|
|
|
337
558
|
|
|
338
|
-
@dataclass
|
|
339
559
|
class Button(DataManager):
|
|
340
560
|
id: Optional[str] = None
|
|
341
561
|
button_text: Optional[str] = None
|
|
@@ -348,35 +568,86 @@ class Button(DataManager):
|
|
|
348
568
|
button_textbox: Optional[ButtonTextbox] = None
|
|
349
569
|
button_link: Optional[ButtonLink] = None
|
|
350
570
|
|
|
571
|
+
def __init__(
|
|
572
|
+
self,
|
|
573
|
+
id: Optional[str] = None,
|
|
574
|
+
button_text: Optional[str] = None,
|
|
575
|
+
type: enums.ButtonType = enums.ButtonType.Simple,
|
|
576
|
+
button_selection: Optional[ButtonSelection] = None,
|
|
577
|
+
button_calendar: Optional[ButtonCalendar] = None,
|
|
578
|
+
button_number_picker: Optional[ButtonNumberPicker] = None,
|
|
579
|
+
button_string_picker: Optional[ButtonStringPicker] = None,
|
|
580
|
+
button_location: Optional[ButtonLocation] = None,
|
|
581
|
+
button_textbox: Optional[ButtonTextbox] = None,
|
|
582
|
+
button_link: Optional[ButtonLink] = None,
|
|
583
|
+
**kwargs
|
|
584
|
+
):
|
|
585
|
+
super().__init__(
|
|
586
|
+
id=id,
|
|
587
|
+
button_text=button_text,
|
|
588
|
+
type=type,
|
|
589
|
+
button_selection=button_selection,
|
|
590
|
+
button_calendar=button_calendar,
|
|
591
|
+
button_number_picker=button_number_picker,
|
|
592
|
+
button_string_picker=button_string_picker,
|
|
593
|
+
button_location=button_location,
|
|
594
|
+
button_textbox=button_textbox,
|
|
595
|
+
button_link=button_link,
|
|
596
|
+
**kwargs
|
|
597
|
+
)
|
|
598
|
+
|
|
351
599
|
|
|
352
|
-
@dataclass
|
|
353
600
|
class KeypadRow(DataManager):
|
|
354
601
|
buttons: list[Button]
|
|
355
602
|
|
|
356
|
-
def
|
|
357
|
-
|
|
603
|
+
def __init__(
|
|
604
|
+
self,
|
|
605
|
+
buttons: list[Button],
|
|
606
|
+
**kwargs
|
|
607
|
+
):
|
|
608
|
+
super().__init__(
|
|
609
|
+
buttons=buttons,
|
|
610
|
+
**kwargs
|
|
611
|
+
)
|
|
358
612
|
|
|
359
613
|
|
|
360
|
-
@dataclass
|
|
361
614
|
class Keypad(DataManager):
|
|
362
615
|
rows: list[KeypadRow]
|
|
363
616
|
resize_keyboard: bool = True
|
|
364
617
|
on_time_keyboard: bool = False
|
|
365
618
|
|
|
366
|
-
def
|
|
367
|
-
|
|
619
|
+
def __init__(
|
|
620
|
+
self,
|
|
621
|
+
rows: list[KeypadRow],
|
|
622
|
+
resize_keyboard: bool = True,
|
|
623
|
+
on_time_keyboard: bool = False,
|
|
624
|
+
**kwargs
|
|
625
|
+
):
|
|
626
|
+
super().__init__(
|
|
627
|
+
rows=rows,
|
|
628
|
+
resize_keyboard=resize_keyboard,
|
|
629
|
+
on_time_keyboard=on_time_keyboard,
|
|
630
|
+
**kwargs
|
|
631
|
+
)
|
|
368
632
|
|
|
369
633
|
|
|
370
|
-
@dataclass
|
|
371
634
|
class MessageKeypadUpdate(DataManager):
|
|
372
635
|
message_id: Optional[str] = None
|
|
373
636
|
inline_keypad: Optional[Keypad] = None
|
|
374
637
|
|
|
375
|
-
def
|
|
376
|
-
|
|
638
|
+
def __init__(
|
|
639
|
+
self,
|
|
640
|
+
message_id: Optional[str] = None,
|
|
641
|
+
inline_keypad: Optional[Keypad] = None,
|
|
642
|
+
**kwargs
|
|
643
|
+
):
|
|
644
|
+
super().__init__(
|
|
645
|
+
message_id=message_id,
|
|
646
|
+
inline_keypad=inline_keypad,
|
|
647
|
+
**kwargs
|
|
648
|
+
)
|
|
377
649
|
|
|
378
650
|
|
|
379
|
-
@dataclass
|
|
380
651
|
class Message(DataManager):
|
|
381
652
|
message_id: Optional[str] = None
|
|
382
653
|
text: Optional[str] = None
|
|
@@ -395,19 +666,68 @@ class Message(DataManager):
|
|
|
395
666
|
poll: Optional[Poll] = None
|
|
396
667
|
live_location: Optional[LiveLocation] = None
|
|
397
668
|
|
|
398
|
-
def
|
|
399
|
-
|
|
669
|
+
def __init__(
|
|
670
|
+
self,
|
|
671
|
+
message_id: Optional[str] = None,
|
|
672
|
+
text: Optional[str] = None,
|
|
673
|
+
time: Optional[str] = None,
|
|
674
|
+
is_edited: Optional[bool] = None,
|
|
675
|
+
sender_type: Optional[enums.MessageSender] = None,
|
|
676
|
+
sender_id: Optional[str] = None,
|
|
677
|
+
aux_data: Optional[AuxData] = None,
|
|
678
|
+
file: Optional[File] = None,
|
|
679
|
+
reply_to_message_id: Optional[str] = None,
|
|
680
|
+
forwarded_from: Optional[ForwardedFrom] = None,
|
|
681
|
+
forwarded_no_link: Optional[str] = None,
|
|
682
|
+
location: Optional[Location] = None,
|
|
683
|
+
sticker: Optional[Sticker] = None,
|
|
684
|
+
contact_message: Optional[ContactMessage] = None,
|
|
685
|
+
poll: Optional[Poll] = None,
|
|
686
|
+
live_location: Optional[LiveLocation] = None,
|
|
687
|
+
**kwargs
|
|
688
|
+
):
|
|
689
|
+
super().__init__(
|
|
690
|
+
message_id=message_id,
|
|
691
|
+
text=text,
|
|
692
|
+
time=time,
|
|
693
|
+
is_edited=is_edited,
|
|
694
|
+
sender_type=sender_type,
|
|
695
|
+
sender_id=sender_id,
|
|
696
|
+
aux_data=aux_data,
|
|
697
|
+
file=file,
|
|
698
|
+
reply_to_message_id=reply_to_message_id,
|
|
699
|
+
forwarded_from=forwarded_from,
|
|
700
|
+
forwarded_no_link=forwarded_no_link,
|
|
701
|
+
location=location,
|
|
702
|
+
sticker=sticker,
|
|
703
|
+
contact_message=contact_message,
|
|
704
|
+
poll=poll,
|
|
705
|
+
live_location=live_location,
|
|
706
|
+
**kwargs
|
|
707
|
+
)
|
|
400
708
|
|
|
401
709
|
|
|
402
|
-
@dataclass
|
|
403
710
|
class MessageId(DataManager):
|
|
404
711
|
message_id: Optional[str] = None
|
|
405
712
|
file_id: Optional[str] = None
|
|
406
713
|
chat_id: Optional[str] = None
|
|
407
|
-
client: Optional[
|
|
714
|
+
client: Optional[Any] = None
|
|
408
715
|
|
|
409
|
-
def
|
|
410
|
-
|
|
716
|
+
def __init__(
|
|
717
|
+
self,
|
|
718
|
+
message_id: Optional[str] = None,
|
|
719
|
+
file_id: Optional[str] = None,
|
|
720
|
+
chat_id: Optional[str] = None,
|
|
721
|
+
client: Optional[Any] = None,
|
|
722
|
+
**kwargs
|
|
723
|
+
):
|
|
724
|
+
super().__init__(
|
|
725
|
+
message_id=message_id,
|
|
726
|
+
file_id=file_id,
|
|
727
|
+
chat_id=chat_id,
|
|
728
|
+
client=client,
|
|
729
|
+
**kwargs
|
|
730
|
+
)
|
|
411
731
|
|
|
412
732
|
async def delete(self):
|
|
413
733
|
return await self.client.delete_message(self.chat_id, self.message_id)
|
|
@@ -422,9 +742,8 @@ class MessageId(DataManager):
|
|
|
422
742
|
return await self.client.forward_message(self.chat_id, self.message_id, chat_id)
|
|
423
743
|
|
|
424
744
|
|
|
425
|
-
@dataclass
|
|
426
745
|
class Update(DataManager):
|
|
427
|
-
client: Optional[
|
|
746
|
+
client: Optional[Any] = None
|
|
428
747
|
type: Optional[enums.UpdateType] = None
|
|
429
748
|
chat_id: Optional[str] = None
|
|
430
749
|
removed_message_id: Optional[str] = None
|
|
@@ -432,12 +751,32 @@ class Update(DataManager):
|
|
|
432
751
|
updated_message: Optional[Message] = None
|
|
433
752
|
updated_payment: Optional[PaymentStatus] = None
|
|
434
753
|
|
|
435
|
-
def
|
|
436
|
-
|
|
754
|
+
def __init__(
|
|
755
|
+
self,
|
|
756
|
+
type: Optional[enums.UpdateType] = None,
|
|
757
|
+
chat_id: Optional[str] = None,
|
|
758
|
+
removed_message_id: Optional[str] = None,
|
|
759
|
+
new_message: Optional[Message] = None,
|
|
760
|
+
updated_message: Optional[Message] = None,
|
|
761
|
+
updated_payment: Optional[PaymentStatus] = None,
|
|
762
|
+
**kwargs
|
|
763
|
+
):
|
|
764
|
+
super().__init__(
|
|
765
|
+
type=type,
|
|
766
|
+
chat_id=chat_id,
|
|
767
|
+
removed_message_id=removed_message_id,
|
|
768
|
+
new_message=new_message,
|
|
769
|
+
updated_message=updated_message,
|
|
770
|
+
updated_payment=updated_payment,
|
|
771
|
+
**kwargs
|
|
772
|
+
)
|
|
437
773
|
|
|
438
774
|
async def download(self, file_name: str):
|
|
439
775
|
return await self.client.download_file(self.new_message.file.file_id, file_name)
|
|
440
776
|
|
|
777
|
+
async def forward(self, chat_id: str):
|
|
778
|
+
return await self.client.forward_message(self.chat_id, self.new_message.message_id, chat_id)
|
|
779
|
+
|
|
441
780
|
async def reply(
|
|
442
781
|
self,
|
|
443
782
|
text: str,
|
|
@@ -446,8 +785,16 @@ class Update(DataManager):
|
|
|
446
785
|
chat_keypad_type: Optional[enums.ChatKeypadType] = None,
|
|
447
786
|
disable_notification: bool = None,
|
|
448
787
|
) -> "MessageId":
|
|
449
|
-
return await self.client.send_message(
|
|
450
|
-
|
|
788
|
+
return await self.client.send_message(
|
|
789
|
+
self.chat_id,
|
|
790
|
+
text,
|
|
791
|
+
chat_keypad,
|
|
792
|
+
inline_keypad,
|
|
793
|
+
chat_keypad_type,
|
|
794
|
+
disable_notification,
|
|
795
|
+
self.new_message.message_id,
|
|
796
|
+
)
|
|
797
|
+
|
|
451
798
|
async def reply_poll(
|
|
452
799
|
self,
|
|
453
800
|
question: str,
|
|
@@ -455,10 +802,19 @@ class Update(DataManager):
|
|
|
455
802
|
chat_keypad: Keypad = None,
|
|
456
803
|
inline_keypad: Keypad = None,
|
|
457
804
|
chat_keypad_type: Optional[enums.ChatKeypadType] = None,
|
|
458
|
-
disable_notification: bool = False
|
|
805
|
+
disable_notification: bool = False,
|
|
459
806
|
) -> "MessageId":
|
|
460
|
-
return await self.client.send_poll(
|
|
461
|
-
|
|
807
|
+
return await self.client.send_poll(
|
|
808
|
+
self.chat_id,
|
|
809
|
+
question,
|
|
810
|
+
options,
|
|
811
|
+
chat_keypad,
|
|
812
|
+
inline_keypad,
|
|
813
|
+
chat_keypad_type,
|
|
814
|
+
disable_notification,
|
|
815
|
+
self.new_message.message_id,
|
|
816
|
+
)
|
|
817
|
+
|
|
462
818
|
async def reply_location(
|
|
463
819
|
self,
|
|
464
820
|
latitude: str,
|
|
@@ -468,8 +824,17 @@ class Update(DataManager):
|
|
|
468
824
|
chat_keypad_type: Optional[enums.ChatKeypadType] = None,
|
|
469
825
|
disable_notification: bool = False,
|
|
470
826
|
) -> "MessageId":
|
|
471
|
-
return await self.client.send_location(
|
|
472
|
-
|
|
827
|
+
return await self.client.send_location(
|
|
828
|
+
self.chat_id,
|
|
829
|
+
latitude,
|
|
830
|
+
longitude,
|
|
831
|
+
chat_keypad,
|
|
832
|
+
inline_keypad,
|
|
833
|
+
chat_keypad_type,
|
|
834
|
+
disable_notification,
|
|
835
|
+
self.new_message.message_id,
|
|
836
|
+
)
|
|
837
|
+
|
|
473
838
|
async def reply_contact(
|
|
474
839
|
self,
|
|
475
840
|
first_name: str,
|
|
@@ -480,8 +845,18 @@ class Update(DataManager):
|
|
|
480
845
|
chat_keypad_type: Optional[enums.ChatKeypadType] = None,
|
|
481
846
|
disable_notification: bool = False,
|
|
482
847
|
) -> "MessageId":
|
|
483
|
-
return await self.client.send_location(
|
|
484
|
-
|
|
848
|
+
return await self.client.send_location(
|
|
849
|
+
self.chat_id,
|
|
850
|
+
first_name,
|
|
851
|
+
last_name,
|
|
852
|
+
phone_number,
|
|
853
|
+
chat_keypad,
|
|
854
|
+
inline_keypad,
|
|
855
|
+
chat_keypad_type,
|
|
856
|
+
disable_notification,
|
|
857
|
+
self.new_message.message_id,
|
|
858
|
+
)
|
|
859
|
+
|
|
485
860
|
async def reply_sticker(
|
|
486
861
|
self,
|
|
487
862
|
sticker_id: str,
|
|
@@ -490,52 +865,61 @@ class Update(DataManager):
|
|
|
490
865
|
chat_keypad_type: Optional[enums.ChatKeypadType] = None,
|
|
491
866
|
disable_notification: bool = False,
|
|
492
867
|
) -> "MessageId":
|
|
493
|
-
return await self.client.send_message(
|
|
868
|
+
return await self.client.send_message(
|
|
869
|
+
self.chat_id,
|
|
870
|
+
sticker_id,
|
|
871
|
+
chat_keypad,
|
|
872
|
+
inline_keypad,
|
|
873
|
+
chat_keypad_type,
|
|
874
|
+
disable_notification,
|
|
875
|
+
self.new_message.message_id,
|
|
876
|
+
)
|
|
494
877
|
|
|
495
878
|
async def reply_file(
|
|
496
879
|
self,
|
|
497
|
-
file: str,
|
|
498
|
-
|
|
499
|
-
|
|
880
|
+
file: Union[str, bytes],
|
|
881
|
+
caption: Optional[str] = None,
|
|
882
|
+
file_name: Optional[str] = None,
|
|
500
883
|
type: enums.FileType = enums.FileType.File,
|
|
501
884
|
chat_keypad: Keypad = None,
|
|
502
885
|
inline_keypad: Keypad = None,
|
|
503
886
|
chat_keypad_type: Optional[enums.ChatKeypadType] = None,
|
|
504
887
|
disable_notification: bool = False,
|
|
505
888
|
) -> "MessageId":
|
|
506
|
-
return await self.client.send_file(
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
889
|
+
return await self.client.send_file(
|
|
890
|
+
self.chat_id,
|
|
891
|
+
file,
|
|
892
|
+
caption,
|
|
893
|
+
file_name,
|
|
894
|
+
type,
|
|
895
|
+
chat_keypad,
|
|
896
|
+
inline_keypad,
|
|
897
|
+
chat_keypad_type,
|
|
898
|
+
disable_notification,
|
|
899
|
+
self.new_message.message_id,
|
|
900
|
+
)
|
|
513
901
|
|
|
514
|
-
async def
|
|
515
|
-
return await self.reply_file(
|
|
902
|
+
async def reply_document(self, document: Union[str, bytes], caption: Optional[str] = None, file_name: Optional[str] = None, **kwargs) -> "MessageId":
|
|
903
|
+
return await self.reply_file(document, caption, file_name, "File", **kwargs)
|
|
516
904
|
|
|
517
|
-
async def
|
|
518
|
-
return await self.reply_file(
|
|
905
|
+
async def reply_photo(self, photo: Union[str, bytes], caption: Optional[str] = None, file_name: Optional[str] = None, **kwargs) -> "MessageId":
|
|
906
|
+
return await self.reply_file(photo, caption, file_name, "Image", **kwargs)
|
|
519
907
|
|
|
520
|
-
async def
|
|
521
|
-
return await self.reply_file(
|
|
908
|
+
async def reply_video(self, video: Union[str, bytes], caption: Optional[str] = None, file_name: Optional[str] = None, **kwargs) -> "MessageId":
|
|
909
|
+
return await self.reply_file(video, caption, file_name, "Video", **kwargs)
|
|
522
910
|
|
|
523
|
-
async def
|
|
524
|
-
return await self.reply_file(
|
|
911
|
+
async def reply_gif(self, gif: Union[str, bytes], caption: Optional[str] = None, file_name: Optional[str] = None, **kwargs) -> "MessageId":
|
|
912
|
+
return await self.reply_file(gif, caption, file_name, "Gif", **kwargs)
|
|
525
913
|
|
|
914
|
+
async def reply_music(self, music: Union[str, bytes], caption: Optional[str] = None, file_name: Optional[str] = None, **kwargs) -> "MessageId":
|
|
915
|
+
return await self.reply_file(music, caption, file_name, "Music", **kwargs)
|
|
526
916
|
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
updates: list[Update] = None
|
|
530
|
-
next_offset_id: Optional[str] = None
|
|
531
|
-
|
|
532
|
-
def __repr__(self):
|
|
533
|
-
return self.json()
|
|
917
|
+
async def reply_voice(self, voice: Union[str, bytes], caption: Optional[str] = None, file_name: Optional[str] = None, **kwargs) -> "MessageId":
|
|
918
|
+
return await self.reply_file(voice, caption, file_name, "Voice", **kwargs)
|
|
534
919
|
|
|
535
920
|
|
|
536
|
-
@dataclass
|
|
537
921
|
class InlineMessage(DataManager):
|
|
538
|
-
client: Optional[
|
|
922
|
+
client: Optional[Any] = None
|
|
539
923
|
sender_id: Optional[str] = None
|
|
540
924
|
text: Optional[str] = None
|
|
541
925
|
message_id: Optional[str] = None
|
|
@@ -544,5 +928,41 @@ class InlineMessage(DataManager):
|
|
|
544
928
|
location: Optional[Location] = None
|
|
545
929
|
aux_data: Optional[AuxData] = None
|
|
546
930
|
|
|
547
|
-
def
|
|
548
|
-
|
|
931
|
+
def __init__(
|
|
932
|
+
self,
|
|
933
|
+
sender_id: Optional[str] = None,
|
|
934
|
+
text: Optional[str] = None,
|
|
935
|
+
message_id: Optional[str] = None,
|
|
936
|
+
chat_id: Optional[str] = None,
|
|
937
|
+
file: Optional[File] = None,
|
|
938
|
+
location: Optional[Location] = None,
|
|
939
|
+
aux_data: Optional[AuxData] = None,
|
|
940
|
+
**kwargs
|
|
941
|
+
):
|
|
942
|
+
super().__init__(
|
|
943
|
+
sender_id=sender_id,
|
|
944
|
+
text=text,
|
|
945
|
+
message_id=message_id,
|
|
946
|
+
chat_id=chat_id,
|
|
947
|
+
file=file,
|
|
948
|
+
location=location,
|
|
949
|
+
aux_data=aux_data,
|
|
950
|
+
**kwargs
|
|
951
|
+
)
|
|
952
|
+
|
|
953
|
+
|
|
954
|
+
class Updates(DataManager):
|
|
955
|
+
updates: Optional[list[Update]] = None
|
|
956
|
+
next_offset_id: Optional[str] = None
|
|
957
|
+
|
|
958
|
+
def __init__(
|
|
959
|
+
self,
|
|
960
|
+
updates: Optional[list[Update]] = None,
|
|
961
|
+
next_offset_id: Optional[str] = None,
|
|
962
|
+
**kwargs
|
|
963
|
+
):
|
|
964
|
+
super().__init__(
|
|
965
|
+
updates=updates,
|
|
966
|
+
next_offset_id=next_offset_id,
|
|
967
|
+
**kwargs
|
|
968
|
+
)
|