maxapi-python 2.4.0__py3-none-any.whl → 2.4.1__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 (47) hide show
  1. {maxapi_python-2.4.0.dist-info → maxapi_python-2.4.1.dist-info}/METADATA +6 -4
  2. {maxapi_python-2.4.0.dist-info → maxapi_python-2.4.1.dist-info}/RECORD +47 -42
  3. {maxapi_python-2.4.0.dist-info → maxapi_python-2.4.1.dist-info}/WHEEL +1 -1
  4. pymax/__init__.py +4 -2
  5. pymax/_data/apk_fingerprints.json +102 -17
  6. pymax/_data/rootca_ssl_rsa2022.crt +33 -0
  7. pymax/api/auth/service.py +14 -2
  8. pymax/api/chats/payloads.py +2 -1
  9. pymax/api/chats/service.py +7 -0
  10. pymax/api/messages/__init__.py +1 -1
  11. pymax/api/messages/payloads.py +9 -3
  12. pymax/api/messages/service.py +106 -12
  13. pymax/api/uploads/payloads.py +33 -1
  14. pymax/api/uploads/service.py +77 -62
  15. pymax/app.py +23 -4
  16. pymax/auth/__init__.py +2 -0
  17. pymax/auth/exceptions.py +9 -0
  18. pymax/auth/providers.py +6 -2
  19. pymax/auth/sms.py +11 -1
  20. pymax/base.py +83 -9
  21. pymax/client.py +39 -10
  22. pymax/client_web.py +15 -12
  23. pymax/config.py +63 -21
  24. pymax/files/base.py +58 -1
  25. pymax/files/video.py +32 -40
  26. pymax/files/voice.py +18 -4
  27. pymax/fingerprint/fingerprint.py +5 -22
  28. pymax/fingerprint/models.py +1 -0
  29. pymax/infra/chat.py +9 -5
  30. pymax/infra/message.py +9 -3
  31. pymax/infra/protocol.py +5 -1
  32. pymax/session/__init__.py +1 -1
  33. pymax/session/models.py +30 -0
  34. pymax/session/protocol.py +33 -7
  35. pymax/session/store.py +73 -5
  36. pymax/transport/tcp.py +11 -3
  37. pymax/types/domain/attachments/call.py +7 -1
  38. pymax/types/domain/attachments/contact.py +3 -3
  39. pymax/types/domain/attachments/control.py +3 -0
  40. pymax/types/domain/attachments/enums.py +16 -0
  41. pymax/types/domain/attachments/video.py +3 -3
  42. pymax/types/domain/enums.py +7 -0
  43. pymax/types/domain/message.py +87 -7
  44. pymax/versions/__init__.py +2 -0
  45. pymax/versions/catalog.py +104 -0
  46. pymax/versions/exceptions.py +10 -0
  47. {maxapi_python-2.4.0.dist-info → maxapi_python-2.4.1.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.4.1
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
@@ -43,6 +43,7 @@ Python-библиотека для Max API.
43
43
  [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)
44
44
  [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
45
45
  [![Package](https://img.shields.io/badge/package-maxapi--python-orange.svg)](https://pypi.org/project/maxapi-python/)
46
+ [![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
47
 
47
48
  > [!WARNING]
48
49
  > PyMax использует неофициальный внутренний API Max. API может измениться без
@@ -62,10 +63,11 @@ WebSocket.
62
63
  - Авторизация по телефону и SMS-коду через `Client`.
63
64
  - QR-авторизация web-клиента через `WebClient`.
64
65
  - Роутеры, фильтры, `on_start`, raw-события и typed events.
65
- - Сообщения: отправка, ответы, reply, реакции, pin, read, delete и история.
66
+ - Сообщения: отправка и планирование, ответы, реакции, pin, read, delete и история.
66
67
  - Чаты, группы, участники, invite-ссылки и настройки групп.
67
68
  - Пользователи, контакты, профиль, папки, активные сессии и 2FA.
68
- - Вложения: `Photo`, `File`, `Video`.
69
+ - Вложения: `Photo`, `File`, `Video`, `Voice`, `VideoNote`.
70
+ - Выбор версии mobile-клиента с локальным или обновляемым каталогом fingerprints.
69
71
  - SQLite-сессии, sync-state, reconnect и debug-логи.
70
72
  - Pydantic-модели и удобные domain-объекты.
71
73
 
@@ -1,14 +1,15 @@
1
- pymax/__init__.py,sha256=REPRjrZ-Nv-VcQfGeB9D-NdWq1fF2oODuu2tkvdJbQ4,1657
2
- pymax/app.py,sha256=78xYZ7PWVQNVTR6aEue1q-xzQBUtaCVoQl29Y4k7JAo,13021
3
- pymax/base.py,sha256=WTjHE5D1ZFor547FnmgOKpYu3o59xtytnW7jKB71hR8,10842
4
- pymax/client.py,sha256=ePDxR6wEeHJbk23wI_PkOVFQuyy5tQyckV-OmKEwz5U,3985
5
- pymax/client_web.py,sha256=lDpzNmkW2wgShddgEw5542KDy1_8R-H8POAoQLqmxHA,3028
6
- pymax/config.py,sha256=uPfgFZL9TfeblRrSZL2hJD_JTdzsYxUb2tIIekza3m4,11059
1
+ pymax/__init__.py,sha256=yMrMaaHEjHOZDisZdkJcM0aEvUNGZRyFDud-yFrWk1s,1729
2
+ pymax/app.py,sha256=X1guEOdNlk_7ie5Ij_9HUGXTOqkrQdTtdOf8Jwp8G7g,13915
3
+ pymax/base.py,sha256=zobCT6a3vfY6HL-kjAHVHKAypTIm5UUHvkRW73jBQq0,13718
4
+ pymax/client.py,sha256=cEAzsbgacxkeBqLXWQPSNYor94xp-M-tEl322FDrYpM,5422
5
+ pymax/client_web.py,sha256=1F5AULJILcXE_Xphg666dZ-vcR3U6OvdACZUd9QrBkw,3293
6
+ pymax/config.py,sha256=k_3kyUfyl3WDeghOP4nF9EjxKc4Sb2inKogOUYbdr2k,14207
7
7
  pymax/exceptions.py,sha256=8pxjZsfgrMPrZfE3zedIbabqP75diEr2_6Xg3PGjiSQ,963
8
8
  pymax/logging.py,sha256=j2-7guTR8otCrSk0w7NL2y-d_gJoNUS5Fh9NtsdEgIg,4632
9
9
  pymax/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  pymax/routers.py,sha256=UvIEWcBF1VPBmUFrubBQ7uo3DZylf4qdbnQGDkUYjyE,225
11
- pymax/_data/apk_fingerprints.json,sha256=0CT99vB-0OmOmWWaz21Ampz6AyasC0fc8_KpKfvfW74,34882
11
+ pymax/_data/apk_fingerprints.json,sha256=1KRKYSPImJdwJGhlIMNxVI7Z-TRMFVngvXxRCL8xKRc,39242
12
+ pymax/_data/rootca_ssl_rsa2022.crt,sha256=qoAO80VCLWFYxvr-HAbEKdvaIcPfS7HMtFqSDsERE5k,2057
12
13
  pymax/api/__init__.py,sha256=oWC09vGaP6S7_nnTJ4y5PbTkbA4U29DhafpwIqD2QGI,356
13
14
  pymax/api/binding.py,sha256=q63tSMxwh8cX28r2JwK3_TyxsV8zThflMaQiMb0vx8M,1613
14
15
  pymax/api/facade.py,sha256=WapwUPspVxA8JMYRvWGKtaKs9rUvIJLTMaXods6julo,899
@@ -17,19 +18,19 @@ pymax/api/response.py,sha256=7rXgqtaGeDd60FGMxlLwqARzgFIawX8OkMqA9TL8HRE,2591
17
18
  pymax/api/auth/__init__.py,sha256=m6yw6RPrq10iNkSI8z59n3OXTnAw8VfxIALnhVztL2g,33
18
19
  pymax/api/auth/enums.py,sha256=m8zRS62894Szs-xyGIIvyGS51Fjq5ldp89kvxu_C3gg,681
19
20
  pymax/api/auth/payloads.py,sha256=TA5am-M5IIOE2CWENQ8NEIjoYYHzyZdahS24OPA3VnA,3888
20
- pymax/api/auth/service.py,sha256=W2xsh_gSYFs1DJmn9gz9Dv-5FmFYPjnswaBBcS8dRCY,15479
21
+ pymax/api/auth/service.py,sha256=-SI3vbrJXG5ss6ZyG7IHiTCq9Z9ehckcl7O_jbgKo3I,16001
21
22
  pymax/api/auth/types.py,sha256=VrYR7rIZOrW45yKnQmC5MSe9kxgXmqPzh9VG_y1tSEs,200
22
23
  pymax/api/bots/__init__.py,sha256=4P7rM-XeeDOElEktov1Vbfo8nzjJgmyA4_pQl4WvzRQ,33
23
24
  pymax/api/bots/payloads.py,sha256=aXriolCN_YvBvDZO_MPmD-fkrIVJIpVDXkOkOZVes_c,166
24
25
  pymax/api/bots/service.py,sha256=ziqVlQUMFHjQydMDFyWcQMIATboQTvIdGtJhf-AK9tA,847
25
26
  pymax/api/chats/__init__.py,sha256=P_T3sFrAL-8WCGEWaRGTjQfiOIdjJpp0PU5Pzh49Pp0,179
26
27
  pymax/api/chats/enums.py,sha256=WbJJ9C_SfCIFIWOjxg6KszhWFB5zQX-t_NTozLqeTJo,899
27
- pymax/api/chats/payloads.py,sha256=ae5DaSbNJGovticS4UNoUDtlOmlsqWVCtWM75ULbIQs,3241
28
- pymax/api/chats/service.py,sha256=75vqRYOJtoY2illLJrbv0kB0Xn3l_tNgNBhxdU5x3Dw,13172
29
- pymax/api/messages/__init__.py,sha256=fw_uF6tgSbkxvqaSVE65wU0KWsu47u1CtR0Y4BbD-K0,36
28
+ pymax/api/chats/payloads.py,sha256=KcdBQbO_yS2KwKEmz6Yxs-CNXQCeqoscGoQp2ArAxjo,3283
29
+ pymax/api/chats/service.py,sha256=HOw_TBJX_33gzCD6WrrM7UFKISvV9_6B_6PIZETjnY4,13391
30
+ pymax/api/messages/__init__.py,sha256=wm7n4mUUiVMQQ2w5Sj5pdHDzMyKfzOdfVTxndIHDDVg,51
30
31
  pymax/api/messages/enums.py,sha256=tp5S2Q97a-FILcqpRhQiIRKdj0P_KSEBiCqWmb05dHs,368
31
- pymax/api/messages/payloads.py,sha256=VWJExhX8mxJL1wOm3IPXLtjer8Edhel91Ul5Zl2RWDs,2908
32
- pymax/api/messages/service.py,sha256=mFG79AAeq_EIJB98-HxkdY1ldmnmr0gPZ6ooAjfIyO4,14887
32
+ pymax/api/messages/payloads.py,sha256=lgvW_LCnCMWR8h_H78L7nFzRSGFvCuiLATVfFMl1SYU,3049
33
+ pymax/api/messages/service.py,sha256=HZJxl47G-MUUpry20fWx5wnx6cJH5a6JKoCSwLXdzK8,18088
33
34
  pymax/api/self/__init__.py,sha256=f3c1icSKASVm2BKuDLzNmniJHokLk9d82GC3EfyJ5tc,138
34
35
  pymax/api/self/enums.py,sha256=5WUmdfyFVCaMIeiTngIa2X8pK7DBvkGtWgeopgWwkWI,393
35
36
  pymax/api/self/payloads.py,sha256=wVIaETW0MwY1cKbQsNZgyqPm6dGFM_q0ih-TuWWXD1s,2468
@@ -40,20 +41,21 @@ pymax/api/session/payloads.py,sha256=KJBoP_XfL2lJbXvR3tzWf2WaLn73L2LiEuqP0cdJ6u0
40
41
  pymax/api/session/service.py,sha256=h4WmKDHeO60VgjjZwdx2CFcrOEsx3k9CGqWfy7jICfk,2356
41
42
  pymax/api/uploads/__init__.py,sha256=E7INNsBeMStze2VWMADX4mrswsQeJb85C71sSuiOpv0,35
42
43
  pymax/api/uploads/models.py,sha256=c2Yunnl9nRkDZuItXGKlY0Oi5DjnB4f5bcruQ49ARZk,934
43
- pymax/api/uploads/payloads.py,sha256=kQX6WHPVQXAoZGI0Xq7dpbzF6-APUPrqG14AkaoFtGk,818
44
- pymax/api/uploads/service.py,sha256=KCkDPohMbwYXJoWsOSK5kxeSjq2YMAniOCDekvOaWeo,26374
44
+ pymax/api/uploads/payloads.py,sha256=9joVF-nWEkay7pM5KIKJ43yiXObcoRzajlQmBl7LIRE,1901
45
+ pymax/api/uploads/service.py,sha256=0gs9q9FWjAB1hLxc42JOqA_4CoWUEfueQgqeB6Ow12c,26967
45
46
  pymax/api/users/__init__.py,sha256=CDakgSKwVAkX-kNoDmIo2JsFPsS7Nx3j2vIMwQnPRck,82
46
47
  pymax/api/users/enums.py,sha256=m3d225sjWkBIRF5NNi3ChnyZ6BgKUEbPYoYwVjpifZ4,205
47
48
  pymax/api/users/payloads.py,sha256=mWrbhu3KzrsxmBdRQU3bG8W46vtFq_Kdfb2YA7_QkNI,876
48
49
  pymax/api/users/service.py,sha256=ndYv60kKkqZPnFOgvfau2LAjgOf-NsLQ7P4xxoWBAr4,4663
49
- pymax/auth/__init__.py,sha256=KgghKg0CPcJzX_D14TvxuDzhNmoVoFGjv414NouJVgk,512
50
+ pymax/auth/__init__.py,sha256=QM0kiabQe1K21Bsi1M6DQfh09prrozrOYpDRv_l5bns,603
50
51
  pymax/auth/base.py,sha256=v492FMUmSKft6oJRmCdIr33sy50Z0kqBwu5t7cVLQe4,1222
51
52
  pymax/auth/email.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
+ pymax/auth/exceptions.py,sha256=kSrDUah46ZSPT4tR1uhfcIHBlayueKmxxiKvL83gPYc,358
52
54
  pymax/auth/models.py,sha256=2SbjOJev1-B1bFEFM0NJPNX4wBTc4JbVDDouRHoAYc0,91
53
- pymax/auth/providers.py,sha256=B3EaS-iKxrZffcxiBKjoA1TsytwybHUunjZUtbjiiVE,4148
55
+ pymax/auth/providers.py,sha256=06l_olqKnkZEJePor_3KkLbWbFgSyyD4Lvxbz5mrVx8,4319
54
56
  pymax/auth/qr.py,sha256=Kkj5_2UEfdqgov76TIIdobCvJxltv8A1CPVunDlQa-w,4203
55
57
  pymax/auth/service.py,sha256=cUZxs5UW9ysSaJ-UXSOz0ug3fDo1eN0xAjO7VP1MdTU,619
56
- pymax/auth/sms.py,sha256=-Y9iW4kZmi2IMsH9pylNS96U-37Kj_1pkUab0xNmp9w,4909
58
+ pymax/auth/sms.py,sha256=l-NTTO8cRW468Am63A7dppzP8Q013OQzYN1iPa4Adbs,5246
57
59
  pymax/connection/__init__.py,sha256=YTboFk9AfYkRUw2Hf4oxn63LTGV475fxp_oel1j4gas,42
58
60
  pymax/connection/connection.py,sha256=4mLJ5eec43fRV09OSC5I4A2DO9Wxrl7TTcBBeYn7pDY,8268
59
61
  pymax/connection/pending.py,sha256=qezxL019d1E6oiCmSgCSfojLj7sxR1BEGgcKBWSFhok,1328
@@ -68,24 +70,24 @@ pymax/dispatch/mapping.py,sha256=yQYFEK4Nn1CzpUat_bNx2CGYpL96wmfDwVMEe9abqZ8,344
68
70
  pymax/dispatch/resolvers.py,sha256=jSwziNf0vA-38ZyEQr87ThzN1rJ1u1tgbEtaZdsNBKE,2203
69
71
  pymax/dispatch/router.py,sha256=0dwXCR7TgAGNiq9oryXIuyAsJ15DJ3OMt9hrRenUBio,10453
70
72
  pymax/files/__init__.py,sha256=BQB0iOnsyIBaVq77ii82T3Fu70oTlXGqAifen10zPhE,192
71
- pymax/files/base.py,sha256=0aksCGxmrvqEKJdhRWcuPZJfEn7RWcl5tn5gn63q1os,2689
73
+ pymax/files/base.py,sha256=Hdf7Yb1ki7IH2tDhXpd0l0CtgNWM7AkU2j8FwN81DbM,4238
72
74
  pymax/files/file.py,sha256=JSkuKx0fdGxzcsyMajWTosFzTlfgZYvQbh-RDp9OZyQ,2337
73
75
  pymax/files/photo.py,sha256=jvHihuyghDljY9PLh3ymJfoj5KksIRBWIK3z9Dmgjuk,3604
74
76
  pymax/files/static.py,sha256=U_KfM0rbGMEWcsBnWIhIXzzk46hHYQ7KJnrGnfDLoMs,142
75
- pymax/files/video.py,sha256=lwXFj0cFhb-yqqVvp1FaiAGMhV_tbnhE-h4hQE56G3o,3938
76
- pymax/files/voice.py,sha256=QmgEwOKUwyMvuV6n4jQEg8DWil22khXF6DQTDX5Ui-s,1166
77
+ pymax/files/video.py,sha256=5gjiv5Yx87StbCqBAZKCHb-_PCmen0UsWGuPbAiUk2k,4063
78
+ pymax/files/voice.py,sha256=H5qcTWW3k-vXq0zhIAoz8EQdJBNyPawlbOZji4lZs7k,2033
77
79
  pymax/fingerprint/__init__.py,sha256=W5N5XEr45qdgt8hWUwQ8jc0USHZs12ZKtChhILOK3do,46
78
- pymax/fingerprint/fingerprint.py,sha256=DDQqKkeRhTDUfxw8v0PDE4wKNuXdzJHalYhzEskT5LE,1298
79
- pymax/fingerprint/models.py,sha256=ZSVGrwxah7qR8byEXOa4L73J8bDzPr_EaMzyn18xvPk,273
80
+ pymax/fingerprint/fingerprint.py,sha256=LAryGmcrYBztV8gMjgr5b3fCheKsZNZ0SAp2rguOMys,880
81
+ pymax/fingerprint/models.py,sha256=OXMwtOTNq6ASuIwYvVnO8ovZfxiuYfNozhFXk7Q6fNk,307
80
82
  pymax/formatting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
83
  pymax/formatting/markdown.py,sha256=xHF2XEGjiyJHN7WUZI312a2EkBZRxw38e1y-QQ-8dr8,6637
82
84
  pymax/infra/__init__.py,sha256=lKq6cehhB87HltV53TD0kr0p7ekWlZlrKTpaYiq0XFw,28
83
85
  pymax/infra/auth.py,sha256=5Up9VVtq9ZV2AtUVK4FvlRhHmMlDjeQ29aPRq1HKQEI,3877
84
86
  pymax/infra/base.py,sha256=sOo40Qkp14bE6CxVKppJhy3e0F5VhFPhnL3iBs8y5dA,368
85
87
  pymax/infra/bots.py,sha256=6o0owuxZbWBg55W7fsuL4PQ9OqkGsMFvd6LU6RL12ds,1182
86
- pymax/infra/chat.py,sha256=gc5A6fWm4tgIF19J8-SCmoo_ffQ6UnsKWjK5-GmpF8U,15522
87
- pymax/infra/message.py,sha256=jp3uo-shce3JTQr0FtwQDDbsUqWL7eN-TX9q-vR_HvU,12687
88
- pymax/infra/protocol.py,sha256=I2WrAeAgATuNSdK2gvHU-MhhxdRBfSMGMovF5HPFsQw,208
88
+ pymax/infra/chat.py,sha256=VjndUr9t7zxGC8wXQwyzlXWgN7eh9eqp2_77ds_DNLY,15901
89
+ pymax/infra/message.py,sha256=H34--3jpk_0-BPvT4HzeyhNuxgZXBtej60l5VJUoA4I,13130
90
+ pymax/infra/protocol.py,sha256=v-HKtqR1p7D2jwduqf0_WNTKhw3QTRog0IT2mf3u1fs,301
89
91
  pymax/infra/self.py,sha256=QnZehUgm9-pCrw5seu4K_DhpdSlhvyOt1zU4yJ6Y2II,5907
90
92
  pymax/infra/user.py,sha256=wy6lElmJx7Ypjkk48kDrlLiL3V3p7pzO2MevsgCNy1k,4801
91
93
  pymax/protocol/__init__.py,sha256=rDn1Twi1iBDUk1155YI9jyeQyaGVDRuPoWdlaaLZnsw,242
@@ -99,17 +101,17 @@ pymax/protocol/tcp/payload.py,sha256=zl34Xk0AB1nzZsvke4vo-7HcwnfwoP61typu7j0Q3JI
99
101
  pymax/protocol/tcp/protocol.py,sha256=b5AAYQUOhq985Wc1pCPzt84pjGnVGfGxbdwRN0R91xk,2380
100
102
  pymax/protocol/ws/__init__.py,sha256=oQK0h28B6gGItf7eHanWy_XsgUA_L9Lclnuz9ZQL9YI,33
101
103
  pymax/protocol/ws/protocol.py,sha256=z6zzBQTlJfzwOmLsJYoYQ2L1AYpY5wYMJyPir_zfNBQ,913
102
- pymax/session/__init__.py,sha256=natjnLjPjTvkfvSYtoiPxzmU44XJi0MpjWiOPD-On4g,100
103
- pymax/session/models.py,sha256=jvnTHfjCX1p5TcANfWZ0vUJlciuqumatwdrgYiKm4kY,250
104
- pymax/session/protocol.py,sha256=8ibp-HiaJaGmx23v7GeL0GFsvLPZZqWOuIOJnanqoCM,612
105
- pymax/session/store.py,sha256=xzUpLuS8OpcYNB1lNvUwzOJIcsGz516_aOXBh2jIWT4,8087
104
+ pymax/session/__init__.py,sha256=NhguO5G_GmfzKvBdUX7m8gmAX66NvIp6yGPyz5o50zI,115
105
+ pymax/session/models.py,sha256=gAGvZcqINWZIm_6x0X3E1iqXfddeKCyQmno0DCkLmeA,1635
106
+ pymax/session/protocol.py,sha256=Xr4gv4XV2A3uZJDeWRCRlty-MSsojI5DaHyu8i6hz1w,1632
107
+ pymax/session/store.py,sha256=EDRYsg4bHdnHxxieXZMNTRhIohwJZRdKfOxO--yB18E,10642
106
108
  pymax/telemetry/__init__.py,sha256=6mP5y-iTbVIlqpSWIKWCTz2fFNBwkAEYwS4PFbyv9xM,71
107
109
  pymax/telemetry/navigation.py,sha256=vlP7d863s9aIBpt9SPpjEbTXLoq3uqpuhD-VWj0w9hI,5441
108
110
  pymax/telemetry/payloads.py,sha256=MCKYGpQ4Tvx_8LH86Et0yevea2Th2z3b7a9pfmrQRys,3959
109
111
  pymax/telemetry/service.py,sha256=rlFQAlMFnNZjw631bPHRSLWMkrIvyji47SYnGRJ0Apk,6952
110
112
  pymax/transport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
113
  pymax/transport/base.py,sha256=0D3srQ36F0s23pIjqd6YzRGKK9wCmXKr3wfe2XYYlos,448
112
- pymax/transport/tcp.py,sha256=AVzSHkJK98lYFmPPIKEmR-3lNmgOwrOAihJOd7VEW3I,3323
114
+ pymax/transport/tcp.py,sha256=DbCy4DlYwZo07hcoLJ5JBlz9D3bHtI9r872qavRJKDw,3593
113
115
  pymax/transport/websocket.py,sha256=_G9sxRqitahlhENF3XVB6yBo0wFWoXBRJn9KC7GEZso,1617
114
116
  pymax/types/__init__.py,sha256=y77mfDRgxmfcamobi0rj2d3PsxhH0zxyvKPhL2iUdS8,44
115
117
  pymax/types/domain/__init__.py,sha256=w3uzu6VF4ci-EYRHHH-Ksm9nk4Wm5LCPablKAndyAj8,553
@@ -118,13 +120,13 @@ pymax/types/domain/base.py,sha256=Q32PcKR3gtrISySowR3zPyl9KeQCoUL6lfyTR3ulMzo,62
118
120
  pymax/types/domain/bots.py,sha256=dErZZbvspznU6yUupzCs4R55pEWgoeps7NEhZFrb-Uo,333
119
121
  pymax/types/domain/chat.py,sha256=jIXCnzynlkGQMbrbvU2wtqHIkXqMwkAYI9U8Cd-iV-w,20502
120
122
  pymax/types/domain/element.py,sha256=Hks0MulMcPAhbpuUmJa5c2d9Emwy3garh1k6bd4QHKA,655
121
- pymax/types/domain/enums.py,sha256=eGMWnlv0mYJ8K-0FsC_wp4Co2M6YWyKI1Lx90MJ6s4g,412
123
+ pymax/types/domain/enums.py,sha256=ONkUdvQ0EazlPuKLnquY6DqfN5z-lMRJlqDvkKyCpok,594
122
124
  pymax/types/domain/error.py,sha256=WZoDAXf5vt8O4VYy7iEHLGBfH6hZQZ1fVkTz9rVCTN0,584
123
125
  pymax/types/domain/folder.py,sha256=Z9pXMzOTfxuhUfrJpLjl5LPnVXqqFsBVfKBQm4IbGWM,2225
124
126
  pymax/types/domain/handshake.py,sha256=9eOPYBJ3O4UAPNUfk7bPnZ3mwBtJw7kfhE8W4aK2k0U,417
125
127
  pymax/types/domain/login.py,sha256=LIw7b2aYqPWfRhCWrBU1zeCtDazJQwoWN3Cdz-WdS4w,2303
126
128
  pymax/types/domain/member.py,sha256=8gUNn4fBS_S2ap45A40lRlrDXYFMoq0Kx-dh57hMWQc,490
127
- pymax/types/domain/message.py,sha256=Nkfie2iZFhBjiYh-W9BQ0dxGEzHjNOWLPguAsyWaYFg,16398
129
+ pymax/types/domain/message.py,sha256=P_DQcWP8VU33nZpdJwFifiGq6cosyyfTTcbcbVgLfKs,19731
128
130
  pymax/types/domain/name.py,sha256=qMIshIqgWkVuROxmiCRhwfJf8XtmhSBoEU6nXs_gEh0,523
129
131
  pymax/types/domain/presence.py,sha256=lKvkK0uYwY0gTSEEkaVdI-tEpWjxLOtH7gp2dy5Uh-0,534
130
132
  pymax/types/domain/profile.py,sha256=taN5PjlKp4EDypVhDx89vmBDpSKh-kT-ISpu1tR2cY8,471
@@ -133,17 +135,17 @@ pymax/types/domain/sync.py,sha256=lBDWo4ACLq2ov5XBccfnI8s_dsGEA7O4mIJVBSUpyrc,32
133
135
  pymax/types/domain/user.py,sha256=Vj9HvSVQKKLJ1HX-OM9T1knvPNyCqrwJnWkz16ByeLg,5367
134
136
  pymax/types/domain/attachments/__init__.py,sha256=loACz_Tp9KWwQSjBwAski55eyRGpMurZ6mrpaVDrXo4,544
135
137
  pymax/types/domain/attachments/audio.py,sha256=I_Qq1qQ9bXsEzWwxEbQbkiY8CEjSKqGqinDFYY_5DY8,1117
136
- pymax/types/domain/attachments/call.py,sha256=RV-BFutymZFinzUiRdaIryqx6ubku2v6y6brc-qsHOQ,818
137
- pymax/types/domain/attachments/contact.py,sha256=EO-B0klgUMITL05fBgFXi99i8VzxBj3D2pLB0JBWy_M,996
138
- pymax/types/domain/attachments/control.py,sha256=1Zr0pM1ODZgYRX3CDw7yGzqEgb6R_JjRSQOSI_FDpDE,502
139
- pymax/types/domain/attachments/enums.py,sha256=pVA3_ejrUbdsTWVs5ckqH3Pis2lHK6CKbbUlqo-DIjQ,1228
138
+ pymax/types/domain/attachments/call.py,sha256=vYFOz1XT2YHOlSFkKqLAFW-Y1quRBlB2bjHMidjBB8U,1195
139
+ pymax/types/domain/attachments/contact.py,sha256=ZAvvPdNwm_t_Up9puQFOxHYl0U-7Asf2qhvLlo1oBqs,1053
140
+ pymax/types/domain/attachments/control.py,sha256=Io-Plz4kSJvvR4WndbQm09GyA2Ezut9Hnsd6oDcnayg,673
141
+ pymax/types/domain/attachments/enums.py,sha256=rD9c1985gH-Ob9IONlM32ok6F9-F_5hGI1aPTotwvRc,1599
140
142
  pymax/types/domain/attachments/file.py,sha256=3lqsPIkg75-AmcaEbXwc1eiQHIv9JpWzMc0z4u2MupE,1595
141
143
  pymax/types/domain/attachments/photo.py,sha256=8q79OuQ0V8t-s9pZM8ClAmgJI71m-bgES4Bd5ZSNVI0,1413
142
144
  pymax/types/domain/attachments/poll.py,sha256=-p3KJX_X6Nno8I3qA813-9pFkp8VFrLRgx7sL5Aauac,3569
143
145
  pymax/types/domain/attachments/share.py,sha256=BHJIVjTC99wfbUn8wSN4j0aSNlEpojzv87uwbmhPPt0,924
144
146
  pymax/types/domain/attachments/sticker.py,sha256=sJn13LuyF5u7Oy9HLGBIlXmdPjxAib0oy30TZz455vE,1544
145
147
  pymax/types/domain/attachments/unknown.py,sha256=oThuTVkzkdmpCftRoa42b1jyy-QbBbfgyc0ocX0jeS8,917
146
- pymax/types/domain/attachments/video.py,sha256=GO8wtuTTCNIVAfsSxRGT-M9KKhlsb5nDLWWX09bfjPg,3731
148
+ pymax/types/domain/attachments/video.py,sha256=ZT0qYp6LWtrMA-U4mJY-NIyqPMgfZ7bsA3YQhjDSO54,3786
147
149
  pymax/types/domain/attachments/keyboards/__init__.py,sha256=1X5UGBe5E_DO7e4p8_JmJEocHLzXOezutieRuQsVpRA,45
148
150
  pymax/types/domain/attachments/keyboards/inline.py,sha256=3RNubcqx7RZ1f6zfJ7JaNFCPx5mnmJ5vYsL1i7lSMAM,577
149
151
  pymax/types/events/__init__.py,sha256=fvCPR_ZN-zRow3eeJ3hzDn2auWfnOxFFQ8GRTZTFfMA,294
@@ -155,7 +157,10 @@ pymax/types/events/reaction.py,sha256=d-oA9czes9vQIO8jaEmdiUWIrE8Dea0jhHnCA5f9FO
155
157
  pymax/types/events/typing.py,sha256=vDMgqYE0jz8dN2YfqsNaJLB8k7pMd6kaDEdR_KrLk5g,376
156
158
  pymax/types/events/video.py,sha256=swBHYadmDS0SjLXGqVqRYsuMoVZ6MjD2aYR2fbM-AJc,104
157
159
  pymax/types/events/voice.py,sha256=E4BjLBnqsu05s8ZxFN4I_B5OVaecoPvXI-826YJ_ze8,104
158
- maxapi_python-2.4.0.dist-info/METADATA,sha256=Ab1QeIiU0mPXYonfXA4fLB6WXL5piiJTqKdCtSSa4B8,7379
159
- maxapi_python-2.4.0.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
160
- maxapi_python-2.4.0.dist-info/licenses/LICENSE,sha256=hOR249ItqMdcly1A0amqEWRNRTq4Gv5NJtmQ3A5qK4E,1070
161
- maxapi_python-2.4.0.dist-info/RECORD,,
160
+ pymax/versions/__init__.py,sha256=Y_sOE3LNIEMz6P2K7moowdeJfoZxaQOHcxI4fAqUGFY,81
161
+ pymax/versions/catalog.py,sha256=oz4IQaqgvLs2scy7O5VjuSvThOQUbD8VhSkKzMnz-jQ,3941
162
+ pymax/versions/exceptions.py,sha256=ZjQD1ulkjpjpGX_YWYZ1943DkJdccK4P5f4ozcEcX3U,448
163
+ maxapi_python-2.4.1.dist-info/METADATA,sha256=H_S0e7Q6rDm96J0mq4uHM-f3pqklvpEH8a7nMlcgu9k,7771
164
+ maxapi_python-2.4.1.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
165
+ maxapi_python-2.4.1.dist-info/licenses/LICENSE,sha256=hOR249ItqMdcly1A0amqEWRNRTq4Gv5NJtmQ3A5qK4E,1070
166
+ maxapi_python-2.4.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.31.0
2
+ Generator: hatchling 1.32.0
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.4.1"
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,
@@ -49,12 +50,13 @@ __all__ = (
49
50
  "Message",
50
51
  "MessageDeleteEvent",
51
52
  "MessageReadEvent",
53
+ "PasswordAttemptsExceededError",
52
54
  "PasswordProvider",
53
55
  "Photo",
54
56
  "PresenceEvent",
55
- "Profile",
56
57
  "PrivacyAccess",
57
58
  "PrivacySettingsUpdate",
59
+ "Profile",
58
60
  "PyMaxError",
59
61
  "QrAuthFlow",
60
62
  "QrHandler",
@@ -1,21 +1,4 @@
1
1
  {
2
- "26.9.1": {
3
- "signature_scheme": "v3",
4
- "certificate_count": 1,
5
- "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
6
- "certificate_sha256": [
7
- "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
8
- ],
9
- "dex_meta_sha256": "6ce0d31a723db1a03d0523236b37b7a2000428ce60bd0ff34e45d082dd7c1590",
10
- "so_meta_sha256_arm64_v8a": "10be2bbf7629dfed4a50b8c1114f8386c271df3a3fe1bee433b7846483ed183e",
11
- "so_meta_sha256": {
12
- "arm64-v8a": "10be2bbf7629dfed4a50b8c1114f8386c271df3a3fe1bee433b7846483ed183e",
13
- "armeabi-v7a": "6fe430d8d622243d8d7aba3394f40c4df59474b6291e9ed78c023fc2f7dc5281",
14
- "x86": "0dc31a603ecbd77cb0067440a99283444613053755a3f823ef1a9e249e25da4c",
15
- "x86_64": "7bf4bc1e18412814ccc62dedce0419f1444504d28c634cb394cb13d381e39820"
16
- },
17
- "build_number": 6643
18
- },
19
2
  "26.10.0": {
20
3
  "signature_scheme": "v3",
21
4
  "certificate_count": 1,
@@ -678,5 +661,107 @@
678
661
  "x86_64": "251b88c27a1c055f27adc110e44a75a1c60408b0d5e20e3844f816aa227212a3"
679
662
  },
680
663
  "build_number": 6790
664
+ },
665
+ "26.26.0": {
666
+ "signature_scheme": "v3",
667
+ "certificate_count": 1,
668
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
669
+ "certificate_sha256": [
670
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
671
+ ],
672
+ "dex_meta_sha256": "2538a819fdcf2cf8afdcb1ab1476d0c08cc0e4d4bad86f1bf381408d081ec410",
673
+ "so_meta_sha256_arm64_v8a": "634ecc42b246784d975f180b4fecf903df235cdf0476da47163a85630eb1a6a8",
674
+ "so_meta_sha256": {
675
+ "arm64-v8a": "634ecc42b246784d975f180b4fecf903df235cdf0476da47163a85630eb1a6a8",
676
+ "armeabi-v7a": "042220bdd481a280d2c1f4f6827f0e4fab7bca61e5af0f6035a0d191aed1350c",
677
+ "x86": "deffe34d2a9d83584e02cbb3f22ba5a6dbe1b065dbc8a8ea8ca908dae865c5f6",
678
+ "x86_64": "251b88c27a1c055f27adc110e44a75a1c60408b0d5e20e3844f816aa227212a3"
679
+ },
680
+ "build_number": 6797
681
+ },
682
+ "26.26.1": {
683
+ "signature_scheme": "v3",
684
+ "certificate_count": 1,
685
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
686
+ "certificate_sha256": [
687
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
688
+ ],
689
+ "dex_meta_sha256": "dfd7c9656330664b7e2a2c2c12f2b795631105359ee79e3a241dff0aad91ecda",
690
+ "so_meta_sha256_arm64_v8a": "634ecc42b246784d975f180b4fecf903df235cdf0476da47163a85630eb1a6a8",
691
+ "so_meta_sha256": {
692
+ "arm64-v8a": "634ecc42b246784d975f180b4fecf903df235cdf0476da47163a85630eb1a6a8",
693
+ "armeabi-v7a": "042220bdd481a280d2c1f4f6827f0e4fab7bca61e5af0f6035a0d191aed1350c",
694
+ "x86": "deffe34d2a9d83584e02cbb3f22ba5a6dbe1b065dbc8a8ea8ca908dae865c5f6",
695
+ "x86_64": "251b88c27a1c055f27adc110e44a75a1c60408b0d5e20e3844f816aa227212a3"
696
+ },
697
+ "build_number": 6798
698
+ },
699
+ "26.27.0": {
700
+ "signature_scheme": "v3",
701
+ "certificate_count": 1,
702
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
703
+ "certificate_sha256": [
704
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
705
+ ],
706
+ "dex_meta_sha256": "a68af06b78977b960d30ec6ed5fdffe9266ffbe351541b03c59978739fb7b2b9",
707
+ "so_meta_sha256_arm64_v8a": "634ecc42b246784d975f180b4fecf903df235cdf0476da47163a85630eb1a6a8",
708
+ "so_meta_sha256": {
709
+ "arm64-v8a": "634ecc42b246784d975f180b4fecf903df235cdf0476da47163a85630eb1a6a8",
710
+ "armeabi-v7a": "042220bdd481a280d2c1f4f6827f0e4fab7bca61e5af0f6035a0d191aed1350c",
711
+ "x86": "deffe34d2a9d83584e02cbb3f22ba5a6dbe1b065dbc8a8ea8ca908dae865c5f6",
712
+ "x86_64": "251b88c27a1c055f27adc110e44a75a1c60408b0d5e20e3844f816aa227212a3"
713
+ },
714
+ "build_number": 6800
715
+ },
716
+ "26.27.1": {
717
+ "signature_scheme": "v3",
718
+ "certificate_count": 1,
719
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
720
+ "certificate_sha256": [
721
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
722
+ ],
723
+ "dex_meta_sha256": "443d2e2121ebe59c235dfce0537f5aeb560906c4c9c131cbade3db507074083d",
724
+ "so_meta_sha256_arm64_v8a": "634ecc42b246784d975f180b4fecf903df235cdf0476da47163a85630eb1a6a8",
725
+ "so_meta_sha256": {
726
+ "arm64-v8a": "634ecc42b246784d975f180b4fecf903df235cdf0476da47163a85630eb1a6a8",
727
+ "armeabi-v7a": "042220bdd481a280d2c1f4f6827f0e4fab7bca61e5af0f6035a0d191aed1350c",
728
+ "x86": "deffe34d2a9d83584e02cbb3f22ba5a6dbe1b065dbc8a8ea8ca908dae865c5f6",
729
+ "x86_64": "251b88c27a1c055f27adc110e44a75a1c60408b0d5e20e3844f816aa227212a3"
730
+ },
731
+ "build_number": 6802
732
+ },
733
+ "26.28.0": {
734
+ "signature_scheme": "v3",
735
+ "certificate_count": 1,
736
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
737
+ "certificate_sha256": [
738
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
739
+ ],
740
+ "dex_meta_sha256": "20248d9c06745abe01c19cd019f7ac11e0a43dc02e49f87919f01b720c28b30f",
741
+ "so_meta_sha256_arm64_v8a": "9a7d6c3f2d3d01ca5e8692f254be92306d37fadb074692479bdf961943675f7a",
742
+ "so_meta_sha256": {
743
+ "arm64-v8a": "9a7d6c3f2d3d01ca5e8692f254be92306d37fadb074692479bdf961943675f7a",
744
+ "armeabi-v7a": "bfc5ac5df34357fa817c4a8ce4696cd95b2c34f903d91ef15ea86463c600befa",
745
+ "x86": "918eacab4fa4e04d90a7fa666bc39633ae47fbba70b6817b5dfd1f62233fab8e",
746
+ "x86_64": "ae38786d2c0541c4d2c3050265e30bde68df16302aebc5302432813ff20f858c"
747
+ },
748
+ "build_number": 6804
749
+ },
750
+ "26.9.1": {
751
+ "signature_scheme": "v3",
752
+ "certificate_count": 1,
753
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
754
+ "certificate_sha256": [
755
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
756
+ ],
757
+ "dex_meta_sha256": "6ce0d31a723db1a03d0523236b37b7a2000428ce60bd0ff34e45d082dd7c1590",
758
+ "so_meta_sha256_arm64_v8a": "10be2bbf7629dfed4a50b8c1114f8386c271df3a3fe1bee433b7846483ed183e",
759
+ "so_meta_sha256": {
760
+ "arm64-v8a": "10be2bbf7629dfed4a50b8c1114f8386c271df3a3fe1bee433b7846483ed183e",
761
+ "armeabi-v7a": "6fe430d8d622243d8d7aba3394f40c4df59474b6291e9ed78c023fc2f7dc5281",
762
+ "x86": "0dc31a603ecbd77cb0067440a99283444613053755a3f823ef1a9e249e25da4c",
763
+ "x86_64": "7bf4bc1e18412814ccc62dedce0419f1444504d28c634cb394cb13d381e39820"
764
+ },
765
+ "build_number": 6643
681
766
  }
682
767
  }
@@ -0,0 +1,33 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIFwjCCA6qgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCUlUx
3
+ PzA9BgNVBAoMNlRoZSBNaW5pc3RyeSBvZiBEaWdpdGFsIERldmVsb3BtZW50IGFu
4
+ ZCBDb21tdW5pY2F0aW9uczEgMB4GA1UEAwwXUnVzc2lhbiBUcnVzdGVkIFJvb3Qg
5
+ Q0EwHhcNMjIwMzAxMjEwNDE1WhcNMzIwMjI3MjEwNDE1WjBwMQswCQYDVQQGEwJS
6
+ VTE/MD0GA1UECgw2VGhlIE1pbmlzdHJ5IG9mIERpZ2l0YWwgRGV2ZWxvcG1lbnQg
7
+ YW5kIENvbW11bmljYXRpb25zMSAwHgYDVQQDDBdSdXNzaWFuIFRydXN0ZWQgUm9v
8
+ dCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMfFOZ8pUAL3+r2n
9
+ qqE0Zp52selXsKGFYoG0GM5bwz1bSFtCt+AZQMhkWQheI3poZAToYJu69pHLKS6Q
10
+ XBiwBC1cvzYmUYKMYZC7jE5YhEU2bSL0mX7NaMxMDmH2/NwuOVRj8OImVa5s1F4U
11
+ zn4Kv3PFlDBjjSjXKVY9kmjUBsXQrIHeaqmUIsPIlNWUnimXS0I0abExqkbdrXbX
12
+ YwCOXhOO2pDUx3ckmJlCMUGacUTnylyQW2VsJIyIGA8V0xzdaeUXg0VZ6ZmNUr5Y
13
+ Ber/EAOLPb8NYpsAhJe2mXjMB/J9HNsoFMBFJ0lLOT/+dQvjbdRZoOT8eqJpWnVD
14
+ U+QL/qEZnz57N88OWM3rabJkRNdU/Z7x5SFIM9FrqtN8xewsiBWBI0K6XFuOBOTD
15
+ 4V08o4TzJ8+Ccq5XlCUW2L48pZNCYuBDfBh7FxkB7qDgGDiaftEkZZfApRg2E+M9
16
+ G8wkNKTPLDc4wH0FDTijhgxR3Y4PiS1HL2Zhw7bD3CbslmEGgfnnZojNkJtcLeBH
17
+ BLa52/dSwNU4WWLubaYSiAmA9IUMX1/RpfpxOxd4Ykmhz97oFbUaDJFipIggx5sX
18
+ ePAlkTdWnv+RWBxlJwMQ25oEHmRguNYf4Zr/Rxr9cS93Y+mdXIZaBEE0KS2iLRqa
19
+ OiWBki9IMQU4phqPOBAaG7A+eP8PAgMBAAGjZjBkMB0GA1UdDgQWBBTh0YHlzlpf
20
+ BKrS6badZrHF+qwshzAfBgNVHSMEGDAWgBTh0YHlzlpfBKrS6badZrHF+qwshzAS
21
+ BgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF
22
+ AAOCAgEAALIY1wkilt/urfEVM5vKzr6utOeDWCUczmWX/RX4ljpRdgF+5fAIS4vH
23
+ tmXkqpSCOVeWUrJV9QvZn6L227ZwuE15cWi8DCDal3Ue90WgAJJZMfTshN4OI8cq
24
+ W9E4EG9wglbEtMnObHlms8F3CHmrw3k6KmUkWGoa+/ENmcVl68u/cMRl1JbW2bM+
25
+ /3A+SAg2c6iPDlehczKx2oa95QW0SkPPWGuNA/CE8CpyANIhu9XFrj3RQ3EqeRcS
26
+ AQQod1RNuHpfETLU/A2gMmvn/w/sx7TB3W5BPs6rprOA37tutPq9u6FTZOcG1Oqj
27
+ C/B7yTqgI7rbyvox7DEXoX7rIiEqyNNUguTk/u3SZ4VXE2kmxdmSh3TQvybfbnXV
28
+ 4JbCZVaqiZraqc7oZMnRoWrXRG3ztbnbes/9qhRGI7PqXqeKJBztxRTEVj8ONs1d
29
+ WN5szTwaPIvhkhO3CO5ErU2rVdUr89wKpNXbBODFKRtgxUT70YpmJ46VVaqdAhOZ
30
+ D9EUUn4YaeLaS8AjSF/h7UkjOibNc4qVDiPP+rkehFWM66PVnP1Msh93tc+taIfC
31
+ EYVMxjh8zNbFuoc7fzvvrFILLe7ifvEIUqSVIC/AzplM/Jxw7buXFeGP1qVCBEHq
32
+ 391d/9RAfaZ12zkwFsl+IKwE/OZxW8AHa9i1p4GO0YSNuczzEm4=
33
+ -----END CERTIFICATE-----
pymax/api/auth/service.py CHANGED
@@ -76,8 +76,14 @@ class AuthService:
76
76
  + "in AuthService.request_code. Please report this issue to the developer."
77
77
  )
78
78
 
79
+ if self.app.fingerprint_generator is None:
80
+ raise ValueError(
81
+ "Unexpected internal state: self.app.fingerprint_generator is missing and "
82
+ + "DeviceType != WEB"
83
+ + "in AuthService.request_code. Please report this issue to the developer."
84
+ )
85
+
79
86
  mode = self.app.fingerprint_generator.generate_fingerprint(
80
- version=self.app.config.device.user_agent.app_version,
81
87
  device_id=device_id,
82
88
  calls_seed=self.app.handshake_response.calls_seed,
83
89
  arch=self.app.config.device.user_agent.arch or "arm64-v8a",
@@ -163,8 +169,14 @@ class AuthService:
163
169
  + "in AuthService.mobile_login. Please report this issue to the developer."
164
170
  )
165
171
 
172
+ if self.app.fingerprint_generator is None:
173
+ raise ValueError(
174
+ "Unexpected internal state: self.app.fingerprint_generator is missing and "
175
+ + "DeviceType != WEB"
176
+ + "in AuthService.request_code. Please report this issue to the developer."
177
+ )
178
+
166
179
  ccf = self.app.fingerprint_generator.generate_fingerprint(
167
- version=self.app.config.device.user_agent.app_version,
168
180
  device_id=device_id,
169
181
  calls_seed=self.app.handshake_response.calls_seed,
170
182
  arch=self.app.config.device.user_agent.arch or "arm64-v8a",
@@ -74,8 +74,9 @@ class ChangeGroupSettingsPayload(CamelModel):
74
74
 
75
75
  class ChangeGroupProfilePayload(CamelModel):
76
76
  chat_id: int
77
- theme: str | None
77
+ theme: str | None = None
78
78
  description: str | None = None
79
+ photo_token: str | None = None
79
80
 
80
81
 
81
82
  class JoinChatPayload(CamelModel):
@@ -14,6 +14,7 @@ from pymax.api.response import (
14
14
  require_payload_model,
15
15
  )
16
16
  from pymax.exceptions import PyMaxError
17
+ from pymax.files import Photo
17
18
  from pymax.logging import get_logger
18
19
  from pymax.protocol import Opcode
19
20
  from pymax.types.domain import Chat, Member, Message
@@ -211,13 +212,19 @@ class ChatService:
211
212
  chat_id: int,
212
213
  name: str | None,
213
214
  description: str | None = None,
215
+ photo: Photo | None = None,
214
216
  ) -> None:
217
+
215
218
  frame = ChangeGroupProfilePayload(
216
219
  chat_id=chat_id,
217
220
  theme=name,
218
221
  description=description,
219
222
  )
220
223
 
224
+ if photo:
225
+ photo_payload = await self.app.api.uploads.upload_photo(photo)
226
+ frame.photo_token = photo_payload.photo_token
227
+
221
228
  response = await self.app.invoke(Opcode.CHAT_UPDATE, frame.to_payload())
222
229
  chat = parse_payload_item_model(response, ChatPayloadKey.CHAT, Chat)
223
230
  if chat:
@@ -1 +1 @@
1
- from .service import MessageService
1
+ from .service import DateTimeUnion, MessageService
@@ -33,12 +33,18 @@ class ReplyLink(CamelModel):
33
33
  message_id: int
34
34
 
35
35
 
36
+ class DelayedAttributes(CamelModel):
37
+ time_to_fire: int
38
+ notify_sender: bool
39
+
40
+
36
41
  class SendMessagePayloadMessage(CamelModel):
37
42
  text: str | None = None
38
43
  cid: int
39
44
  elements: list[Any]
40
45
  attaches: list[AttachPhotoPayload | VideoAttachPayload | AttachFilePayload | Poll]
41
46
  link: ReplyLink | None = None
47
+ delayed_attributes: DelayedAttributes | None = None
42
48
 
43
49
 
44
50
  class SendMessagePayload(CamelModel):
@@ -111,18 +117,18 @@ class ReactionInfoPayload(CamelModel):
111
117
 
112
118
  class AddReactionPayload(CamelModel):
113
119
  chat_id: int
114
- message_id: str
120
+ message_id: int
115
121
  reaction: ReactionInfoPayload
116
122
 
117
123
 
118
124
  class GetReactionsPayload(CamelModel):
119
125
  chat_id: int
120
- message_ids: list[str]
126
+ message_ids: list[int]
121
127
 
122
128
 
123
129
  class RemoveReactionPayload(CamelModel):
124
130
  chat_id: int
125
- message_id: str
131
+ message_id: int
126
132
 
127
133
 
128
134
  class ReadMessagesPayload(CamelModel):