maxapi-python 1.1.17__tar.gz → 1.1.19__tar.gz

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.
Files changed (55) hide show
  1. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/PKG-INFO +1 -1
  2. maxapi_python-1.1.19/docs/api.md +480 -0
  3. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/docs/client.md +13 -13
  4. maxapi_python-1.1.19/docs/examples.md +418 -0
  5. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/docs/index.md +5 -6
  6. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/docs/methods.md +13 -13
  7. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/docs/types.md +31 -31
  8. maxapi_python-1.1.19/examples/example.py +166 -0
  9. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/mkdocs.yml +0 -32
  10. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/pyproject.toml +1 -1
  11. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/core.py +114 -58
  12. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/interfaces.py +6 -0
  13. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/mixins/auth.py +56 -54
  14. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/mixins/handler.py +49 -1
  15. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/mixins/socket.py +72 -3
  16. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/mixins/websocket.py +117 -59
  17. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/payloads.py +4 -4
  18. maxapi_python-1.1.17/docs/api.md +0 -111
  19. maxapi_python-1.1.17/docs/examples.md +0 -92
  20. maxapi_python-1.1.17/examples/example.py +0 -123
  21. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/.github/FUNDING.yml +0 -0
  22. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  23. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  24. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/.github/ISSUE_TEMPLATE/refactor.md +0 -0
  25. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/.github/pull_request_template.md +0 -0
  26. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/.github/workflows/publish.yml +0 -0
  27. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/.gitignore +0 -0
  28. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/.pre-commit-config.yaml +0 -0
  29. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/LICENSE +0 -0
  30. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/README.md +0 -0
  31. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/assets/icon.svg +0 -0
  32. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/assets/logo.svg +0 -0
  33. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/docs/assets/icon.svg +0 -0
  34. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/examples/telegram_bridge.py +0 -0
  35. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/ruff.toml +0 -0
  36. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/__init__.py +0 -0
  37. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/crud.py +0 -0
  38. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/exceptions.py +0 -0
  39. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/files.py +0 -0
  40. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/filters.py +0 -0
  41. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/formatter.py +0 -0
  42. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/formatting.py +0 -0
  43. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/mixins/__init__.py +0 -0
  44. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/mixins/channel.py +0 -0
  45. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/mixins/group.py +0 -0
  46. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/mixins/message.py +0 -0
  47. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/mixins/self.py +0 -0
  48. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/mixins/telemetry.py +0 -0
  49. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/mixins/user.py +0 -0
  50. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/mixins/utils.py +0 -0
  51. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/models.py +0 -0
  52. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/navigation.py +0 -0
  53. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/static/constant.py +0 -0
  54. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/static/enum.py +0 -0
  55. {maxapi_python-1.1.17 → maxapi_python-1.1.19}/src/pymax/types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: maxapi-python
3
- Version: 1.1.17
3
+ Version: 1.1.19
4
4
  Summary: Python wrapper для API мессенджера Max
5
5
  Project-URL: Homepage, https://github.com/ink-developer/PyMax
6
6
  Project-URL: Repository, https://github.com/ink-developer/PyMax
@@ -0,0 +1,480 @@
1
+ # Полная документация API
2
+
3
+ Всё, что нужно знать о методах, типах и возможностях PyMax — асинхронный WebSocket клиент для мессенджера Max.
4
+
5
+ ## Содержание
6
+
7
+ - [Клиент](#client)
8
+ - [Типы данных](#data-types)
9
+ - [Исключения](#exceptions)
10
+ - [Перечисления](#enumerations)
11
+
12
+ ---
13
+
14
+ ## Клиент {#client}
15
+
16
+ ### MaxClient
17
+
18
+ Основной асинхронный WebSocket клиент для взаимодействия с сервисом мессенджера Max.
19
+
20
+ #### Конструктор
21
+
22
+ ```python
23
+ MaxClient(
24
+ phone: str,
25
+ uri: str = "...",
26
+ token: str | None = None,
27
+ work_dir: str = "...",
28
+ reconnect: bool = True,
29
+ reconnect_delay: float = 5.0,
30
+ ...
31
+ )
32
+ ```
33
+
34
+ **Параметры:**
35
+
36
+ | Параметр | Тип | Описание |
37
+ |----------|-----|---------|
38
+ | `phone` | `str` | Номер телефона для авторизации (обязательно) |
39
+ | `uri` | `str` | URI WebSocket сервера |
40
+ | `token` | `str | None` | Токен для восстановления сессии |
41
+ | `work_dir` | `str` | Директория для БД сессии |
42
+ | `reconnect` | `bool` | Включить автоматическое переподключение |
43
+ | `reconnect_delay` | `float` | Задержка переподключения в секундах |
44
+
45
+ #### Основные методы
46
+
47
+ ##### async start() -> None
48
+
49
+ Запускает клиент, подключается к WebSocket и авторизует пользователя.
50
+
51
+ ```python
52
+ client = MaxClient(phone="+1234567890")
53
+ await client.start()
54
+ ```
55
+
56
+ ##### async close() -> None
57
+
58
+ Корректно закрывает клиент и завершает все фоновые задачи.
59
+
60
+ ```python
61
+ await client.close()
62
+ ```
63
+
64
+ #### Свойства
65
+
66
+ | Свойство | Тип | Описание |
67
+ |----------|-----|---------|
68
+ | `is_connected` | `bool` | Статус подключения к WebSocket |
69
+ | `phone` | `str` | Номер телефона клиента |
70
+ | `me` | `Me | None` | Информация о текущем пользователе |
71
+ | `chats` | `list[Chat]` | Список всех чатов и групп |
72
+ | `dialogs` | `list[Dialog]` | Список личных диалогов |
73
+ | `channels` | `list[Channel]` | Список каналов |
74
+ | `logger` | `logging.Logger` | Логгер клиента |
75
+
76
+ #### Обработчики событий
77
+
78
+ ##### @on_message(filter: Filter | None = None)
79
+
80
+ Регистрирует обработчик входящих сообщений.
81
+
82
+ ```python
83
+ @client.on_message()
84
+ async def handle_message(msg: Message):
85
+ print(f"Сообщение от {msg.sender}: {msg.text}")
86
+ ```
87
+
88
+ ##### @on_start()
89
+
90
+ Регистрирует обработчик события запуска клиента.
91
+
92
+ ```python
93
+ @client.on_start()
94
+ async def on_startup():
95
+ print("Клиент запущен!")
96
+ ```
97
+
98
+ ### SocketMaxClient
99
+
100
+ Вариант клиента на основе TCP сокета, наследует все методы и свойства MaxClient.
101
+
102
+ ```python
103
+ client = SocketMaxClient(phone="+1234567890")
104
+ ```
105
+
106
+ ---
107
+
108
+ ## Типы данных {#data-types}
109
+
110
+ ### Me
111
+
112
+ Информация о профиле текущего пользователя.
113
+
114
+ **Свойства:**
115
+
116
+ | Свойство | Тип | Описание |
117
+ |----------|-----|---------|
118
+ | `id` | `int` | ID пользователя |
119
+ | `phone` | `str` | Номер телефона |
120
+ | `names` | `list[Names]` | Список имен профиля |
121
+ | `account_status` | `int` | Код статуса аккаунта |
122
+ | `options` | `dict` | Дополнительные параметры |
123
+
124
+ ### User
125
+
126
+ Информация о пользователе.
127
+
128
+ **Свойства:**
129
+
130
+ | Свойство | Тип | Описание |
131
+ |----------|-----|---------|
132
+ | `id` | `int` | ID пользователя |
133
+ | `names` | `list[Names]` | Список имен |
134
+ | `account_status` | `int` | Статус аккаунта |
135
+ | `photo_id` | `int | None` | ID фото профиля |
136
+ | `description` | `str | None` | Биография/описание |
137
+
138
+ ### Message
139
+
140
+ Сообщение в чате.
141
+
142
+ **Свойства:**
143
+
144
+ | Свойство | Тип | Описание |
145
+ |----------|-----|---------|
146
+ | `id` | `int` | ID сообщения |
147
+ | `chat_id` | `int | None` | ID чата/диалога |
148
+ | `sender` | `int | None` | ID отправителя |
149
+ | `text` | `str` | Текст сообщения |
150
+ | `time` | `int` | Unix timestamp |
151
+ | `type` | `MessageType | str` | Тип сообщения |
152
+ | `attaches` | `list` | Вложенные файлы/медиа |
153
+ | `reaction_info` | `ReactionInfo | None` | Данные реакций |
154
+ | `edit_time` | `int | None` | Время редактирования |
155
+
156
+ ### Chat
157
+
158
+ Информация о чате или группе.
159
+
160
+ **Свойства:**
161
+
162
+ | Свойство | Тип | Описание |
163
+ |----------|-----|---------|
164
+ | `id` | `int` | ID чата |
165
+ | `type` | `ChatType | str` | Тип: DIALOG, CHAT, CHANNEL |
166
+ | `title` | `str | None` | Название чата |
167
+ | `owner` | `int` | ID владельца |
168
+ | `participants_count` | `int` | Количество участников |
169
+ | `admins` | `list[int]` | Список ID администраторов |
170
+ | `description` | `str | None` | Описание чата |
171
+ | `rules` | `str | None` | Правила чата |
172
+
173
+ ### Dialog
174
+
175
+ Личный диалог между двумя пользователями.
176
+
177
+ **Свойства:**
178
+
179
+ | Свойство | Тип | Описание |
180
+ |----------|-----|---------|
181
+ | `id` | `int` | ID диалога |
182
+ | `owner` | `int` | ID собеседника |
183
+ | `type` | `ChatType` | Всегда `ChatType.DIALOG` |
184
+ | `last_message` | `Message | None` | Последнее сообщение |
185
+
186
+ ### Channel
187
+
188
+ Канал (наследуется от Chat). Специализированный тип чата для трансляции информации.
189
+
190
+ ### Contact
191
+
192
+ Запись в адресной книге.
193
+
194
+ **Свойства:**
195
+
196
+ | Свойство | Тип | Описание |
197
+ |----------|-----|---------|
198
+ | `id` | `int` | ID контакта |
199
+ | `names` | `list[Names]` | Имена контакта |
200
+ | `status` | `int` | Код статуса |
201
+ | `photos` | `list` | Фотографии контакта |
202
+
203
+ ### Member
204
+
205
+ Участник чата.
206
+
207
+ **Свойства:**
208
+
209
+ | Свойство | Тип | Описание |
210
+ |----------|-----|---------|
211
+ | `contact` | `Contact` | Информация о контакте участника |
212
+ | `presence` | `Presence | None` | Статус онлайна |
213
+ | `read_mark` | `int` | Последнее прочитанное сообщение |
214
+
215
+ ### Типы вложений
216
+
217
+ #### PhotoAttach
218
+
219
+ Вложение с фотографией.
220
+
221
+ ```python
222
+ PhotoAttach(id: int, width: int, height: int, ...)
223
+ ```
224
+
225
+ #### VideoAttach
226
+
227
+ Вложение с видео.
228
+
229
+ ```python
230
+ VideoAttach(id: int, width: int, height: int, duration: int, ...)
231
+ ```
232
+
233
+ #### FileAttach
234
+
235
+ Вложение с файлом.
236
+
237
+ ```python
238
+ FileAttach(id: int, name: str, size: int, ...)
239
+ ```
240
+
241
+ #### StickerAttach
242
+
243
+ Вложение со стикером.
244
+
245
+ ```python
246
+ StickerAttach(id: int, sticker_id: int, ...)
247
+ ```
248
+
249
+ #### AudioAttach
250
+
251
+ Вложение с аудио/голосовым сообщением.
252
+
253
+ ```python
254
+ AudioAttach(id: int, duration: int, ...)
255
+ ```
256
+
257
+ #### ControlAttach
258
+
259
+ Вложение с управляющим сообщением (специальный внутренний тип).
260
+
261
+ ---
262
+
263
+ ## Исключения {#exceptions}
264
+
265
+ ### Error
266
+
267
+ Базовое исключение для всех ошибок PyMax.
268
+
269
+ ```python
270
+ try:
271
+ await client.start()
272
+ except pymax.Error as e:
273
+ print(f"Ошибка: {e.message}")
274
+ ```
275
+
276
+ **Свойства:**
277
+
278
+ - `error`: Код ошибки
279
+ - `message`: Сообщение об ошибке
280
+ - `title`: Заголовок ошибки
281
+ - `localized_message`: Локализованное сообщение
282
+
283
+ ### InvalidPhoneError
284
+
285
+ Возникает, когда формат номера телефона неверный.
286
+
287
+ ```python
288
+ except pymax.InvalidPhoneError:
289
+ print("Неверный номер телефона")
290
+ ```
291
+
292
+ ### LoginError
293
+
294
+ Возникает при ошибке авторизации.
295
+
296
+ ```python
297
+ except pymax.LoginError:
298
+ print("Ошибка входа")
299
+ ```
300
+
301
+ ### WebSocketNotConnectedError
302
+
303
+ Возникает, когда WebSocket не подключен.
304
+
305
+ ```python
306
+ except pymax.WebSocketNotConnectedError:
307
+ print("WebSocket отключен")
308
+ ```
309
+
310
+ ### SocketNotConnectedError
311
+
312
+ Возникает, когда TCP сокет не подключен (SocketMaxClient).
313
+
314
+ ```python
315
+ except pymax.SocketNotConnectedError:
316
+ print("Сокет отключен")
317
+ ```
318
+
319
+ ### RateLimitError
320
+
321
+ Возникает при превышении лимита запросов.
322
+
323
+ ```python
324
+ except pymax.RateLimitError as e:
325
+ print(f"Лимит превышен на {e.retry_after} секунд")
326
+ ```
327
+
328
+ ### ResponseError
329
+
330
+ Возникает, когда ответ сервера указывает на ошибку.
331
+
332
+ ```python
333
+ except pymax.ResponseError as e:
334
+ print(f"Ошибка сервера: {e.error}")
335
+ ```
336
+
337
+ ---
338
+
339
+ ## Перечисления {#enumerations}
340
+
341
+ ### ChatType
342
+
343
+ Тип классификации чата.
344
+
345
+ | Значение | Описание |
346
+ |----------|---------|
347
+ | `DIALOG` | Личная переписка (1:1) |
348
+ | `CHAT` | Групповой чат |
349
+ | `CHANNEL` | Канал/трансляция |
350
+
351
+ ```python
352
+ from pymax import ChatType
353
+
354
+ if chat.type == ChatType.DIALOG:
355
+ print("Личный чат")
356
+ ```
357
+
358
+ ### MessageType
359
+
360
+ Тип классификации сообщения.
361
+
362
+ | Значение | Описание |
363
+ |----------|---------|
364
+ | `TEXT` | Обычное текстовое сообщение |
365
+ | `SYSTEM` | Системное сообщение |
366
+ | `SERVICE` | Сервисное сообщение |
367
+
368
+ ### MessageStatus
369
+
370
+ Флаги статуса сообщения.
371
+
372
+ | Значение | Описание |
373
+ |----------|---------|
374
+ | `EDITED` | Сообщение отредактировано |
375
+ | `REMOVED` | Сообщение удалено |
376
+
377
+ ### AccessType
378
+
379
+ Уровень доступа для чатов/каналов.
380
+
381
+ | Значение | Описание |
382
+ |----------|---------|
383
+ | `PUBLIC` | Открытый доступ |
384
+ | `PRIVATE` | Приватный (только по приглашению) |
385
+ | `SECRET` | Секретный/зашифрованный |
386
+
387
+ ### AttachType
388
+
389
+ Тип вложения файла.
390
+
391
+ | Значение | Описание |
392
+ |----------|---------|
393
+ | `PHOTO` | Фотография/изображение |
394
+ | `VIDEO` | Видеофайл |
395
+ | `FILE` | Документ/файл |
396
+ | `STICKER` | Стикер/эмодзи |
397
+ | `AUDIO` | Аудио/голосовое сообщение |
398
+ | `CONTROL` | Управляющее/системное вложение |
399
+
400
+ ### DeviceType
401
+
402
+ Тип устройства платформы.
403
+
404
+ | Значение | Описание |
405
+ |----------|---------|
406
+ | `WEB` | Веб-приложение |
407
+ | `ANDROID` | Приложение Android |
408
+ | `IOS` | Приложение iOS |
409
+ | `DESKTOP` | Десктопный клиент |
410
+
411
+ ### AuthType
412
+
413
+ Тип метода аутентификации.
414
+
415
+ | Значение | Описание |
416
+ |----------|---------|
417
+ | `START_AUTH` | Начало процесса аутентификации |
418
+ | `CHECK_CODE` | Проверка кода OTP |
419
+ | `REGISTER` | Регистрация нового аккаунта |
420
+
421
+ ### ElementType
422
+
423
+ Тип элемента форматированного текста.
424
+
425
+ | Значение | Описание |
426
+ |----------|---------|
427
+ | `text` | Простой текст |
428
+ | `mention` | Упоминание пользователя @user |
429
+ | `link` | Гиперссылка |
430
+ | `emoji` | Эмодзи/эмотикон |
431
+ | `bold` | Жирное форматирование |
432
+ | `italic` | Курсивное форматирование |
433
+
434
+ ### FormattingType
435
+
436
+ Тип форматирования текста.
437
+
438
+ | Значение | Описание |
439
+ |----------|---------|
440
+ | `BOLD` | Жирный текст |
441
+ | `ITALIC` | Курсив |
442
+ | `UNDERLINE` | Подчеркивание |
443
+ | `STRIKETHROUGH` | Зачеркивание |
444
+ | `MONOSPACE` | Моноширинный/код |
445
+
446
+ ### MarkupType
447
+
448
+ Тип разметки сообщения.
449
+
450
+ | Значение | Описание |
451
+ |----------|---------|
452
+ | `TEXT` | Простой текст |
453
+ | `HTML` | Разметка HTML |
454
+ | `MARKDOWN` | Разметка Markdown |
455
+
456
+ ### ContactAction
457
+
458
+ Действие взаимодействия с контактом.
459
+
460
+ | Значение | Описание |
461
+ |----------|---------|
462
+ | `ADDED` | Контакт добавлен |
463
+ | `REMOVED` | Контакт удален |
464
+ | `CHANGED` | Информация контакта изменена |
465
+
466
+ ### Opcode
467
+
468
+ Коды операций протокола WebSocket (150+ значений).
469
+
470
+ Коды низкоуровневого общения для внутреннего использования. Основные примеры:
471
+
472
+ | Значение | Код | Описание |
473
+ |----------|-----|---------|
474
+ | 1 | `PING` | Проверка соединения |
475
+ | 2 | `PONG` | Ответ на проверку |
476
+ | 3 | `LOGIN` | Запрос аутентификации |
477
+ | 4 | `MSG_SEND` | Отправка сообщения |
478
+ | 5 | `MSG_READ` | Отметить сообщение прочитанным |
479
+
480
+ ---
@@ -1,6 +1,6 @@
1
- # 🚀 Руководство по MaxClient
1
+ # Как пользоваться MaxClient
2
2
 
3
- ## 📋 Содержание
3
+ ## Содержание
4
4
 
5
5
  - [Установка и Настройка](#установка-и-настройка)
6
6
  - [Основные Возможности](#основные-возможности)
@@ -35,13 +35,13 @@ client = MaxClient(
35
35
  |----------|-----|----------|---------------|
36
36
  | `phone` | `str` | Номер телефона для авторизации | - |
37
37
  | `uri` | `str` | URI WebSocket сервера | `Constants.WEBSOCKET_URI.value` |
38
- | `headers` | `dict[str, Any] \| None` | Заголовки для соединения | `Constants.DEFAULT_USER_AGENT_PAYLOAD.value` |
39
- | `token` | `str \| None` | Токен авторизации | `None` |
38
+ | `headers` | `dict[str, Any] | None` | Заголовки для соединения | `Constants.DEFAULT_USER_AGENT_PAYLOAD.value` |
39
+ | `token` | `str | None` | Токен авторизации | `None` |
40
40
  | `send_fake_telemetry` | `bool` | Отправка телеметрии | `True` |
41
41
  | `host` | `str` | Хост API сервера | `Constants.HOST.value` |
42
42
  | `port` | `int` | Порт API сервера | `Constants.PORT.value` |
43
43
  | `work_dir` | `str` | Директория для БД | `"."` |
44
- | `logger` | `logging.Logger \| None` | Пользовательский логгер | `None` |
44
+ | `logger` | `logging.Logger | None` | Пользовательский логгер | `None` |
45
45
 
46
46
  **Пример базовой инициализации**
47
47
  ```python
@@ -71,7 +71,7 @@ client = MaxClient(
71
71
  )
72
72
  ```
73
73
 
74
- ## 🔑 Основные возможности {#основные-возможности}
74
+ ## Основные возможности {#основные-возможности}
75
75
 
76
76
  ### Свойства Клиента
77
77
 
@@ -82,7 +82,7 @@ client = MaxClient(
82
82
  |----------|-----|----------|
83
83
  | `is_connected` | `bool` | Статус подключения |
84
84
  | `phone` | `str` | Номер телефона |
85
- | `me` | `Me \| None` | Информация о пользователе |
85
+ | `me` | `Me | None` | Информация о пользователе |
86
86
 
87
87
  #### Доступ к Данным
88
88
 
@@ -93,7 +93,7 @@ client = MaxClient(
93
93
  | `dialogs` | `list[Dialog]` | Личные диалоги |
94
94
  | `channels` | `list[Channel]` | Каналы |
95
95
 
96
- ## 🔌 Управление подключением {#управление-подключением}
96
+ ## Управление подключением {#управление-подключением}
97
97
 
98
98
  ### Запуск и Остановка
99
99
 
@@ -140,7 +140,7 @@ async def main():
140
140
  # Клиент автоматически закроется
141
141
  ```
142
142
 
143
- ## 📨 Работа с Сообщениями
143
+ ## Работа с Сообщениями
144
144
 
145
145
  ### Обработка Сообщений
146
146
 
@@ -169,7 +169,7 @@ async def main():
169
169
  print(f"Текст: {message.text}")
170
170
  ```
171
171
 
172
- ## 💾 Работа с данными {#работа-с-данными}
172
+ ## Работа с данными {#работа-с-данными}
173
173
 
174
174
  ### Доступ к Чатам
175
175
 
@@ -202,7 +202,7 @@ async def main():
202
202
  print(f"Статус: {me.account_status}")
203
203
  ```
204
204
 
205
- ## 💽 Хранение Данных
205
+ ## Хранение Данных
206
206
 
207
207
  ### База Данных
208
208
 
@@ -217,7 +217,7 @@ async def main():
217
217
  - Персистентное хранение
218
218
  - Безопасное сохранение токенов
219
219
 
220
- ## 📚 Лучшие практики {#лучшие-практики}
220
+ ## Лучшие практики {#лучшие-практики}
221
221
 
222
222
  ### Безопасное Использование
223
223
 
@@ -266,7 +266,7 @@ async def main():
266
266
  async def handle_message(message: Message):
267
267
  await self.process_message(message)
268
268
 
269
- @self.client.on_start()
269
+ @self.client.on_start
270
270
  async def handle_start():
271
271
  await self.on_ready()
272
272