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,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,379 @@
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.29.0": {
751
+ "signature_scheme": "v3",
752
+ "certificate_count": 1,
753
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
754
+ "certificate_sha256": [
755
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
756
+ ],
757
+ "dex_meta_sha256": "4e8c23ff85bc3926ada1a577942f6fd7cda673276cd9f6d1edba20a08e03dbcb",
758
+ "so_meta_sha256_arm64_v8a": "9a7d6c3f2d3d01ca5e8692f254be92306d37fadb074692479bdf961943675f7a",
759
+ "so_meta_sha256": {
760
+ "arm64-v8a": "9a7d6c3f2d3d01ca5e8692f254be92306d37fadb074692479bdf961943675f7a",
761
+ "armeabi-v7a": "bfc5ac5df34357fa817c4a8ce4696cd95b2c34f903d91ef15ea86463c600befa",
762
+ "x86": "918eacab4fa4e04d90a7fa666bc39633ae47fbba70b6817b5dfd1f62233fab8e",
763
+ "x86_64": "ae38786d2c0541c4d2c3050265e30bde68df16302aebc5302432813ff20f858c"
764
+ },
765
+ "build_number": 6807
766
+ },
767
+ "26.29.1": {
768
+ "signature_scheme": "v3",
769
+ "certificate_count": 1,
770
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
771
+ "certificate_sha256": [
772
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
773
+ ],
774
+ "dex_meta_sha256": "5f794a4cf36dde2a49e10dd7d803ad837eaeb021a28e41321ce345c73cd5e275",
775
+ "so_meta_sha256_arm64_v8a": "9a7d6c3f2d3d01ca5e8692f254be92306d37fadb074692479bdf961943675f7a",
776
+ "so_meta_sha256": {
777
+ "arm64-v8a": "9a7d6c3f2d3d01ca5e8692f254be92306d37fadb074692479bdf961943675f7a",
778
+ "armeabi-v7a": "bfc5ac5df34357fa817c4a8ce4696cd95b2c34f903d91ef15ea86463c600befa",
779
+ "x86": "918eacab4fa4e04d90a7fa666bc39633ae47fbba70b6817b5dfd1f62233fab8e",
780
+ "x86_64": "ae38786d2c0541c4d2c3050265e30bde68df16302aebc5302432813ff20f858c"
781
+ },
782
+ "build_number": 6808
783
+ },
784
+ "26.30.0": {
785
+ "signature_scheme": "v3",
786
+ "certificate_count": 1,
787
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
788
+ "certificate_sha256": [
789
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
790
+ ],
791
+ "dex_meta_sha256": "d13689c99becd8d94d5b9a57418b792928915064e6192731763a96625157ec01",
792
+ "so_meta_sha256_arm64_v8a": "9a7d6c3f2d3d01ca5e8692f254be92306d37fadb074692479bdf961943675f7a",
793
+ "so_meta_sha256": {
794
+ "arm64-v8a": "9a7d6c3f2d3d01ca5e8692f254be92306d37fadb074692479bdf961943675f7a",
795
+ "armeabi-v7a": "bfc5ac5df34357fa817c4a8ce4696cd95b2c34f903d91ef15ea86463c600befa",
796
+ "x86": "918eacab4fa4e04d90a7fa666bc39633ae47fbba70b6817b5dfd1f62233fab8e",
797
+ "x86_64": "ae38786d2c0541c4d2c3050265e30bde68df16302aebc5302432813ff20f858c"
798
+ },
799
+ "build_number": 6810
800
+ },
801
+ "26.30.1": {
802
+ "signature_scheme": "v3",
803
+ "certificate_count": 1,
804
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
805
+ "certificate_sha256": [
806
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
807
+ ],
808
+ "dex_meta_sha256": "f0478d38a9d9172a7bf055f7a3bbf5a878ea9e4df8196a1c9e788ad3c35e95b7",
809
+ "so_meta_sha256_arm64_v8a": "9a7d6c3f2d3d01ca5e8692f254be92306d37fadb074692479bdf961943675f7a",
810
+ "so_meta_sha256": {
811
+ "arm64-v8a": "9a7d6c3f2d3d01ca5e8692f254be92306d37fadb074692479bdf961943675f7a",
812
+ "armeabi-v7a": "bfc5ac5df34357fa817c4a8ce4696cd95b2c34f903d91ef15ea86463c600befa",
813
+ "x86": "918eacab4fa4e04d90a7fa666bc39633ae47fbba70b6817b5dfd1f62233fab8e",
814
+ "x86_64": "ae38786d2c0541c4d2c3050265e30bde68df16302aebc5302432813ff20f858c"
815
+ },
816
+ "build_number": 6819
817
+ },
818
+ "26.31.0": {
819
+ "signature_scheme": "v3",
820
+ "certificate_count": 1,
821
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
822
+ "certificate_sha256": [
823
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
824
+ ],
825
+ "dex_meta_sha256": "9affa687874d88ea80b298949f826bcf8c1bba36f24d48c44b8f54cdbf01c96f",
826
+ "so_meta_sha256_arm64_v8a": "38e2e5de3d4a9010ea1053eb28573593683c5b2bb16b09914a8822476c8aab8c",
827
+ "so_meta_sha256": {
828
+ "arm64-v8a": "38e2e5de3d4a9010ea1053eb28573593683c5b2bb16b09914a8822476c8aab8c",
829
+ "armeabi-v7a": "f60cb2576885e0af5350c98fe88355a2f26008a372c998c193b6222f717e274f",
830
+ "x86": "80bd04964e7d0492740113047ff20ebdf88ba6e6eb48d8765cbd5fe678283065",
831
+ "x86_64": "96173e7c2d9449c1ab4474265b410f37ce45f560b0974460a75c7c6000ca22fd"
832
+ },
833
+ "build_number": 6822
834
+ },
835
+ "26.32.0": {
836
+ "signature_scheme": "v3",
837
+ "certificate_count": 1,
838
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
839
+ "certificate_sha256": [
840
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
841
+ ],
842
+ "dex_meta_sha256": "3a2ca283856d80fc435fc138c5491e5b577288abb8fbad3b76119b9c602b5f8e",
843
+ "so_meta_sha256_arm64_v8a": "3727957b95dcadea914b43fceacaa0c48f688f4f2517e223e548b525df6c5897",
844
+ "so_meta_sha256": {
845
+ "arm64-v8a": "3727957b95dcadea914b43fceacaa0c48f688f4f2517e223e548b525df6c5897",
846
+ "armeabi-v7a": "4704107fd3816b7e1a7046b700c0a726840d0af25d7beb1f391f5b7cbe93d073",
847
+ "x86": "7d120871e1561d53ba0b952a57bdfee7792e2bb4d36d75411a15d7256c5cf548",
848
+ "x86_64": "a5fd0a3d40bbfcf038f53e96fcabdee8ea21eafe68ec46a9efb095e326e204ae"
849
+ },
850
+ "build_number": 6828
851
+ },
852
+ "26.32.1": {
853
+ "signature_scheme": "v3",
854
+ "certificate_count": 1,
855
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
856
+ "certificate_sha256": [
857
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
858
+ ],
859
+ "dex_meta_sha256": "97da66ad31ca8adcd22b8e181bbd95d17ecba6d7b005745934faa1b90307beab",
860
+ "so_meta_sha256_arm64_v8a": "3727957b95dcadea914b43fceacaa0c48f688f4f2517e223e548b525df6c5897",
861
+ "so_meta_sha256": {
862
+ "arm64-v8a": "3727957b95dcadea914b43fceacaa0c48f688f4f2517e223e548b525df6c5897",
863
+ "armeabi-v7a": "4704107fd3816b7e1a7046b700c0a726840d0af25d7beb1f391f5b7cbe93d073",
864
+ "x86": "7d120871e1561d53ba0b952a57bdfee7792e2bb4d36d75411a15d7256c5cf548",
865
+ "x86_64": "a5fd0a3d40bbfcf038f53e96fcabdee8ea21eafe68ec46a9efb095e326e204ae"
866
+ },
867
+ "build_number": 6831
868
+ },
869
+ "26.33.0": {
870
+ "signature_scheme": "v3",
871
+ "certificate_count": 1,
872
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
873
+ "certificate_sha256": [
874
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
875
+ ],
876
+ "dex_meta_sha256": "771ac6fa7aac04f7388d2354f33f22b9f9c4c8ec26126b556192e5d918986142",
877
+ "so_meta_sha256_arm64_v8a": "980eb6d9c6c4c04573bf73fbbb2c385be97cbb1d9ec733ce53574612c9730edf",
878
+ "so_meta_sha256": {
879
+ "arm64-v8a": "980eb6d9c6c4c04573bf73fbbb2c385be97cbb1d9ec733ce53574612c9730edf",
880
+ "armeabi-v7a": "2350dd69aa0765371acbc94a5a02487eab29288def1a38f113d0d98b5c60ce81",
881
+ "x86": "9b07a1a0a6730c0d0dd230a90ee4dc3df8f3fe890e790f57c183e0fe0b3f981b",
882
+ "x86_64": "94999ef1d35c3952773a85ef394a1e44037fa61b562656af15330f9d3e29b871"
883
+ },
884
+ "build_number": 6835
885
+ },
886
+ "26.33.1": {
887
+ "signature_scheme": "v3",
888
+ "certificate_count": 1,
889
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
890
+ "certificate_sha256": [
891
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
892
+ ],
893
+ "dex_meta_sha256": "fb3e23aff9bc5956f7f35a6b489c6ee98824be485068ffdba56a24e8437246ac",
894
+ "so_meta_sha256_arm64_v8a": "980eb6d9c6c4c04573bf73fbbb2c385be97cbb1d9ec733ce53574612c9730edf",
895
+ "so_meta_sha256": {
896
+ "arm64-v8a": "980eb6d9c6c4c04573bf73fbbb2c385be97cbb1d9ec733ce53574612c9730edf",
897
+ "armeabi-v7a": "2350dd69aa0765371acbc94a5a02487eab29288def1a38f113d0d98b5c60ce81",
898
+ "x86": "9b07a1a0a6730c0d0dd230a90ee4dc3df8f3fe890e790f57c183e0fe0b3f981b",
899
+ "x86_64": "94999ef1d35c3952773a85ef394a1e44037fa61b562656af15330f9d3e29b871"
900
+ },
901
+ "build_number": 6840
902
+ },
903
+ "26.34.0": {
904
+ "signature_scheme": "v3",
905
+ "certificate_count": 1,
906
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
907
+ "certificate_sha256": [
908
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
909
+ ],
910
+ "dex_meta_sha256": "8795ddda6dac6af71d85af784098cef89b76d0433f94d64fcc15539a96efa797",
911
+ "so_meta_sha256_arm64_v8a": "a8736be0de244537f21098389c7a6976acda3f0c18b1c197f94e10fb017ef280",
912
+ "so_meta_sha256": {
913
+ "arm64-v8a": "a8736be0de244537f21098389c7a6976acda3f0c18b1c197f94e10fb017ef280",
914
+ "armeabi-v7a": "cf39e98e49b421e67bbf32fb4e869d7445108db35a0e3eac8e68af4294b6354f",
915
+ "x86": "07f695a1bc4c2ed9c8fb7b69685ad87364604849b821e8e3bfc7d90b83dc6049",
916
+ "x86_64": "8a2d74ac0aa6f9056864a03e9b62cc8ad7554ba25496e73c3d7637ff98adec60"
917
+ },
918
+ "build_number": 6850
919
+ },
920
+ "26.34.1": {
921
+ "signature_scheme": "v3",
922
+ "certificate_count": 1,
923
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
924
+ "certificate_sha256": [
925
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
926
+ ],
927
+ "dex_meta_sha256": "89e1f591ba2da77028b567a1c2b41cf572d99dd9827fed5be798b7487696de2e",
928
+ "so_meta_sha256_arm64_v8a": "a8736be0de244537f21098389c7a6976acda3f0c18b1c197f94e10fb017ef280",
929
+ "so_meta_sha256": {
930
+ "arm64-v8a": "a8736be0de244537f21098389c7a6976acda3f0c18b1c197f94e10fb017ef280",
931
+ "armeabi-v7a": "cf39e98e49b421e67bbf32fb4e869d7445108db35a0e3eac8e68af4294b6354f",
932
+ "x86": "07f695a1bc4c2ed9c8fb7b69685ad87364604849b821e8e3bfc7d90b83dc6049",
933
+ "x86_64": "8a2d74ac0aa6f9056864a03e9b62cc8ad7554ba25496e73c3d7637ff98adec60"
934
+ },
935
+ "build_number": 6856
936
+ },
937
+ "26.35.0": {
938
+ "signature_scheme": "v3",
939
+ "certificate_count": 1,
940
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
941
+ "certificate_sha256": [
942
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
943
+ ],
944
+ "dex_meta_sha256": "4650b42a1fb52fdd43e8f2bab6117d5eb966fe085bf426e8a8e908e36635984e",
945
+ "so_meta_sha256_arm64_v8a": "fdaf7841b16e6ddc64092d188a6202a37a525c0d77d6b773d63f9be6e0ac2529",
946
+ "so_meta_sha256": {
947
+ "arm64-v8a": "fdaf7841b16e6ddc64092d188a6202a37a525c0d77d6b773d63f9be6e0ac2529",
948
+ "armeabi-v7a": "dfa9e6141ec1b96f2addf6900538b992db47b1acc33f1a22adc9378b98f104e8",
949
+ "x86": "b4892273ee29c8882e81182bd961c240c5376426ae81919495c16b6ed620ec14",
950
+ "x86_64": "c1e2afc2171243a694c25db6694f664540a3e146dcdeb2b1baba090ebcdee289"
951
+ },
952
+ "build_number": 6861
953
+ },
954
+ "26.35.1": {
955
+ "signature_scheme": "v3",
956
+ "certificate_count": 1,
957
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
958
+ "certificate_sha256": [
959
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
960
+ ],
961
+ "dex_meta_sha256": "58593332e67b8f80fe708f139f43ad65d654ebeea768adf2ea2b1611a54f19b5",
962
+ "so_meta_sha256_arm64_v8a": "fdaf7841b16e6ddc64092d188a6202a37a525c0d77d6b773d63f9be6e0ac2529",
963
+ "so_meta_sha256": {
964
+ "arm64-v8a": "fdaf7841b16e6ddc64092d188a6202a37a525c0d77d6b773d63f9be6e0ac2529",
965
+ "armeabi-v7a": "dfa9e6141ec1b96f2addf6900538b992db47b1acc33f1a22adc9378b98f104e8",
966
+ "x86": "b4892273ee29c8882e81182bd961c240c5376426ae81919495c16b6ed620ec14",
967
+ "x86_64": "c1e2afc2171243a694c25db6694f664540a3e146dcdeb2b1baba090ebcdee289"
968
+ },
969
+ "build_number": 6867
970
+ },
971
+ "26.36.2": {
972
+ "signature_scheme": "v3",
973
+ "certificate_count": 1,
974
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
975
+ "certificate_sha256": [
976
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
977
+ ],
978
+ "dex_meta_sha256": "3d960099bcd1b97bc21bf7826f87689a44ce0d29de5534d24ea9e0c1efc78a7f",
979
+ "so_meta_sha256_arm64_v8a": "85ba5340d5a9e031623d938d7180ab4ad5ba1e6ed596215bd3278f71f280fa46",
980
+ "so_meta_sha256": {
981
+ "arm64-v8a": "85ba5340d5a9e031623d938d7180ab4ad5ba1e6ed596215bd3278f71f280fa46",
982
+ "armeabi-v7a": "722f9e5254e247576d99f7f3c46382151bcdbdc4ef1a58d432d612d400cc7720",
983
+ "x86": "e22fd336b2a4bb00bdefde00f5618ae385dc73a49040aa5167b1b23f5b6fb188",
984
+ "x86_64": "00a641e017691534957f2b0775f4768c5f3ad2334c6c2d6c7a7b1b723ade8031"
985
+ },
986
+ "build_number": 6879
987
+ },
988
+ "26.37.0": {
989
+ "signature_scheme": "v3",
990
+ "certificate_count": 1,
991
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
992
+ "certificate_sha256": [
993
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
994
+ ],
995
+ "dex_meta_sha256": "9d941aea70a93c825d979111d518c4cc5061db9ecec530407205c289f0b06f2b",
996
+ "so_meta_sha256_arm64_v8a": "09d48edd1d5de5ff00f8dab591b69a5f2bea41d74747a8bbede13a682d3a9aa7",
997
+ "so_meta_sha256": {
998
+ "arm64-v8a": "09d48edd1d5de5ff00f8dab591b69a5f2bea41d74747a8bbede13a682d3a9aa7",
999
+ "armeabi-v7a": "61930b6f9dcb7f1b26b38493917957bd028584ab4927edff8264a85cf7f16303",
1000
+ "x86": "1a676b7e2885cdb4270d97ad121cd07b463c28295602910df8d8ea406ab55403",
1001
+ "x86_64": "7eafe59f98f49642cc786bbf9532148d2bdb20f7fe3738f2fa7b77b096a395b3"
1002
+ },
1003
+ "build_number": 6886
1004
+ },
1005
+ "26.37.1": {
1006
+ "signature_scheme": "v3",
1007
+ "certificate_count": 1,
1008
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
1009
+ "certificate_sha256": [
1010
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
1011
+ ],
1012
+ "dex_meta_sha256": "dfa98ab26b96aed92da79424d30b71d265a51d8df4d2278c1a53e78a877f647b",
1013
+ "so_meta_sha256_arm64_v8a": "09d48edd1d5de5ff00f8dab591b69a5f2bea41d74747a8bbede13a682d3a9aa7",
1014
+ "so_meta_sha256": {
1015
+ "arm64-v8a": "09d48edd1d5de5ff00f8dab591b69a5f2bea41d74747a8bbede13a682d3a9aa7",
1016
+ "armeabi-v7a": "61930b6f9dcb7f1b26b38493917957bd028584ab4927edff8264a85cf7f16303",
1017
+ "x86": "1a676b7e2885cdb4270d97ad121cd07b463c28295602910df8d8ea406ab55403",
1018
+ "x86_64": "7eafe59f98f49642cc786bbf9532148d2bdb20f7fe3738f2fa7b77b096a395b3"
1019
+ },
1020
+ "build_number": 6900
1021
+ },
1022
+ "26.9.1": {
1023
+ "signature_scheme": "v3",
1024
+ "certificate_count": 1,
1025
+ "certificate_meta_sha256": "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93",
1026
+ "certificate_sha256": [
1027
+ "1684414033eb263e2c615f8b7df5ed8793850a07656304997fbf07e9e21e1e93"
1028
+ ],
1029
+ "dex_meta_sha256": "6ce0d31a723db1a03d0523236b37b7a2000428ce60bd0ff34e45d082dd7c1590",
1030
+ "so_meta_sha256_arm64_v8a": "10be2bbf7629dfed4a50b8c1114f8386c271df3a3fe1bee433b7846483ed183e",
1031
+ "so_meta_sha256": {
1032
+ "arm64-v8a": "10be2bbf7629dfed4a50b8c1114f8386c271df3a3fe1bee433b7846483ed183e",
1033
+ "armeabi-v7a": "6fe430d8d622243d8d7aba3394f40c4df59474b6291e9ed78c023fc2f7dc5281",
1034
+ "x86": "0dc31a603ecbd77cb0067440a99283444613053755a3f823ef1a9e249e25da4c",
1035
+ "x86_64": "7bf4bc1e18412814ccc62dedce0419f1444504d28c634cb394cb13d381e39820"
1036
+ },
1037
+ "build_number": 6643
681
1038
  }
682
1039
  }
@@ -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",
@@ -91,6 +97,7 @@ class AuthService:
91
97
  "sms code request accepted payload_keys=%s",
92
98
  payload_keys(response),
93
99
  )
100
+
94
101
  return require_payload_model(response, StartAuthResponse)
95
102
 
96
103
  async def send_code(self, token: str, verify_code: str) -> CheckCodeResponse:
@@ -163,8 +170,14 @@ class AuthService:
163
170
  + "in AuthService.mobile_login. Please report this issue to the developer."
164
171
  )
165
172
 
173
+ if self.app.fingerprint_generator is None:
174
+ raise ValueError(
175
+ "Unexpected internal state: self.app.fingerprint_generator is missing and "
176
+ + "DeviceType != WEB"
177
+ + "in AuthService.request_code. Please report this issue to the developer."
178
+ )
179
+
166
180
  ccf = self.app.fingerprint_generator.generate_fingerprint(
167
- version=self.app.config.device.user_agent.app_version,
168
181
  device_id=device_id,
169
182
  calls_seed=self.app.handshake_response.calls_seed,
170
183
  arch=self.app.config.device.user_agent.arch or "arm64-v8a",
pymax/api/auth/types.py CHANGED
@@ -1,9 +1,12 @@
1
1
  from typing import Final, TypeAlias
2
2
 
3
+ from typing_extensions import override
4
+
3
5
 
4
6
  class MissingType:
5
7
  __slots__ = ()
6
8
 
9
+ @override
7
10
  def __repr__(self) -> str:
8
11
  return "MISSING"
9
12
 
@@ -1,7 +1,15 @@
1
1
  from pymax.api.models import CamelModel
2
+ from pymax.types import ButtonType
2
3
 
3
4
 
4
5
  class RequestInitDataPayload(CamelModel):
5
6
  bot_id: int
6
7
  chat_id: int | None = None
7
8
  start_param: str | None = None
9
+
10
+
11
+ class SendCallbackPayload(CamelModel):
12
+ callback_id: str
13
+ type: ButtonType
14
+ payload: str | None = None
15
+ timestamp: int
pymax/api/bots/service.py CHANGED
@@ -1,13 +1,16 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import time
3
4
  from typing import TYPE_CHECKING
4
5
 
6
+ from pymax.api.binding import bind_api_model
5
7
  from pymax.api.response import require_payload_model
6
8
  from pymax.logging import get_logger
7
9
  from pymax.protocol import Opcode
10
+ from pymax.types import ButtonType, CallbackResponse
8
11
  from pymax.types.domain import InitData
9
12
 
10
- from .payloads import RequestInitDataPayload
13
+ from .payloads import RequestInitDataPayload, SendCallbackPayload
11
14
 
12
15
  if TYPE_CHECKING:
13
16
  from pymax.app import App
@@ -29,3 +32,12 @@ class BotsService:
29
32
  frame = RequestInitDataPayload(bot_id=bot_id, chat_id=chat_id, start_param=start_param)
30
33
  response = await self.app.invoke(Opcode.WEB_APP_INIT_DATA, frame.to_payload())
31
34
  return require_payload_model(response, InitData)
35
+
36
+ async def send_callback(
37
+ self, callback_id: str, type: ButtonType, payload: str | None = None
38
+ ) -> CallbackResponse:
39
+ frame = SendCallbackPayload(
40
+ callback_id=callback_id, type=type, payload=payload, timestamp=int(time.time() * 1000)
41
+ )
42
+ response = await self.app.invoke(Opcode.MSG_SEND_CALLBACK, frame.to_payload())
43
+ return bind_api_model(self.app, require_payload_model(response, CallbackResponse))
pymax/api/chats/enums.py CHANGED
@@ -11,6 +11,7 @@ class ChatMemberOperation(str, Enum):
11
11
 
12
12
 
13
13
  class ChatOption(str, Enum):
14
+ COMMENTS = "COMMENTS"
14
15
  ONLY_OWNER_CAN_CHANGE_ICON_TITLE = "ONLY_OWNER_CAN_CHANGE_ICON_TITLE"
15
16
  ALL_CAN_PIN_MESSAGE = "ALL_CAN_PIN_MESSAGE"
16
17
  ONLY_ADMIN_CAN_ADD_MEMBER = "ONLY_ADMIN_CAN_ADD_MEMBER"
@@ -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):
@@ -136,3 +137,22 @@ class AddAdminPayload(CamelModel):
136
137
  type: PermType = PermType.ADMIN
137
138
  operation: str = "add"
138
139
  permissions: int
140
+
141
+
142
+ class ChannelCommentsOptions(CamelModel):
143
+ comments: bool = Field(serialization_alias=ChatOption.COMMENTS.value)
144
+
145
+
146
+ class SetChannelCommentsPayload(CamelModel):
147
+ chat_id: int
148
+ options: ChannelCommentsOptions
149
+
150
+
151
+ class BlockCommentAuthorPayload(CamelModel):
152
+ chat_id: int
153
+ post_id: int
154
+ user_ids: list[int]
155
+ message_id: int
156
+ type: Literal["COMMENTS_BLACKLIST"] = "COMMENTS_BLACKLIST"
157
+ operation: ChatMemberOperation = ChatMemberOperation.ADD
158
+ clean_msg_period: int = 0
@@ -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
@@ -21,9 +22,11 @@ from pymax.types.domain import Chat, Member, Message
21
22
  from .enums import ChannelPermissions, ChatLinkPrefix, ChatMemberOperation, ChatPayloadKey
22
23
  from .payloads import (
23
24
  AddAdminPayload,
25
+ BlockCommentAuthorPayload,
24
26
  ChangeGroupProfilePayload,
25
27
  ChangeGroupSettingsOptions,
26
28
  ChangeGroupSettingsPayload,
29
+ ChannelCommentsOptions,
27
30
  CreateGroupAttach,
28
31
  CreateGroupMessage,
29
32
  CreateGroupPayload,
@@ -39,6 +42,7 @@ from .payloads import (
39
42
  LinkInfoPayload,
40
43
  RemoveUsersPayload,
41
44
  ReworkInviteLinkPayload,
45
+ SetChannelCommentsPayload,
42
46
  )
43
47
 
44
48
  if TYPE_CHECKING:
@@ -211,13 +215,19 @@ class ChatService:
211
215
  chat_id: int,
212
216
  name: str | None,
213
217
  description: str | None = None,
218
+ photo: Photo | None = None,
214
219
  ) -> None:
220
+
215
221
  frame = ChangeGroupProfilePayload(
216
222
  chat_id=chat_id,
217
223
  theme=name,
218
224
  description=description,
219
225
  )
220
226
 
227
+ if photo:
228
+ photo_payload = await self.app.api.uploads.upload_photo(photo)
229
+ frame.photo_token = photo_payload.photo_token
230
+
221
231
  response = await self.app.invoke(Opcode.CHAT_UPDATE, frame.to_payload())
222
232
  chat = parse_payload_item_model(response, ChatPayloadKey.CHAT, Chat)
223
233
  if chat:
@@ -415,3 +425,34 @@ class ChatService:
415
425
  )
416
426
 
417
427
  await self.app.invoke(Opcode.CHAT_MEMBERS_UPDATE, frame.to_payload())
428
+
429
+ async def set_channel_comments(self, chat_id: int, enabled: bool) -> None:
430
+ frame = SetChannelCommentsPayload(
431
+ chat_id=chat_id,
432
+ options=ChannelCommentsOptions(comments=enabled),
433
+ )
434
+ response = await self.app.invoke(Opcode.CHAT_UPDATE, frame.to_payload())
435
+ chat = parse_payload_item_model(response, ChatPayloadKey.CHAT, Chat)
436
+ if chat:
437
+ self._cache_chat(chat)
438
+
439
+ async def block_comment_author(
440
+ self,
441
+ chat_id: int,
442
+ post_id: int,
443
+ user_ids: list[int],
444
+ message_id: int,
445
+ clean_msg_period: int = 0,
446
+ ) -> bool:
447
+ frame = BlockCommentAuthorPayload(
448
+ chat_id=chat_id,
449
+ post_id=post_id,
450
+ user_ids=user_ids,
451
+ message_id=message_id,
452
+ clean_msg_period=clean_msg_period,
453
+ )
454
+ response = await self.app.invoke(Opcode.CHAT_MEMBERS_UPDATE, frame.to_payload())
455
+ chat = parse_payload_item_model(response, ChatPayloadKey.CHAT, Chat)
456
+ if chat:
457
+ self._cache_chat(chat)
458
+ return True