maxapi-python 2.4.0__py3-none-any.whl → 2.5.0__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.
Files changed (101) hide show
  1. {maxapi_python-2.4.0.dist-info → maxapi_python-2.5.0.dist-info}/METADATA +22 -12
  2. maxapi_python-2.5.0.dist-info/RECORD +195 -0
  3. {maxapi_python-2.4.0.dist-info → maxapi_python-2.5.0.dist-info}/WHEEL +1 -1
  4. pymax/__init__.py +8 -2
  5. pymax/_data/apk_fingerprints.json +374 -17
  6. pymax/_data/rootca_ssl_rsa2022.crt +33 -0
  7. pymax/api/auth/service.py +15 -2
  8. pymax/api/auth/types.py +3 -0
  9. pymax/api/bots/payloads.py +8 -0
  10. pymax/api/bots/service.py +13 -1
  11. pymax/api/chats/enums.py +1 -0
  12. pymax/api/chats/payloads.py +21 -1
  13. pymax/api/chats/service.py +41 -0
  14. pymax/api/facade.py +2 -0
  15. pymax/api/messages/__init__.py +1 -1
  16. pymax/api/messages/enums.py +1 -0
  17. pymax/api/messages/payloads.py +56 -4
  18. pymax/api/messages/service.py +405 -27
  19. pymax/api/response.py +1 -1
  20. pymax/api/stories/__init__.py +2 -0
  21. pymax/api/stories/enums.py +19 -0
  22. pymax/api/stories/payloads.py +64 -0
  23. pymax/api/stories/service.py +198 -0
  24. pymax/api/uploads/payloads.py +42 -1
  25. pymax/api/uploads/service.py +171 -69
  26. pymax/app.py +39 -8
  27. pymax/auth/__init__.py +2 -0
  28. pymax/auth/exceptions.py +9 -0
  29. pymax/auth/providers.py +6 -2
  30. pymax/auth/qr.py +11 -1
  31. pymax/auth/sms.py +11 -1
  32. pymax/base.py +146 -27
  33. pymax/client.py +39 -11
  34. pymax/client_web.py +15 -12
  35. pymax/config.py +101 -53
  36. pymax/di/__init__.py +2 -0
  37. pymax/di/context.py +18 -0
  38. pymax/di/resolver.py +38 -0
  39. pymax/dispatch/__init__.py +7 -0
  40. pymax/dispatch/dispatcher.py +143 -40
  41. pymax/dispatch/enums.py +1 -0
  42. pymax/dispatch/mapping.py +23 -3
  43. pymax/dispatch/middleware.py +32 -0
  44. pymax/dispatch/resolvers.py +4 -0
  45. pymax/dispatch/router.py +86 -34
  46. pymax/files/base.py +58 -1
  47. pymax/files/video.py +32 -40
  48. pymax/files/voice.py +18 -4
  49. pymax/filters/__init__.py +15 -0
  50. pymax/filters/base.py +218 -0
  51. pymax/filters/containers/__init__.py +2 -0
  52. pymax/filters/containers/chat.py +240 -0
  53. pymax/filters/containers/message.py +147 -0
  54. pymax/filters/filters.py +211 -0
  55. pymax/filters/magic.py +13 -0
  56. pymax/filters/presets.py +88 -0
  57. pymax/filters/refs.py +56 -0
  58. pymax/fingerprint/fingerprint.py +5 -22
  59. pymax/fingerprint/models.py +1 -0
  60. pymax/formatting/markdown.py +55 -1
  61. pymax/fsm/__init__.py +3 -0
  62. pymax/fsm/context.py +30 -0
  63. pymax/fsm/protocol.py +14 -0
  64. pymax/fsm/state.py +70 -0
  65. pymax/fsm/storage.py +151 -0
  66. pymax/infra/base.py +2 -0
  67. pymax/infra/bots.py +20 -0
  68. pymax/infra/chat.py +37 -5
  69. pymax/infra/message.py +204 -9
  70. pymax/infra/protocol.py +5 -1
  71. pymax/infra/stories.py +205 -0
  72. pymax/integrations/__init__.py +0 -0
  73. pymax/integrations/dishka.py +109 -0
  74. pymax/protocol/enums.py +2 -0
  75. pymax/protocol/tcp/payload.py +0 -2
  76. pymax/session/__init__.py +1 -1
  77. pymax/session/models.py +30 -0
  78. pymax/session/protocol.py +33 -7
  79. pymax/session/store.py +73 -5
  80. pymax/transport/tcp.py +11 -3
  81. pymax/types/domain/__init__.py +23 -1
  82. pymax/types/domain/attachments/__init__.py +1 -1
  83. pymax/types/domain/attachments/call.py +7 -1
  84. pymax/types/domain/attachments/contact.py +3 -3
  85. pymax/types/domain/attachments/control.py +3 -0
  86. pymax/types/domain/attachments/enums.py +16 -0
  87. pymax/types/domain/attachments/keyboards/__init__.py +1 -1
  88. pymax/types/domain/attachments/keyboards/enums.py +12 -0
  89. pymax/types/domain/attachments/keyboards/inline.py +74 -3
  90. pymax/types/domain/attachments/video.py +3 -3
  91. pymax/types/domain/callback.py +19 -0
  92. pymax/types/domain/comment.py +24 -0
  93. pymax/types/domain/enums.py +7 -0
  94. pymax/types/domain/message.py +158 -9
  95. pymax/types/domain/story.py +126 -0
  96. pymax/types/events/reaction.py +28 -4
  97. pymax/versions/__init__.py +2 -0
  98. pymax/versions/catalog.py +104 -0
  99. pymax/versions/exceptions.py +10 -0
  100. maxapi_python-2.4.0.dist-info/RECORD +0 -161
  101. {maxapi_python-2.4.0.dist-info → maxapi_python-2.5.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: maxapi-python
3
- Version: 2.4.0
3
+ Version: 2.5.0
4
4
  Summary: Python wrapper для API мессенджера Max
5
5
  Project-URL: Homepage, https://github.com/MaxApiTeam/PyMax
6
6
  Project-URL: Repository, https://github.com/MaxApiTeam/PyMax
@@ -32,6 +32,8 @@ Requires-Dist: python-socks[asyncio]>=2.8.1
32
32
  Requires-Dist: qrcode>=8.2
33
33
  Requires-Dist: websockets>=16.0
34
34
  Requires-Dist: zstandard>=0.25.0
35
+ Provides-Extra: dishka
36
+ Requires-Dist: dishka>=1.10.1; extra == 'dishka'
35
37
  Provides-Extra: video
36
38
  Requires-Dist: tinytag>=2.2.1; extra == 'video'
37
39
  Description-Content-Type: text/markdown
@@ -43,6 +45,7 @@ Python-библиотека для Max API.
43
45
  [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)
44
46
  [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
45
47
  [![Package](https://img.shields.io/badge/package-maxapi--python-orange.svg)](https://pypi.org/project/maxapi-python/)
48
+ [![PyPI Downloads](https://static.pepy.tech/personalized-badge/maxapi-python?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/maxapi-python)
46
49
 
47
50
  > [!WARNING]
48
51
  > PyMax использует неофициальный внутренний API Max. API может измениться без
@@ -61,11 +64,15 @@ WebSocket.
61
64
 
62
65
  - Авторизация по телефону и SMS-коду через `Client`.
63
66
  - QR-авторизация web-клиента через `WebClient`.
64
- - Роутеры, фильтры, `on_start`, raw-события и typed events.
65
- - Сообщения: отправка, ответы, reply, реакции, pin, read, delete и история.
67
+ - Роутеры, составные фильтры, middleware, `on_start`, raw-события и typed events.
68
+ - FSM для диалогов и необязательная интеграция с Dishka.
69
+ - Сообщения: отправка и планирование, ответы, реакции, pin, read, delete и история.
70
+ - Комментарии к постам каналов и нажатия inline-кнопок ботов.
71
+ - Сторис: фото и видео, лента, реакции и статистика просмотров.
66
72
  - Чаты, группы, участники, invite-ссылки и настройки групп.
67
73
  - Пользователи, контакты, профиль, папки, активные сессии и 2FA.
68
- - Вложения: `Photo`, `File`, `Video`.
74
+ - Вложения: `Photo`, `File`, `Video`, `Voice`, `VideoNote`.
75
+ - Выбор версии mobile-клиента с локальным или обновляемым каталогом fingerprints.
69
76
  - SQLite-сессии, sync-state, reconnect и debug-логи.
70
77
  - Pydantic-модели и удобные domain-объекты.
71
78
 
@@ -98,6 +105,7 @@ pip install git+https://github.com/MaxApiTeam/PyMax.git
98
105
  import asyncio
99
106
 
100
107
  from pymax import Client, Message
108
+ from pymax.filters import Command
101
109
 
102
110
  client = Client(
103
111
  phone="+79990000000",
@@ -112,7 +120,7 @@ async def on_start(client: Client) -> None:
112
120
  print("Ваш ID:", client.me.contact.id if client.me else "unknown")
113
121
 
114
122
 
115
- @client.on_message()
123
+ @client.on_message(Command("start"))
116
124
  async def on_message(message: Message, client: Client) -> None:
117
125
  print(message.chat_id, message.sender, message.text)
118
126
 
@@ -128,6 +136,8 @@ if __name__ == "__main__":
128
136
  asyncio.run(main())
129
137
  ```
130
138
 
139
+ Отправьте `/start`, чтобы вызвать обработчик.
140
+
131
141
  ## WebClient
132
142
 
133
143
  `WebClient` использует WebSocket и QR-авторизацию:
@@ -155,15 +165,12 @@ Handler всегда принимает событие и клиента: `(even
155
165
 
156
166
  ```python
157
167
  from pymax import Client, ClientRouter, Message
168
+ from pymax.filters import Command
158
169
 
159
170
  router = ClientRouter()
160
171
 
161
172
 
162
- def is_start(message: Message) -> bool:
163
- return message.text == "/start"
164
-
165
-
166
- @router.on_message(is_start)
173
+ @router.on_message(Command("start"))
167
174
  async def start(message: Message, client: Client) -> None:
168
175
  await message.answer("Готово")
169
176
 
@@ -176,8 +183,11 @@ client.include_router(router)
176
183
 
177
184
  - [Getting Started](docs/getting-started.rst) - первый запуск и сессии.
178
185
  - [Client](docs/client.rst) - жизненный цикл клиента, reconnect и sync-state.
179
- - [Router](docs/router.rst) - роутеры, фильтры и raw events.
186
+ - [Router](docs/router.rst) - роутеры, фильтры, middleware и raw events.
187
+ - [FSM](docs/fsm.rst) - состояния и данные диалога.
188
+ - [DI и Dishka](docs/di.rst) - зависимости обработчиков.
180
189
  - [Messages](docs/messages.rst) - сообщения, реакции, история и вложения.
190
+ - [Stories](docs/stories.rst) - публикация и чтение сторис.
181
191
  - [Files](docs/files.rst) - отправка и скачивание файлов.
182
192
  - [FAQ](docs/faq.rst) и [Troubleshooting](docs/troubleshooting.rst) - частые
183
193
  проблемы.
@@ -0,0 +1,195 @@
1
+ pymax/__init__.py,sha256=JnKQOXbXOE3WQxf1vIkMOqf3YVv8nP6y9q5IKcHXJPs,1791
2
+ pymax/app.py,sha256=8Mcje3MqLXDxETwvJMBS3q92IvNTMtZHbp1MBcOT728,14318
3
+ pymax/base.py,sha256=LY1iR30BvGrojqhHib2K9B9kHO62KjlOTX6X7jSrtSA,15785
4
+ pymax/client.py,sha256=dXW7991CcnNqBcx7EjP4UBpR7mHMfi4tb0ElkcgW7Vs,5421
5
+ pymax/client_web.py,sha256=1F5AULJILcXE_Xphg666dZ-vcR3U6OvdACZUd9QrBkw,3293
6
+ pymax/config.py,sha256=bEvuu0UyPt_MjPYmkIgPS_ESjLqBNxl_f2cvpC7hGjY,12583
7
+ pymax/exceptions.py,sha256=8pxjZsfgrMPrZfE3zedIbabqP75diEr2_6Xg3PGjiSQ,963
8
+ pymax/logging.py,sha256=j2-7guTR8otCrSk0w7NL2y-d_gJoNUS5Fh9NtsdEgIg,4632
9
+ pymax/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ pymax/routers.py,sha256=UvIEWcBF1VPBmUFrubBQ7uo3DZylf4qdbnQGDkUYjyE,225
11
+ pymax/_data/apk_fingerprints.json,sha256=r3v42s32CgiRnE3c26k6BCZf8f_cQjrTFfvHKwWmqxs,53194
12
+ pymax/_data/rootca_ssl_rsa2022.crt,sha256=qoAO80VCLWFYxvr-HAbEKdvaIcPfS7HMtFqSDsERE5k,2057
13
+ pymax/api/__init__.py,sha256=oWC09vGaP6S7_nnTJ4y5PbTkbA4U29DhafpwIqD2QGI,356
14
+ pymax/api/binding.py,sha256=q63tSMxwh8cX28r2JwK3_TyxsV8zThflMaQiMb0vx8M,1613
15
+ pymax/api/facade.py,sha256=HzzzXsg1XiyqzY9WQolHUhglClgb01qG8gPgy8IGDqo,978
16
+ pymax/api/models.py,sha256=Vc0y9__za1aju3zgHW4aS6lMr1SyZi7q0lrQhfviFUA,344
17
+ pymax/api/response.py,sha256=8T7e1YImYBhdZn7VKp2Mx_jv43qBMaam0Z950mxeswo,2593
18
+ pymax/api/auth/__init__.py,sha256=m6yw6RPrq10iNkSI8z59n3OXTnAw8VfxIALnhVztL2g,33
19
+ pymax/api/auth/enums.py,sha256=m8zRS62894Szs-xyGIIvyGS51Fjq5ldp89kvxu_C3gg,681
20
+ pymax/api/auth/payloads.py,sha256=TA5am-M5IIOE2CWENQ8NEIjoYYHzyZdahS24OPA3VnA,3888
21
+ pymax/api/auth/service.py,sha256=l1TMwy5OSz-bH29lRpOqTJxGCO6uVTRaO6A5QpaGSjE,16002
22
+ pymax/api/auth/types.py,sha256=3ImesX-4HjWAo7bO4aRoRnTmVGUNuK__jrK2fSChZ1c,254
23
+ pymax/api/bots/__init__.py,sha256=4P7rM-XeeDOElEktov1Vbfo8nzjJgmyA4_pQl4WvzRQ,33
24
+ pymax/api/bots/payloads.py,sha256=G8wmQwz0XgeSjp7hPy-gxynnAuKzRA4pKlsIv245MaE,334
25
+ pymax/api/bots/service.py,sha256=2f2wUIkaIS_PJPO3piIecLmi8jWzGTcdi00B2IUy0y4,1436
26
+ pymax/api/chats/__init__.py,sha256=P_T3sFrAL-8WCGEWaRGTjQfiOIdjJpp0PU5Pzh49Pp0,179
27
+ pymax/api/chats/enums.py,sha256=lheTbup4DbSJWUNm-DkN2Qg3KxeXlFPE8AKGACneQ9U,925
28
+ pymax/api/chats/payloads.py,sha256=0yB5w-Q2mI0YVvP-zogucvifmgzgV6rdgG0W-xJw4rU,3780
29
+ pymax/api/chats/service.py,sha256=dax5dLgrnVTrgbhswTcqx9wDWxOYQ82AHrIxo9ogtmo,14576
30
+ pymax/api/messages/__init__.py,sha256=wm7n4mUUiVMQQ2w5Sj5pdHDzMyKfzOdfVTxndIHDDVg,51
31
+ pymax/api/messages/enums.py,sha256=gsCbu75E4sDdaL3t5cbtsIFXTD7lrliYsrywM-kzZ6w,418
32
+ pymax/api/messages/payloads.py,sha256=__-HbbjfwtfV3BelJxhHxkbYcRh-Ucc9yIO160emE8o,3793
33
+ pymax/api/messages/service.py,sha256=uTMlb3l8WYU0mURRF8VuvlGK9mNgqK2qEEX3Fh9mIeo,26428
34
+ pymax/api/self/__init__.py,sha256=f3c1icSKASVm2BKuDLzNmniJHokLk9d82GC3EfyJ5tc,138
35
+ pymax/api/self/enums.py,sha256=5WUmdfyFVCaMIeiTngIa2X8pK7DBvkGtWgeopgWwkWI,393
36
+ pymax/api/self/payloads.py,sha256=wVIaETW0MwY1cKbQsNZgyqPm6dGFM_q0ih-TuWWXD1s,2468
37
+ pymax/api/self/service.py,sha256=tge8jTFruJRrZRNkP7HGbWR9ztIPBqGPkA8hh_Ww3Es,6089
38
+ pymax/api/session/__init__.py,sha256=zo-rCKBVBsFK-810T-Le4VbAYKt109cQ6elf0UkgiNk,36
39
+ pymax/api/session/enums.py,sha256=InBdwAu_filqW3rMfGrOkHgmFfqgB1ytjnCcxDq29xc,236
40
+ pymax/api/session/payloads.py,sha256=KJBoP_XfL2lJbXvR3tzWf2WaLn73L2LiEuqP0cdJ6u0,2258
41
+ pymax/api/session/service.py,sha256=h4WmKDHeO60VgjjZwdx2CFcrOEsx3k9CGqWfy7jICfk,2356
42
+ pymax/api/stories/__init__.py,sha256=JYYl97t2-Iw1op9NAoj12ArP4VVrdjkn8GznUoCN3U4,72
43
+ pymax/api/stories/enums.py,sha256=2A4lyQxE6-tj-Lxjo4UOb4Q0CRE0govs0x53bpjqlAU,484
44
+ pymax/api/stories/payloads.py,sha256=X5ETOkgQpWdTPn3xT8bPI2GMqi9PBbo1a3iQXnHsO7A,1337
45
+ pymax/api/stories/service.py,sha256=y2PEM1Sqk8VtB0GhA1uuojMwgyNLGs_LB_whPycH9Js,7535
46
+ pymax/api/uploads/__init__.py,sha256=E7INNsBeMStze2VWMADX4mrswsQeJb85C71sSuiOpv0,35
47
+ pymax/api/uploads/models.py,sha256=c2Yunnl9nRkDZuItXGKlY0Oi5DjnB4f5bcruQ49ARZk,934
48
+ pymax/api/uploads/payloads.py,sha256=p9cHcoJSG0gRLYS9K_hk77v80ZMqE5TkDQVWIIO3a7s,2140
49
+ pymax/api/uploads/service.py,sha256=OlcbhHkEqoJ43HPNwmOEVtB_cbdhuYH0KKqIFVB74Nk,30547
50
+ pymax/api/users/__init__.py,sha256=CDakgSKwVAkX-kNoDmIo2JsFPsS7Nx3j2vIMwQnPRck,82
51
+ pymax/api/users/enums.py,sha256=m3d225sjWkBIRF5NNi3ChnyZ6BgKUEbPYoYwVjpifZ4,205
52
+ pymax/api/users/payloads.py,sha256=mWrbhu3KzrsxmBdRQU3bG8W46vtFq_Kdfb2YA7_QkNI,876
53
+ pymax/api/users/service.py,sha256=ndYv60kKkqZPnFOgvfau2LAjgOf-NsLQ7P4xxoWBAr4,4663
54
+ pymax/auth/__init__.py,sha256=QM0kiabQe1K21Bsi1M6DQfh09prrozrOYpDRv_l5bns,603
55
+ pymax/auth/base.py,sha256=v492FMUmSKft6oJRmCdIr33sy50Z0kqBwu5t7cVLQe4,1222
56
+ pymax/auth/email.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ pymax/auth/exceptions.py,sha256=kSrDUah46ZSPT4tR1uhfcIHBlayueKmxxiKvL83gPYc,358
58
+ pymax/auth/models.py,sha256=2SbjOJev1-B1bFEFM0NJPNX4wBTc4JbVDDouRHoAYc0,91
59
+ pymax/auth/providers.py,sha256=06l_olqKnkZEJePor_3KkLbWbFgSyyD4Lvxbz5mrVx8,4319
60
+ pymax/auth/qr.py,sha256=PpEZIYbe8GuYK5omYn4M_HuQnrZWmvHfZcSzmJA3XvI,4550
61
+ pymax/auth/service.py,sha256=cUZxs5UW9ysSaJ-UXSOz0ug3fDo1eN0xAjO7VP1MdTU,619
62
+ pymax/auth/sms.py,sha256=l-NTTO8cRW468Am63A7dppzP8Q013OQzYN1iPa4Adbs,5246
63
+ pymax/connection/__init__.py,sha256=YTboFk9AfYkRUw2Hf4oxn63LTGV475fxp_oel1j4gas,42
64
+ pymax/connection/connection.py,sha256=4mLJ5eec43fRV09OSC5I4A2DO9Wxrl7TTcBBeYn7pDY,8268
65
+ pymax/connection/pending.py,sha256=qezxL019d1E6oiCmSgCSfojLj7sxR1BEGgcKBWSFhok,1328
66
+ pymax/connection/readers/__init__.py,sha256=9g5ZbcWiHxW1kAi2ckiNqejoGHwoDwFd4WvtYQSyRzU,52
67
+ pymax/connection/readers/base.py,sha256=FlvyMUFoZ4FORAh0vBU6_I0BnrQ9_1twpUIKz-Vkj58,126
68
+ pymax/connection/readers/tcp.py,sha256=62nqlllE0gjQQQYVfjBt0arAJ8tEHH_SMZOOjtXNYdw,1073
69
+ pymax/connection/readers/ws.py,sha256=IjeH5CoXvBWde46tZLx6uKONkjhCU6NeC79x3Swfw8E,368
70
+ pymax/di/__init__.py,sha256=-BkILRz8KSF7zDTSK08sc6DRT_mc_7j0yWSOUpClRDo,64
71
+ pymax/di/context.py,sha256=6OdNG3Cz9bcCyk9bJwadIkJDz9ljMZoXMBYcsI_wV1Y,438
72
+ pymax/di/resolver.py,sha256=YJ2AUtUtYoNLFjGtK-bPrm2XDb3gJA0P87t_wmuB8zA,1019
73
+ pymax/dispatch/__init__.py,sha256=X14UhrcKnh1k4YWzNqEoQWZwcrzE0e7d1oQvGrqmaoY,567
74
+ pymax/dispatch/dispatcher.py,sha256=9lLQbdE-vAXSJ7vyKZqpS6EYT9KwE9JZo-HFBZ4U1fc,15438
75
+ pymax/dispatch/enums.py,sha256=n2IesStTcg8iDhrRAxSiY654EscefjzDz3Cr6H3BcXg,512
76
+ pymax/dispatch/mapping.py,sha256=v4BLThEr1m8UtU8BWG-CQlivnhPRU9d7-9MsfRM5CBc,4051
77
+ pymax/dispatch/middleware.py,sha256=gEYEV-NzDgytD-_uW45rQR17yiwJsKWXIR3vmcra0uI,1333
78
+ pymax/dispatch/resolvers.py,sha256=p_vnN61syq6aljZ28DWg9KK7sjcwV0EbHLIPYJLwXpo,2302
79
+ pymax/dispatch/router.py,sha256=IrCxog8iMAaKPtjoakGUtn7jWpoj6HdK4uRHnNFixHw,12516
80
+ pymax/files/__init__.py,sha256=BQB0iOnsyIBaVq77ii82T3Fu70oTlXGqAifen10zPhE,192
81
+ pymax/files/base.py,sha256=Hdf7Yb1ki7IH2tDhXpd0l0CtgNWM7AkU2j8FwN81DbM,4238
82
+ pymax/files/file.py,sha256=JSkuKx0fdGxzcsyMajWTosFzTlfgZYvQbh-RDp9OZyQ,2337
83
+ pymax/files/photo.py,sha256=jvHihuyghDljY9PLh3ymJfoj5KksIRBWIK3z9Dmgjuk,3604
84
+ pymax/files/static.py,sha256=U_KfM0rbGMEWcsBnWIhIXzzk46hHYQ7KJnrGnfDLoMs,142
85
+ pymax/files/video.py,sha256=5gjiv5Yx87StbCqBAZKCHb-_PCmen0UsWGuPbAiUk2k,4063
86
+ pymax/files/voice.py,sha256=H5qcTWW3k-vXq0zhIAoz8EQdJBNyPawlbOZji4lZs7k,2033
87
+ pymax/filters/__init__.py,sha256=xuadjx0m3jUgF2UElvKP6RUjQc6_adFLVjVfmGbScSo,273
88
+ pymax/filters/base.py,sha256=foVvsKfEx414hnBFQMPb7ELb134Vg2m_IIbNpDnTtUY,6304
89
+ pymax/filters/filters.py,sha256=2zl9GolcXuAIEaZksYEMUM-qAcFKOKYAWuiDJsApKtg,5554
90
+ pymax/filters/magic.py,sha256=Q_w3j_5Q-txY9SAqLU0zkCK0gnVd0NDKJb0rrpIb3kc,301
91
+ pymax/filters/presets.py,sha256=npyE0HN8I15qsIAKOLMQLXuBZn_EAZ7gAt0ZFs6UUJo,3084
92
+ pymax/filters/refs.py,sha256=n-Wg6pi5HTvKFp_iGpP0_dWLA2eQDRSlFUFkjYgtH_c,1886
93
+ pymax/filters/containers/__init__.py,sha256=dlu_UZcuRFZR6QD6aP7jfu1qDgfWdsQfJmIXTXP1wlE,70
94
+ pymax/filters/containers/chat.py,sha256=LAPVMg9xPIZobV4QoiOsNJk5Eaoc2Td7FqyRy9BVh-A,6492
95
+ pymax/filters/containers/message.py,sha256=qErgVJt-wbTS7qHbaw6hW3VaAVvEchDaiHhDNeReEpk,3793
96
+ pymax/fingerprint/__init__.py,sha256=W5N5XEr45qdgt8hWUwQ8jc0USHZs12ZKtChhILOK3do,46
97
+ pymax/fingerprint/fingerprint.py,sha256=LAryGmcrYBztV8gMjgr5b3fCheKsZNZ0SAp2rguOMys,880
98
+ pymax/fingerprint/models.py,sha256=OXMwtOTNq6ASuIwYvVnO8ovZfxiuYfNozhFXk7Q6fNk,307
99
+ pymax/formatting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
+ pymax/formatting/markdown.py,sha256=yGpS53i5gBckRAN3QBEYbiCLkpTgPlsKPAhIXLcgXkA,8447
101
+ pymax/fsm/__init__.py,sha256=MhWtX6DSWQf5I94T-0uEfDOWbs4ti9eFlQsO1uJrkAQ,120
102
+ pymax/fsm/context.py,sha256=L0z5ejzf6mUfmxqFhhq9ErlldtXknXL9zC2Zmu8fkUo,933
103
+ pymax/fsm/protocol.py,sha256=IdY6ahBMwTmNv5B0LToaPD3w7XRPCl498PBvYvOwaMk,447
104
+ pymax/fsm/state.py,sha256=oVvb2cWDYx18uskRthXVn0PhtPYVNUt_pxZRqodlQ0g,2051
105
+ pymax/fsm/storage.py,sha256=QD0gQ9jQ5gqFn6RZZkkIfzpY48FNGBAMsYr8X97Tugg,4841
106
+ pymax/infra/__init__.py,sha256=lKq6cehhB87HltV53TD0kr0p7ekWlZlrKTpaYiq0XFw,28
107
+ pymax/infra/auth.py,sha256=5Up9VVtq9ZV2AtUVK4FvlRhHmMlDjeQ29aPRq1HKQEI,3877
108
+ pymax/infra/base.py,sha256=UY3W292V91laa3pdqMeOe-6hlKQaxsRGG8RWP2ye4VY,420
109
+ pymax/infra/bots.py,sha256=FnfJpy3LIQc5ZR4CeWQJYm91GF8dc2fm2may_Div3ko,1974
110
+ pymax/infra/chat.py,sha256=WQd9qjYWJvBHTKWQHPUFR0qdmfHH2eRvBaKCVDpGp34,16929
111
+ pymax/infra/message.py,sha256=2dVSs9aZYUDnFib8ZZhcdL56I4tyjsbMRRoWYDmvLA0,19433
112
+ pymax/infra/protocol.py,sha256=v-HKtqR1p7D2jwduqf0_WNTKhw3QTRog0IT2mf3u1fs,301
113
+ pymax/infra/self.py,sha256=QnZehUgm9-pCrw5seu4K_DhpdSlhvyOt1zU4yJ6Y2II,5907
114
+ pymax/infra/stories.py,sha256=03lzwbFG3boO1nLuhQIyU7YlRX6BFmpMC2G8Ef1H8LE,8124
115
+ pymax/infra/user.py,sha256=wy6lElmJx7Ypjkk48kDrlLiL3V3p7pzO2MevsgCNy1k,4801
116
+ pymax/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
+ pymax/integrations/dishka.py,sha256=SHx0yzL5B_kM3CsZwlMZOBMhVbV3JqewXyHS4PDNEFk,3904
118
+ pymax/protocol/__init__.py,sha256=rDn1Twi1iBDUk1155YI9jyeQyaGVDRuPoWdlaaLZnsw,242
119
+ pymax/protocol/base.py,sha256=_bisk1BU_GSMSPIqfnizSCgm_qBrdbB5cJw6foAa2tc,294
120
+ pymax/protocol/enums.py,sha256=lCPQOxezpl0aYRTzgq4YeFAJ_M1rjNhecds0-FV4bwc,4796
121
+ pymax/protocol/models.py,sha256=kno-09OoPoLKBMixS9nrDkCbxcIwvU37RlZgaq5MfVo,584
122
+ pymax/protocol/tcp/__init__.py,sha256=ivIZZ-UoT_MiRIUWTLiyeKSBOzf9XztSprHPHgoWNuI,34
123
+ pymax/protocol/tcp/compression.py,sha256=JsW84MOjtUCJPxMfsfc4CX2bMH0D5sb_2mut189KHmU,3545
124
+ pymax/protocol/tcp/framing.py,sha256=qH2zNsJLfg5J2wNTcp1hPqsrWhZHajK-Ja7pdB_Gji0,1630
125
+ pymax/protocol/tcp/payload.py,sha256=JSYLujMqAUoXxNVBXLvnwQNVMD2_PJrmDLubOhE8UXc,4757
126
+ pymax/protocol/tcp/protocol.py,sha256=b5AAYQUOhq985Wc1pCPzt84pjGnVGfGxbdwRN0R91xk,2380
127
+ pymax/protocol/ws/__init__.py,sha256=oQK0h28B6gGItf7eHanWy_XsgUA_L9Lclnuz9ZQL9YI,33
128
+ pymax/protocol/ws/protocol.py,sha256=z6zzBQTlJfzwOmLsJYoYQ2L1AYpY5wYMJyPir_zfNBQ,913
129
+ pymax/session/__init__.py,sha256=NhguO5G_GmfzKvBdUX7m8gmAX66NvIp6yGPyz5o50zI,115
130
+ pymax/session/models.py,sha256=gAGvZcqINWZIm_6x0X3E1iqXfddeKCyQmno0DCkLmeA,1635
131
+ pymax/session/protocol.py,sha256=Xr4gv4XV2A3uZJDeWRCRlty-MSsojI5DaHyu8i6hz1w,1632
132
+ pymax/session/store.py,sha256=EDRYsg4bHdnHxxieXZMNTRhIohwJZRdKfOxO--yB18E,10642
133
+ pymax/telemetry/__init__.py,sha256=6mP5y-iTbVIlqpSWIKWCTz2fFNBwkAEYwS4PFbyv9xM,71
134
+ pymax/telemetry/navigation.py,sha256=vlP7d863s9aIBpt9SPpjEbTXLoq3uqpuhD-VWj0w9hI,5441
135
+ pymax/telemetry/payloads.py,sha256=MCKYGpQ4Tvx_8LH86Et0yevea2Th2z3b7a9pfmrQRys,3959
136
+ pymax/telemetry/service.py,sha256=rlFQAlMFnNZjw631bPHRSLWMkrIvyji47SYnGRJ0Apk,6952
137
+ pymax/transport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
+ pymax/transport/base.py,sha256=0D3srQ36F0s23pIjqd6YzRGKK9wCmXKr3wfe2XYYlos,448
139
+ pymax/transport/tcp.py,sha256=DbCy4DlYwZo07hcoLJ5JBlz9D3bHtI9r872qavRJKDw,3593
140
+ pymax/transport/websocket.py,sha256=_G9sxRqitahlhENF3XVB6yBo0wFWoXBRJn9KC7GEZso,1617
141
+ pymax/types/__init__.py,sha256=y77mfDRgxmfcamobi0rj2d3PsxhH0zxyvKPhL2iUdS8,44
142
+ pymax/types/domain/__init__.py,sha256=XO_XpyPX8csgNhVwo7z9FzPl7k6ZiJvHPNTpfQ72G9M,925
143
+ pymax/types/domain/auth.py,sha256=RmEXFS7TAgtFhnfXaiJH5XDb__2MUVgQ_Noavo9hFRY,6019
144
+ pymax/types/domain/base.py,sha256=Q32PcKR3gtrISySowR3zPyl9KeQCoUL6lfyTR3ulMzo,623
145
+ pymax/types/domain/bots.py,sha256=dErZZbvspznU6yUupzCs4R55pEWgoeps7NEhZFrb-Uo,333
146
+ pymax/types/domain/callback.py,sha256=uTNG4iQvW4cSud0fF_TuaZw4_IKnSdJU2BIqtPWv9Ew,683
147
+ pymax/types/domain/chat.py,sha256=jIXCnzynlkGQMbrbvU2wtqHIkXqMwkAYI9U8Cd-iV-w,20502
148
+ pymax/types/domain/comment.py,sha256=UFsuivg63WJu3W1AxGWriPWGdSp0ZaH2wmtCqSFVXZs,681
149
+ pymax/types/domain/element.py,sha256=Hks0MulMcPAhbpuUmJa5c2d9Emwy3garh1k6bd4QHKA,655
150
+ pymax/types/domain/enums.py,sha256=ONkUdvQ0EazlPuKLnquY6DqfN5z-lMRJlqDvkKyCpok,594
151
+ pymax/types/domain/error.py,sha256=WZoDAXf5vt8O4VYy7iEHLGBfH6hZQZ1fVkTz9rVCTN0,584
152
+ pymax/types/domain/folder.py,sha256=Z9pXMzOTfxuhUfrJpLjl5LPnVXqqFsBVfKBQm4IbGWM,2225
153
+ pymax/types/domain/handshake.py,sha256=9eOPYBJ3O4UAPNUfk7bPnZ3mwBtJw7kfhE8W4aK2k0U,417
154
+ pymax/types/domain/login.py,sha256=LIw7b2aYqPWfRhCWrBU1zeCtDazJQwoWN3Cdz-WdS4w,2303
155
+ pymax/types/domain/member.py,sha256=8gUNn4fBS_S2ap45A40lRlrDXYFMoq0Kx-dh57hMWQc,490
156
+ pymax/types/domain/message.py,sha256=hOdFvIvVlQnSUkfK7prg7Drz9u_GgVpebfR5EcrXsTk,22211
157
+ pymax/types/domain/name.py,sha256=qMIshIqgWkVuROxmiCRhwfJf8XtmhSBoEU6nXs_gEh0,523
158
+ pymax/types/domain/presence.py,sha256=lKvkK0uYwY0gTSEEkaVdI-tEpWjxLOtH7gp2dy5Uh-0,534
159
+ pymax/types/domain/profile.py,sha256=taN5PjlKp4EDypVhDx89vmBDpSKh-kT-ISpu1tR2cY8,471
160
+ pymax/types/domain/session.py,sha256=T0b0qjI65kNQOCgx3nIkaIqynD4eGKyqnscbIlPFVnQ,2002
161
+ pymax/types/domain/story.py,sha256=ilNP2pVuMglzhqe9jxxgfmhWo5U0DYLlnnyXN_NZpco,4049
162
+ pymax/types/domain/sync.py,sha256=lBDWo4ACLq2ov5XBccfnI8s_dsGEA7O4mIJVBSUpyrc,3248
163
+ pymax/types/domain/user.py,sha256=Vj9HvSVQKKLJ1HX-OM9T1knvPNyCqrwJnWkz16ByeLg,5367
164
+ pymax/types/domain/attachments/__init__.py,sha256=u24aILUhSt38MolJDNKe9poj2QZvWWNDkvQxrM2QUX4,564
165
+ pymax/types/domain/attachments/audio.py,sha256=I_Qq1qQ9bXsEzWwxEbQbkiY8CEjSKqGqinDFYY_5DY8,1117
166
+ pymax/types/domain/attachments/call.py,sha256=vYFOz1XT2YHOlSFkKqLAFW-Y1quRBlB2bjHMidjBB8U,1195
167
+ pymax/types/domain/attachments/contact.py,sha256=ZAvvPdNwm_t_Up9puQFOxHYl0U-7Asf2qhvLlo1oBqs,1053
168
+ pymax/types/domain/attachments/control.py,sha256=Io-Plz4kSJvvR4WndbQm09GyA2Ezut9Hnsd6oDcnayg,673
169
+ pymax/types/domain/attachments/enums.py,sha256=rD9c1985gH-Ob9IONlM32ok6F9-F_5hGI1aPTotwvRc,1599
170
+ pymax/types/domain/attachments/file.py,sha256=3lqsPIkg75-AmcaEbXwc1eiQHIv9JpWzMc0z4u2MupE,1595
171
+ pymax/types/domain/attachments/photo.py,sha256=8q79OuQ0V8t-s9pZM8ClAmgJI71m-bgES4Bd5ZSNVI0,1413
172
+ pymax/types/domain/attachments/poll.py,sha256=-p3KJX_X6Nno8I3qA813-9pFkp8VFrLRgx7sL5Aauac,3569
173
+ pymax/types/domain/attachments/share.py,sha256=BHJIVjTC99wfbUn8wSN4j0aSNlEpojzv87uwbmhPPt0,924
174
+ pymax/types/domain/attachments/sticker.py,sha256=sJn13LuyF5u7Oy9HLGBIlXmdPjxAib0oy30TZz455vE,1544
175
+ pymax/types/domain/attachments/unknown.py,sha256=oThuTVkzkdmpCftRoa42b1jyy-QbBbfgyc0ocX0jeS8,917
176
+ pymax/types/domain/attachments/video.py,sha256=ZT0qYp6LWtrMA-U4mJY-NIyqPMgfZ7bsA3YQhjDSO54,3786
177
+ pymax/types/domain/attachments/keyboards/__init__.py,sha256=S0ULd2ERXhcww8AyuCEzb2EvdqYOU1NaM9rtmZgiBUo,65
178
+ pymax/types/domain/attachments/keyboards/enums.py,sha256=dHqJ8qTEEUlWYhGEsIZGvQ736eOKAJa2gbRctQa7WBM,283
179
+ pymax/types/domain/attachments/keyboards/inline.py,sha256=L3nR29P50GPM30VEtucu9IUgmMScN_tgih5AtPUqvq4,2257
180
+ pymax/types/events/__init__.py,sha256=fvCPR_ZN-zRow3eeJ3hzDn2auWfnOxFFQ8GRTZTFfMA,294
181
+ pymax/types/events/file.py,sha256=XhpXn0Vt9OODkx1OkGb9jfQwc1uNgz1NTn_j9FZnQ8s,102
182
+ pymax/types/events/mark.py,sha256=5o3QP3VH9NJBVonBJNf88pzXkS9lLYaDFyju6yczAow,894
183
+ pymax/types/events/message.py,sha256=o2ql3y1DzM-OKg72LR5dr4aCelGksBypIevTEmG-0K4,3249
184
+ pymax/types/events/presence.py,sha256=77Cy352CdfIkbH6ZfLijHffF8gcMz-AZk5OCeESQeDY,451
185
+ pymax/types/events/reaction.py,sha256=hXWZ2xtgGUU6WQcRxdNnogFu-lXsWbPjEoDgBXTFYZg,1481
186
+ pymax/types/events/typing.py,sha256=vDMgqYE0jz8dN2YfqsNaJLB8k7pMd6kaDEdR_KrLk5g,376
187
+ pymax/types/events/video.py,sha256=swBHYadmDS0SjLXGqVqRYsuMoVZ6MjD2aYR2fbM-AJc,104
188
+ pymax/types/events/voice.py,sha256=E4BjLBnqsu05s8ZxFN4I_B5OVaecoPvXI-826YJ_ze8,104
189
+ pymax/versions/__init__.py,sha256=Y_sOE3LNIEMz6P2K7moowdeJfoZxaQOHcxI4fAqUGFY,81
190
+ pymax/versions/catalog.py,sha256=TIf1eCECxvRiCeiJW7RURXIeTfTI2wsHvLIJzmvTdGY,3941
191
+ pymax/versions/exceptions.py,sha256=ZjQD1ulkjpjpGX_YWYZ1943DkJdccK4P5f4ozcEcX3U,448
192
+ maxapi_python-2.5.0.dist-info/METADATA,sha256=6YmtKaOynRSX3L-6lX7gEAYul2MIHbVqlwXBgo1zxdI,8530
193
+ maxapi_python-2.5.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
194
+ maxapi_python-2.5.0.dist-info/licenses/LICENSE,sha256=hOR249ItqMdcly1A0amqEWRNRTq4Gv5NJtmQ3A5qK4E,1070
195
+ maxapi_python-2.5.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.31.0
2
+ Generator: hatchling 1.32.4
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
pymax/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
- __version__ = "2.4.0"
1
+ __version__ = "2.5.0"
2
2
 
3
3
 
4
4
  from .api.self import PrivacyAccess, PrivacySettingsUpdate
@@ -7,6 +7,7 @@ from .auth import (
7
7
  ConsolePasswordProvider,
8
8
  ConsoleQrHandler,
9
9
  ConsoleSmsCodeProvider,
10
+ PasswordAttemptsExceededError,
10
11
  PasswordProvider,
11
12
  QrAuthFlow,
12
13
  QrHandler,
@@ -29,6 +30,8 @@ from .types import (
29
30
  PresenceEvent,
30
31
  Profile,
31
32
  ReactionUpdateEvent,
33
+ Story,
34
+ StoryPreview,
32
35
  TypingEvent,
33
36
  User,
34
37
  )
@@ -49,12 +52,13 @@ __all__ = (
49
52
  "Message",
50
53
  "MessageDeleteEvent",
51
54
  "MessageReadEvent",
55
+ "PasswordAttemptsExceededError",
52
56
  "PasswordProvider",
53
57
  "Photo",
54
58
  "PresenceEvent",
55
- "Profile",
56
59
  "PrivacyAccess",
57
60
  "PrivacySettingsUpdate",
61
+ "Profile",
58
62
  "PyMaxError",
59
63
  "QrAuthFlow",
60
64
  "QrHandler",
@@ -63,6 +67,8 @@ __all__ = (
63
67
  "Router",
64
68
  "SmsAuthFlow",
65
69
  "SmsCodeProvider",
70
+ "Story",
71
+ "StoryPreview",
66
72
  "SyncOverrides",
67
73
  "SyncState",
68
74
  "TypingEvent",