maxapi-python 1.2.4__tar.gz → 2.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {maxapi_python-1.2.4 → maxapi_python-2.0.0}/.github/workflows/publish.yml +13 -13
- maxapi_python-2.0.0/.gitignore +44 -0
- maxapi_python-2.0.0/PKG-INFO +217 -0
- maxapi_python-2.0.0/README.md +174 -0
- maxapi_python-2.0.0/docs/_static/.gitkeep +1 -0
- maxapi_python-2.0.0/docs/account.rst +127 -0
- maxapi_python-2.0.0/docs/api/auth.rst +35 -0
- maxapi_python-2.0.0/docs/api/client.rst +17 -0
- maxapi_python-2.0.0/docs/api/files.rst +14 -0
- maxapi_python-2.0.0/docs/api/router.rst +10 -0
- maxapi_python-2.0.0/docs/auth.rst +231 -0
- maxapi_python-2.0.0/docs/chats.rst +164 -0
- maxapi_python-2.0.0/docs/client.rst +244 -0
- maxapi_python-2.0.0/docs/conf.py +148 -0
- maxapi_python-2.0.0/docs/examples.rst +151 -0
- maxapi_python-2.0.0/docs/faq.rst +98 -0
- maxapi_python-2.0.0/docs/files.rst +117 -0
- maxapi_python-2.0.0/docs/formatting.rst +81 -0
- maxapi_python-2.0.0/docs/getting-started.rst +126 -0
- maxapi_python-2.0.0/docs/index.rst +48 -0
- maxapi_python-2.0.0/docs/messages.rst +148 -0
- maxapi_python-2.0.0/docs/router.rst +188 -0
- maxapi_python-2.0.0/docs/troubleshooting.rst +114 -0
- maxapi_python-2.0.0/docs/types/audio_attachment.rst +6 -0
- maxapi_python-2.0.0/docs/types/call_attachment.rst +6 -0
- maxapi_python-2.0.0/docs/types/chat.rst +6 -0
- maxapi_python-2.0.0/docs/types/contact_attachment.rst +6 -0
- maxapi_python-2.0.0/docs/types/control_attachment.rst +6 -0
- maxapi_python-2.0.0/docs/types/element.rst +6 -0
- maxapi_python-2.0.0/docs/types/enums.rst +44 -0
- maxapi_python-2.0.0/docs/types/file_attachment.rst +6 -0
- maxapi_python-2.0.0/docs/types/folder.rst +6 -0
- maxapi_python-2.0.0/docs/types/folder_list.rst +6 -0
- maxapi_python-2.0.0/docs/types/folder_update.rst +6 -0
- maxapi_python-2.0.0/docs/types/index.rst +110 -0
- maxapi_python-2.0.0/docs/types/inline_keyboard_attachment.rst +8 -0
- maxapi_python-2.0.0/docs/types/message.rst +6 -0
- maxapi_python-2.0.0/docs/types/message_delete_event.rst +6 -0
- maxapi_python-2.0.0/docs/types/name.rst +6 -0
- maxapi_python-2.0.0/docs/types/photo_attachment.rst +6 -0
- maxapi_python-2.0.0/docs/types/profile.rst +6 -0
- maxapi_python-2.0.0/docs/types/reaction_counter.rst +6 -0
- maxapi_python-2.0.0/docs/types/reaction_info.rst +6 -0
- maxapi_python-2.0.0/docs/types/read_state.rst +6 -0
- maxapi_python-2.0.0/docs/types/session.rst +6 -0
- maxapi_python-2.0.0/docs/types/share_attachment.rst +6 -0
- maxapi_python-2.0.0/docs/types/sticker_attachment.rst +6 -0
- maxapi_python-2.0.0/docs/types/sync_overrides.rst +6 -0
- maxapi_python-2.0.0/docs/types/sync_state.rst +6 -0
- maxapi_python-2.0.0/docs/types/user.rst +6 -0
- maxapi_python-2.0.0/docs/types/video_attachment.rst +6 -0
- maxapi_python-2.0.0/docs/users.rst +115 -0
- {maxapi_python-1.2.4 → maxapi_python-2.0.0}/pyproject.toml +67 -49
- maxapi_python-2.0.0/src/pymax/__init__.py +58 -0
- maxapi_python-2.0.0/src/pymax/api/__init__.py +17 -0
- maxapi_python-2.0.0/src/pymax/api/auth/__init__.py +1 -0
- maxapi_python-2.0.0/src/pymax/api/auth/enums.py +17 -0
- maxapi_python-2.0.0/src/pymax/api/auth/payloads.py +129 -0
- maxapi_python-2.0.0/src/pymax/api/auth/service.py +313 -0
- maxapi_python-2.0.0/src/pymax/api/auth/types.py +13 -0
- maxapi_python-2.0.0/src/pymax/api/chats/__init__.py +8 -0
- maxapi_python-2.0.0/src/pymax/api/chats/enums.py +27 -0
- maxapi_python-2.0.0/src/pymax/api/chats/payloads.py +103 -0
- maxapi_python-2.0.0/src/pymax/api/chats/service.py +277 -0
- maxapi_python-2.0.0/src/pymax/api/facade.py +32 -0
- maxapi_python-2.0.0/src/pymax/api/messages/__init__.py +1 -0
- maxapi_python-2.0.0/src/pymax/api/messages/enums.py +17 -0
- maxapi_python-2.0.0/src/pymax/api/messages/payloads.py +92 -0
- maxapi_python-2.0.0/src/pymax/api/messages/service.py +337 -0
- maxapi_python-2.0.0/src/pymax/api/models.py +13 -0
- maxapi_python-2.0.0/src/pymax/api/response.py +123 -0
- maxapi_python-2.0.0/src/pymax/api/self/__init__.py +2 -0
- maxapi_python-2.0.0/src/pymax/api/self/enums.py +11 -0
- maxapi_python-2.0.0/src/pymax/api/self/payloads.py +41 -0
- maxapi_python-2.0.0/src/pymax/api/self/service.py +142 -0
- maxapi_python-2.0.0/src/pymax/api/session/__init__.py +1 -0
- maxapi_python-2.0.0/src/pymax/api/session/enums.py +10 -0
- maxapi_python-2.0.0/src/pymax/api/session/payloads.py +76 -0
- maxapi_python-2.0.0/src/pymax/api/session/service.py +72 -0
- maxapi_python-2.0.0/src/pymax/api/uploads/__init__.py +1 -0
- maxapi_python-2.0.0/src/pymax/api/uploads/models.py +49 -0
- maxapi_python-2.0.0/src/pymax/api/uploads/payloads.py +25 -0
- maxapi_python-2.0.0/src/pymax/api/uploads/service.py +458 -0
- maxapi_python-2.0.0/src/pymax/api/users/__init__.py +2 -0
- maxapi_python-2.0.0/src/pymax/api/users/enums.py +12 -0
- maxapi_python-2.0.0/src/pymax/api/users/payloads.py +16 -0
- maxapi_python-2.0.0/src/pymax/api/users/service.py +124 -0
- maxapi_python-2.0.0/src/pymax/app.py +273 -0
- maxapi_python-2.0.0/src/pymax/auth/__init__.py +25 -0
- maxapi_python-2.0.0/src/pymax/auth/base.py +37 -0
- maxapi_python-2.0.0/src/pymax/auth/email.py +0 -0
- maxapi_python-2.0.0/src/pymax/auth/models.py +5 -0
- maxapi_python-2.0.0/src/pymax/auth/providers.py +127 -0
- maxapi_python-2.0.0/src/pymax/auth/qr.py +135 -0
- maxapi_python-2.0.0/src/pymax/auth/service.py +25 -0
- maxapi_python-2.0.0/src/pymax/auth/sms.py +122 -0
- maxapi_python-2.0.0/src/pymax/base.py +204 -0
- maxapi_python-2.0.0/src/pymax/client.py +106 -0
- maxapi_python-2.0.0/src/pymax/client_web.py +83 -0
- maxapi_python-2.0.0/src/pymax/config.py +215 -0
- maxapi_python-2.0.0/src/pymax/connection/__init__.py +1 -0
- maxapi_python-2.0.0/src/pymax/connection/connection.py +205 -0
- maxapi_python-2.0.0/src/pymax/connection/pending.py +46 -0
- maxapi_python-2.0.0/src/pymax/connection/readers/__init__.py +2 -0
- maxapi_python-2.0.0/src/pymax/connection/readers/base.py +6 -0
- maxapi_python-2.0.0/src/pymax/connection/readers/tcp.py +29 -0
- maxapi_python-2.0.0/src/pymax/connection/readers/ws.py +14 -0
- maxapi_python-2.0.0/src/pymax/dispatch/__init__.py +10 -0
- maxapi_python-2.0.0/src/pymax/dispatch/dispatcher.py +222 -0
- maxapi_python-2.0.0/src/pymax/dispatch/enums.py +12 -0
- maxapi_python-2.0.0/src/pymax/dispatch/mapping.py +73 -0
- maxapi_python-2.0.0/src/pymax/dispatch/resolvers.py +52 -0
- maxapi_python-2.0.0/src/pymax/dispatch/router.py +216 -0
- maxapi_python-2.0.0/src/pymax/exceptions.py +41 -0
- maxapi_python-2.0.0/src/pymax/files/__init__.py +9 -0
- maxapi_python-2.0.0/src/pymax/files/base.py +82 -0
- maxapi_python-2.0.0/src/pymax/files/file.py +76 -0
- maxapi_python-2.0.0/src/pymax/files/photo.py +108 -0
- maxapi_python-2.0.0/src/pymax/files/static.py +10 -0
- maxapi_python-2.0.0/src/pymax/files/video.py +74 -0
- maxapi_python-2.0.0/src/pymax/formatting/__init__.py +0 -0
- maxapi_python-2.0.0/src/pymax/formatting/markdown.py +217 -0
- maxapi_python-2.0.0/src/pymax/infra/__init__.py +1 -0
- maxapi_python-2.0.0/src/pymax/infra/auth.py +55 -0
- maxapi_python-2.0.0/src/pymax/infra/base.py +15 -0
- maxapi_python-2.0.0/src/pymax/infra/chat.py +240 -0
- maxapi_python-2.0.0/src/pymax/infra/message.py +252 -0
- maxapi_python-2.0.0/src/pymax/infra/protocol.py +9 -0
- maxapi_python-2.0.0/src/pymax/infra/self.py +139 -0
- maxapi_python-2.0.0/src/pymax/infra/user.py +107 -0
- maxapi_python-2.0.0/src/pymax/logging.py +129 -0
- maxapi_python-2.0.0/src/pymax/protocol/__init__.py +11 -0
- maxapi_python-2.0.0/src/pymax/protocol/base.py +13 -0
- maxapi_python-1.2.4/src/pymax/static/enum.py → maxapi_python-2.0.0/src/pymax/protocol/enums.py +36 -79
- maxapi_python-2.0.0/src/pymax/protocol/models.py +33 -0
- maxapi_python-2.0.0/src/pymax/protocol/tcp/__init__.py +1 -0
- maxapi_python-2.0.0/src/pymax/protocol/tcp/compression.py +97 -0
- maxapi_python-2.0.0/src/pymax/protocol/tcp/framing.py +68 -0
- maxapi_python-2.0.0/src/pymax/protocol/tcp/payload.py +127 -0
- maxapi_python-2.0.0/src/pymax/protocol/tcp/protocol.py +68 -0
- maxapi_python-2.0.0/src/pymax/protocol/ws/__init__.py +1 -0
- maxapi_python-2.0.0/src/pymax/protocol/ws/protocol.py +27 -0
- maxapi_python-2.0.0/src/pymax/py.typed +0 -0
- maxapi_python-2.0.0/src/pymax/routers.py +8 -0
- maxapi_python-2.0.0/src/pymax/session/__init__.py +3 -0
- maxapi_python-2.0.0/src/pymax/session/models.py +11 -0
- maxapi_python-2.0.0/src/pymax/session/protocol.py +14 -0
- maxapi_python-2.0.0/src/pymax/session/store.py +232 -0
- maxapi_python-2.0.0/src/pymax/telemetry/__init__.py +3 -0
- maxapi_python-2.0.0/src/pymax/telemetry/navigation.py +181 -0
- maxapi_python-2.0.0/src/pymax/telemetry/payloads.py +142 -0
- maxapi_python-2.0.0/src/pymax/telemetry/service.py +225 -0
- maxapi_python-2.0.0/src/pymax/transport/__init__.py +0 -0
- maxapi_python-2.0.0/src/pymax/transport/base.py +14 -0
- maxapi_python-2.0.0/src/pymax/transport/tcp.py +93 -0
- maxapi_python-2.0.0/src/pymax/transport/websocket.py +50 -0
- maxapi_python-2.0.0/src/pymax/types/__init__.py +2 -0
- maxapi_python-2.0.0/src/pymax/types/domain/__init__.py +11 -0
- maxapi_python-2.0.0/src/pymax/types/domain/attachments/__init__.py +11 -0
- maxapi_python-2.0.0/src/pymax/types/domain/attachments/audio.py +35 -0
- maxapi_python-2.0.0/src/pymax/types/domain/attachments/call.py +26 -0
- maxapi_python-2.0.0/src/pymax/types/domain/attachments/contact.py +32 -0
- maxapi_python-2.0.0/src/pymax/types/domain/attachments/control.py +20 -0
- maxapi_python-2.0.0/src/pymax/types/domain/attachments/enums.py +27 -0
- maxapi_python-2.0.0/src/pymax/types/domain/attachments/file.py +56 -0
- maxapi_python-2.0.0/src/pymax/types/domain/attachments/keyboards/__init__.py +1 -0
- maxapi_python-2.0.0/src/pymax/types/domain/attachments/keyboards/inline.py +19 -0
- maxapi_python-2.0.0/src/pymax/types/domain/attachments/photo.py +45 -0
- maxapi_python-2.0.0/src/pymax/types/domain/attachments/share.py +29 -0
- maxapi_python-2.0.0/src/pymax/types/domain/attachments/sticker.py +50 -0
- maxapi_python-2.0.0/src/pymax/types/domain/attachments/video.py +90 -0
- maxapi_python-2.0.0/src/pymax/types/domain/auth.py +161 -0
- maxapi_python-2.0.0/src/pymax/types/domain/base.py +17 -0
- maxapi_python-2.0.0/src/pymax/types/domain/chat.py +426 -0
- maxapi_python-2.0.0/src/pymax/types/domain/element.py +24 -0
- maxapi_python-2.0.0/src/pymax/types/domain/enums.py +24 -0
- maxapi_python-2.0.0/src/pymax/types/domain/error.py +20 -0
- maxapi_python-2.0.0/src/pymax/types/domain/folder.py +74 -0
- maxapi_python-2.0.0/src/pymax/types/domain/login.py +35 -0
- maxapi_python-2.0.0/src/pymax/types/domain/message.py +378 -0
- maxapi_python-2.0.0/src/pymax/types/domain/name.py +20 -0
- maxapi_python-2.0.0/src/pymax/types/domain/profile.py +15 -0
- maxapi_python-2.0.0/src/pymax/types/domain/session.py +52 -0
- maxapi_python-2.0.0/src/pymax/types/domain/sync.py +80 -0
- maxapi_python-2.0.0/src/pymax/types/domain/user.py +117 -0
- maxapi_python-2.0.0/src/pymax/types/events/__init__.py +3 -0
- maxapi_python-2.0.0/src/pymax/types/events/file.py +5 -0
- maxapi_python-2.0.0/src/pymax/types/events/message.py +37 -0
- maxapi_python-2.0.0/src/pymax/types/events/video.py +5 -0
- maxapi_python-2.0.0/uv.lock +2534 -0
- maxapi_python-1.2.4/.coderabbit.yaml +0 -6
- maxapi_python-1.2.4/.github/FUNDING.yml +0 -15
- maxapi_python-1.2.4/.github/workflows/tests.yml +0 -153
- maxapi_python-1.2.4/.gitignore +0 -123
- maxapi_python-1.2.4/.pre-commit-config.yaml +0 -41
- maxapi_python-1.2.4/PKG-INFO +0 -205
- maxapi_python-1.2.4/README.md +0 -174
- maxapi_python-1.2.4/assets/icon.svg +0 -13
- maxapi_python-1.2.4/assets/logo.svg +0 -13
- maxapi_python-1.2.4/examples/example.py +0 -74
- maxapi_python-1.2.4/examples/telegram_bridge.py +0 -194
- maxapi_python-1.2.4/pytest.ini +0 -26
- maxapi_python-1.2.4/redocs/Makefile +0 -20
- maxapi_python-1.2.4/redocs/build.sh +0 -1
- maxapi_python-1.2.4/redocs/make.bat +0 -35
- maxapi_python-1.2.4/redocs/source/_static/logo.svg +0 -13
- maxapi_python-1.2.4/redocs/source/clients.rst +0 -252
- maxapi_python-1.2.4/redocs/source/conf.py +0 -49
- maxapi_python-1.2.4/redocs/source/decorators.rst +0 -6
- maxapi_python-1.2.4/redocs/source/examples.rst +0 -369
- maxapi_python-1.2.4/redocs/source/guides.rst +0 -478
- maxapi_python-1.2.4/redocs/source/index.rst +0 -118
- maxapi_python-1.2.4/redocs/source/installation.rst +0 -151
- maxapi_python-1.2.4/redocs/source/quickstart.rst +0 -261
- maxapi_python-1.2.4/redocs/source/release_notes.rst +0 -143
- maxapi_python-1.2.4/redocs/source/types.rst +0 -8
- maxapi_python-1.2.4/ruff.toml +0 -76
- maxapi_python-1.2.4/src/pymax/__init__.py +0 -113
- maxapi_python-1.2.4/src/pymax/core.py +0 -390
- maxapi_python-1.2.4/src/pymax/crud.py +0 -96
- maxapi_python-1.2.4/src/pymax/exceptions.py +0 -108
- maxapi_python-1.2.4/src/pymax/files.py +0 -138
- maxapi_python-1.2.4/src/pymax/filters.py +0 -164
- maxapi_python-1.2.4/src/pymax/formatter.py +0 -31
- maxapi_python-1.2.4/src/pymax/formatting.py +0 -74
- maxapi_python-1.2.4/src/pymax/interfaces.py +0 -552
- maxapi_python-1.2.4/src/pymax/mixins/__init__.py +0 -40
- maxapi_python-1.2.4/src/pymax/mixins/auth.py +0 -368
- maxapi_python-1.2.4/src/pymax/mixins/channel.py +0 -130
- maxapi_python-1.2.4/src/pymax/mixins/group.py +0 -458
- maxapi_python-1.2.4/src/pymax/mixins/handler.py +0 -285
- maxapi_python-1.2.4/src/pymax/mixins/message.py +0 -879
- maxapi_python-1.2.4/src/pymax/mixins/scheduler.py +0 -28
- maxapi_python-1.2.4/src/pymax/mixins/self.py +0 -259
- maxapi_python-1.2.4/src/pymax/mixins/socket.py +0 -297
- maxapi_python-1.2.4/src/pymax/mixins/telemetry.py +0 -112
- maxapi_python-1.2.4/src/pymax/mixins/user.py +0 -219
- maxapi_python-1.2.4/src/pymax/mixins/websocket.py +0 -142
- maxapi_python-1.2.4/src/pymax/models.py +0 -8
- maxapi_python-1.2.4/src/pymax/navigation.py +0 -187
- maxapi_python-1.2.4/src/pymax/payloads.py +0 -367
- maxapi_python-1.2.4/src/pymax/protocols.py +0 -123
- maxapi_python-1.2.4/src/pymax/static/constant.py +0 -89
- maxapi_python-1.2.4/src/pymax/types.py +0 -1220
- maxapi_python-1.2.4/src/pymax/utils.py +0 -90
- {maxapi_python-1.2.4 → maxapi_python-2.0.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {maxapi_python-1.2.4 → maxapi_python-2.0.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {maxapi_python-1.2.4 → maxapi_python-2.0.0}/.github/ISSUE_TEMPLATE/refactor.md +0 -0
- {maxapi_python-1.2.4 → maxapi_python-2.0.0}/.github/pull_request_template.md +0 -0
- {maxapi_python-1.2.4 → maxapi_python-2.0.0}/LICENSE +0 -0
|
@@ -21,8 +21,10 @@ jobs:
|
|
|
21
21
|
python-version: "3.10"
|
|
22
22
|
|
|
23
23
|
- name: Build release distributions
|
|
24
|
-
run:
|
|
25
|
-
|
|
24
|
+
run: uv build
|
|
25
|
+
|
|
26
|
+
- name: Check distributions
|
|
27
|
+
run: uvx twine check dist/*
|
|
26
28
|
|
|
27
29
|
- name: Upload distributions
|
|
28
30
|
uses: actions/upload-artifact@v4
|
|
@@ -32,8 +34,14 @@ jobs:
|
|
|
32
34
|
|
|
33
35
|
pypi-publish:
|
|
34
36
|
runs-on: ubuntu-latest
|
|
35
|
-
needs:
|
|
36
|
-
|
|
37
|
+
needs: release-build
|
|
38
|
+
environment:
|
|
39
|
+
name: pypi
|
|
40
|
+
url: https://pypi.org/project/maxapi-python/
|
|
41
|
+
|
|
42
|
+
permissions:
|
|
43
|
+
contents: read
|
|
44
|
+
id-token: write
|
|
37
45
|
|
|
38
46
|
steps:
|
|
39
47
|
- name: Retrieve release distributions
|
|
@@ -42,13 +50,5 @@ jobs:
|
|
|
42
50
|
name: release-dists
|
|
43
51
|
path: dist/
|
|
44
52
|
|
|
45
|
-
- name: Set up uv
|
|
46
|
-
uses: astral-sh/setup-uv@v4
|
|
47
|
-
with:
|
|
48
|
-
python-version: "3.10"
|
|
49
|
-
|
|
50
53
|
- name: Publish release distributions to PyPI
|
|
51
|
-
|
|
52
|
-
TOKEN: ${{ secrets.PYPI_API_TOKEN }}
|
|
53
|
-
run: |
|
|
54
|
-
uv publish -t $TOKEN
|
|
54
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Python-generated files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# Build artifacts
|
|
7
|
+
build/
|
|
8
|
+
dist/
|
|
9
|
+
wheels/
|
|
10
|
+
*.egg-info/
|
|
11
|
+
|
|
12
|
+
# Virtual environments
|
|
13
|
+
.venv/
|
|
14
|
+
venv/
|
|
15
|
+
env/
|
|
16
|
+
|
|
17
|
+
# Tool caches
|
|
18
|
+
.mypy_cache/
|
|
19
|
+
.pyright/
|
|
20
|
+
.pytest_cache/
|
|
21
|
+
.ruff_cache/
|
|
22
|
+
.coverage
|
|
23
|
+
coverage.xml
|
|
24
|
+
htmlcov/
|
|
25
|
+
|
|
26
|
+
# Sphinx
|
|
27
|
+
docs/_build/
|
|
28
|
+
|
|
29
|
+
# Local/runtime artifacts
|
|
30
|
+
.codex/
|
|
31
|
+
.agents/
|
|
32
|
+
cache/
|
|
33
|
+
cache*/
|
|
34
|
+
*.db
|
|
35
|
+
*.sqlite
|
|
36
|
+
*.sqlite3
|
|
37
|
+
|
|
38
|
+
# Local experiments
|
|
39
|
+
tests2/
|
|
40
|
+
|
|
41
|
+
# OS/editor
|
|
42
|
+
.DS_Store
|
|
43
|
+
.idea/
|
|
44
|
+
.vscode/
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: maxapi-python
|
|
3
|
+
Version: 2.0.0
|
|
4
|
+
Summary: Python wrapper для API мессенджера Max
|
|
5
|
+
Project-URL: Homepage, https://github.com/MaxApiTeam/PyMax
|
|
6
|
+
Project-URL: Repository, https://github.com/MaxApiTeam/PyMax
|
|
7
|
+
Project-URL: Issues, https://github.com/MaxApiTeam/PyMax/issues
|
|
8
|
+
Project-URL: Documentation, https://maxapiteam.github.io/PyMax/
|
|
9
|
+
Author-email: ink <inkdev@proton.me>
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: api,asyncio,max,messenger,tcp,websocket,wrapper
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Framework :: AsyncIO
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Typing :: Typed
|
|
24
|
+
Requires-Python: >=3.10
|
|
25
|
+
Requires-Dist: aiofiles>=25.1.0
|
|
26
|
+
Requires-Dist: aiohttp>=3.13.5
|
|
27
|
+
Requires-Dist: aiosqlite>=0.22.1
|
|
28
|
+
Requires-Dist: msgpack>=1.1.2
|
|
29
|
+
Requires-Dist: pydantic>=2.10.0
|
|
30
|
+
Requires-Dist: python-socks[asyncio]>=2.8.1
|
|
31
|
+
Requires-Dist: qrcode>=8.2
|
|
32
|
+
Requires-Dist: websockets>=16.0
|
|
33
|
+
Provides-Extra: docs
|
|
34
|
+
Requires-Dist: furo>=2025.12.19; extra == 'docs'
|
|
35
|
+
Requires-Dist: sphinx-copybutton>=0.5.2; extra == 'docs'
|
|
36
|
+
Requires-Dist: sphinx>=8.1.3; extra == 'docs'
|
|
37
|
+
Provides-Extra: test
|
|
38
|
+
Requires-Dist: pytest-asyncio>=0.24.0; extra == 'test'
|
|
39
|
+
Requires-Dist: pytest-cov>=5.0.0; extra == 'test'
|
|
40
|
+
Requires-Dist: pytest-timeout>=2.1.0; extra == 'test'
|
|
41
|
+
Requires-Dist: pytest>=8.0.0; extra == 'test'
|
|
42
|
+
Description-Content-Type: text/markdown
|
|
43
|
+
|
|
44
|
+
# PyMax
|
|
45
|
+
|
|
46
|
+
Python-библиотека для Max API.
|
|
47
|
+
|
|
48
|
+
[](https://www.python.org/)
|
|
49
|
+
[](LICENSE)
|
|
50
|
+
[](https://pypi.org/project/maxapi-python/)
|
|
51
|
+
|
|
52
|
+
> [!WARNING]
|
|
53
|
+
> PyMax использует неофициальный внутренний API Max. API может измениться без
|
|
54
|
+
> предупреждения, а использование библиотеки может нарушать условия сервиса.
|
|
55
|
+
> Вы используете PyMax на свой риск; авторы и контрибьюторы не несут
|
|
56
|
+
> ответственности за блокировки аккаунтов, потерю данных или другие последствия.
|
|
57
|
+
|
|
58
|
+
## Что это
|
|
59
|
+
|
|
60
|
+
**PyMax** - асинхронная Python-библиотека для внутреннего API Max. Она умеет
|
|
61
|
+
авторизоваться в аккаунте, слушать события, отправлять сообщения, работать с
|
|
62
|
+
чатами, пользователями, файлами, сессиями и доменными типами Max через TCP или
|
|
63
|
+
WebSocket.
|
|
64
|
+
|
|
65
|
+
## Возможности
|
|
66
|
+
|
|
67
|
+
- Авторизация по телефону и SMS-коду через `Client`.
|
|
68
|
+
- QR-авторизация web-клиента через `WebClient`.
|
|
69
|
+
- Роутеры, фильтры, `on_start`, raw-события и typed events.
|
|
70
|
+
- Сообщения: отправка, ответы, reply, реакции, pin, read, delete и история.
|
|
71
|
+
- Чаты, группы, участники, invite-ссылки и настройки групп.
|
|
72
|
+
- Пользователи, контакты, профиль, папки, активные сессии и 2FA.
|
|
73
|
+
- Вложения: `Photo`, `File`, `Video`.
|
|
74
|
+
- SQLite-сессии, sync-state, reconnect и debug-логи.
|
|
75
|
+
- Pydantic-модели и удобные domain-объекты.
|
|
76
|
+
|
|
77
|
+
## Установка
|
|
78
|
+
|
|
79
|
+
Требуется Python 3.10 или новее.
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
pip install -U maxapi-python
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Через `uv`:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
uv add -U maxapi-python
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Напрямую из репозитория:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
pip install git+https://github.com/MaxApiTeam/PyMax.git
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Быстрый старт
|
|
98
|
+
|
|
99
|
+
`Client` использует TCP-соединение. При первом запуске PyMax попросит SMS-код
|
|
100
|
+
и сохранит сессию в SQLite-файл; дальше этот файл используется автоматически.
|
|
101
|
+
|
|
102
|
+
```python
|
|
103
|
+
import asyncio
|
|
104
|
+
|
|
105
|
+
from pymax import Client, Message
|
|
106
|
+
|
|
107
|
+
client = Client(
|
|
108
|
+
phone="+79990000000",
|
|
109
|
+
work_dir="cache",
|
|
110
|
+
session_name="main.db",
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
@client.on_start()
|
|
115
|
+
async def on_start(client: Client) -> None:
|
|
116
|
+
print("Клиент запущен")
|
|
117
|
+
print("Ваш ID:", client.me.contact.id if client.me else "unknown")
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
@client.on_message()
|
|
121
|
+
async def on_message(message: Message, client: Client) -> None:
|
|
122
|
+
print(message.chat_id, message.sender, message.text)
|
|
123
|
+
|
|
124
|
+
if message.chat_id is not None and message.text:
|
|
125
|
+
await message.answer("Привет от PyMax")
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
async def main() -> None:
|
|
129
|
+
await client.start()
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
if __name__ == "__main__":
|
|
133
|
+
asyncio.run(main())
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## WebClient
|
|
137
|
+
|
|
138
|
+
`WebClient` использует WebSocket и QR-авторизацию:
|
|
139
|
+
|
|
140
|
+
```python
|
|
141
|
+
import asyncio
|
|
142
|
+
|
|
143
|
+
from pymax import WebClient
|
|
144
|
+
|
|
145
|
+
client = WebClient(work_dir="cache", session_name="web.db")
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
@client.on_start()
|
|
149
|
+
async def on_start(client: WebClient) -> None:
|
|
150
|
+
print("Web-клиент запущен")
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
asyncio.run(client.start())
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Роутеры
|
|
157
|
+
|
|
158
|
+
Обработчики можно регистрировать на клиенте или вынести в отдельный роутер.
|
|
159
|
+
Handler всегда принимает событие и клиента: `(event, client)`.
|
|
160
|
+
|
|
161
|
+
```python
|
|
162
|
+
from pymax import Client, ClientRouter, Message
|
|
163
|
+
|
|
164
|
+
router = ClientRouter()
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def is_start(message: Message) -> bool:
|
|
168
|
+
return message.text == "/start"
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
@router.on_message(is_start)
|
|
172
|
+
async def start(message: Message, client: Client) -> None:
|
|
173
|
+
await message.answer("Готово")
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
client = Client(phone="+79990000000", work_dir="cache")
|
|
177
|
+
client.include_router(router)
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Куда дальше
|
|
181
|
+
|
|
182
|
+
- [Getting Started](docs/getting-started.rst) - первый запуск и сессии.
|
|
183
|
+
- [Client](docs/client.rst) - жизненный цикл клиента, reconnect и sync-state.
|
|
184
|
+
- [Router](docs/router.rst) - роутеры, фильтры и raw events.
|
|
185
|
+
- [Messages](docs/messages.rst) - сообщения, реакции, история и вложения.
|
|
186
|
+
- [Files](docs/files.rst) - отправка и скачивание файлов.
|
|
187
|
+
- [FAQ](docs/faq.rst) и [Troubleshooting](docs/troubleshooting.rst) - частые
|
|
188
|
+
проблемы.
|
|
189
|
+
|
|
190
|
+
Опубликованная документация:
|
|
191
|
+
|
|
192
|
+
- [docs.pymax.org](https://docs.pymax.org/)
|
|
193
|
+
- [DeepWiki](https://deepwiki.com/MaxApiTeam/PyMax)
|
|
194
|
+
|
|
195
|
+
## Разработка
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
uv sync --all-groups
|
|
199
|
+
uv run python -c "import pymax; print(pymax.__all__)"
|
|
200
|
+
uv run sphinx-build -b html docs docs/_build/html
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Ссылки
|
|
204
|
+
|
|
205
|
+
- [GitHub](https://github.com/MaxApiTeam/PyMax)
|
|
206
|
+
- [PyPI](https://pypi.org/project/maxapi-python/)
|
|
207
|
+
- [Telegram](https://t.me/pymax_news)
|
|
208
|
+
|
|
209
|
+
## Лицензия
|
|
210
|
+
|
|
211
|
+
Проект распространяется под лицензией MIT. Подробности см. в [LICENSE](LICENSE).
|
|
212
|
+
|
|
213
|
+
## Авторы
|
|
214
|
+
|
|
215
|
+
- [ink](https://github.com/ink-developer) - основной разработчик, исследование
|
|
216
|
+
API и документация.
|
|
217
|
+
- [noxzion](https://github.com/noxzion) - оригинальный автор проекта.
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# PyMax
|
|
2
|
+
|
|
3
|
+
Python-библиотека для Max API.
|
|
4
|
+
|
|
5
|
+
[](https://www.python.org/)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
[](https://pypi.org/project/maxapi-python/)
|
|
8
|
+
|
|
9
|
+
> [!WARNING]
|
|
10
|
+
> PyMax использует неофициальный внутренний API Max. API может измениться без
|
|
11
|
+
> предупреждения, а использование библиотеки может нарушать условия сервиса.
|
|
12
|
+
> Вы используете PyMax на свой риск; авторы и контрибьюторы не несут
|
|
13
|
+
> ответственности за блокировки аккаунтов, потерю данных или другие последствия.
|
|
14
|
+
|
|
15
|
+
## Что это
|
|
16
|
+
|
|
17
|
+
**PyMax** - асинхронная Python-библиотека для внутреннего API Max. Она умеет
|
|
18
|
+
авторизоваться в аккаунте, слушать события, отправлять сообщения, работать с
|
|
19
|
+
чатами, пользователями, файлами, сессиями и доменными типами Max через TCP или
|
|
20
|
+
WebSocket.
|
|
21
|
+
|
|
22
|
+
## Возможности
|
|
23
|
+
|
|
24
|
+
- Авторизация по телефону и SMS-коду через `Client`.
|
|
25
|
+
- QR-авторизация web-клиента через `WebClient`.
|
|
26
|
+
- Роутеры, фильтры, `on_start`, raw-события и typed events.
|
|
27
|
+
- Сообщения: отправка, ответы, reply, реакции, pin, read, delete и история.
|
|
28
|
+
- Чаты, группы, участники, invite-ссылки и настройки групп.
|
|
29
|
+
- Пользователи, контакты, профиль, папки, активные сессии и 2FA.
|
|
30
|
+
- Вложения: `Photo`, `File`, `Video`.
|
|
31
|
+
- SQLite-сессии, sync-state, reconnect и debug-логи.
|
|
32
|
+
- Pydantic-модели и удобные domain-объекты.
|
|
33
|
+
|
|
34
|
+
## Установка
|
|
35
|
+
|
|
36
|
+
Требуется Python 3.10 или новее.
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pip install -U maxapi-python
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Через `uv`:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
uv add -U maxapi-python
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Напрямую из репозитория:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
pip install git+https://github.com/MaxApiTeam/PyMax.git
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Быстрый старт
|
|
55
|
+
|
|
56
|
+
`Client` использует TCP-соединение. При первом запуске PyMax попросит SMS-код
|
|
57
|
+
и сохранит сессию в SQLite-файл; дальше этот файл используется автоматически.
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
import asyncio
|
|
61
|
+
|
|
62
|
+
from pymax import Client, Message
|
|
63
|
+
|
|
64
|
+
client = Client(
|
|
65
|
+
phone="+79990000000",
|
|
66
|
+
work_dir="cache",
|
|
67
|
+
session_name="main.db",
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
@client.on_start()
|
|
72
|
+
async def on_start(client: Client) -> None:
|
|
73
|
+
print("Клиент запущен")
|
|
74
|
+
print("Ваш ID:", client.me.contact.id if client.me else "unknown")
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
@client.on_message()
|
|
78
|
+
async def on_message(message: Message, client: Client) -> None:
|
|
79
|
+
print(message.chat_id, message.sender, message.text)
|
|
80
|
+
|
|
81
|
+
if message.chat_id is not None and message.text:
|
|
82
|
+
await message.answer("Привет от PyMax")
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
async def main() -> None:
|
|
86
|
+
await client.start()
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
if __name__ == "__main__":
|
|
90
|
+
asyncio.run(main())
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## WebClient
|
|
94
|
+
|
|
95
|
+
`WebClient` использует WebSocket и QR-авторизацию:
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
import asyncio
|
|
99
|
+
|
|
100
|
+
from pymax import WebClient
|
|
101
|
+
|
|
102
|
+
client = WebClient(work_dir="cache", session_name="web.db")
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
@client.on_start()
|
|
106
|
+
async def on_start(client: WebClient) -> None:
|
|
107
|
+
print("Web-клиент запущен")
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
asyncio.run(client.start())
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Роутеры
|
|
114
|
+
|
|
115
|
+
Обработчики можно регистрировать на клиенте или вынести в отдельный роутер.
|
|
116
|
+
Handler всегда принимает событие и клиента: `(event, client)`.
|
|
117
|
+
|
|
118
|
+
```python
|
|
119
|
+
from pymax import Client, ClientRouter, Message
|
|
120
|
+
|
|
121
|
+
router = ClientRouter()
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def is_start(message: Message) -> bool:
|
|
125
|
+
return message.text == "/start"
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
@router.on_message(is_start)
|
|
129
|
+
async def start(message: Message, client: Client) -> None:
|
|
130
|
+
await message.answer("Готово")
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
client = Client(phone="+79990000000", work_dir="cache")
|
|
134
|
+
client.include_router(router)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Куда дальше
|
|
138
|
+
|
|
139
|
+
- [Getting Started](docs/getting-started.rst) - первый запуск и сессии.
|
|
140
|
+
- [Client](docs/client.rst) - жизненный цикл клиента, reconnect и sync-state.
|
|
141
|
+
- [Router](docs/router.rst) - роутеры, фильтры и raw events.
|
|
142
|
+
- [Messages](docs/messages.rst) - сообщения, реакции, история и вложения.
|
|
143
|
+
- [Files](docs/files.rst) - отправка и скачивание файлов.
|
|
144
|
+
- [FAQ](docs/faq.rst) и [Troubleshooting](docs/troubleshooting.rst) - частые
|
|
145
|
+
проблемы.
|
|
146
|
+
|
|
147
|
+
Опубликованная документация:
|
|
148
|
+
|
|
149
|
+
- [docs.pymax.org](https://docs.pymax.org/)
|
|
150
|
+
- [DeepWiki](https://deepwiki.com/MaxApiTeam/PyMax)
|
|
151
|
+
|
|
152
|
+
## Разработка
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
uv sync --all-groups
|
|
156
|
+
uv run python -c "import pymax; print(pymax.__all__)"
|
|
157
|
+
uv run sphinx-build -b html docs docs/_build/html
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Ссылки
|
|
161
|
+
|
|
162
|
+
- [GitHub](https://github.com/MaxApiTeam/PyMax)
|
|
163
|
+
- [PyPI](https://pypi.org/project/maxapi-python/)
|
|
164
|
+
- [Telegram](https://t.me/pymax_news)
|
|
165
|
+
|
|
166
|
+
## Лицензия
|
|
167
|
+
|
|
168
|
+
Проект распространяется под лицензией MIT. Подробности см. в [LICENSE](LICENSE).
|
|
169
|
+
|
|
170
|
+
## Авторы
|
|
171
|
+
|
|
172
|
+
- [ink](https://github.com/ink-developer) - основной разработчик, исследование
|
|
173
|
+
API и документация.
|
|
174
|
+
- [noxzion](https://github.com/noxzion) - оригинальный автор проекта.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
Account
|
|
2
|
+
=======
|
|
3
|
+
|
|
4
|
+
Что это
|
|
5
|
+
-------
|
|
6
|
+
|
|
7
|
+
Методы аккаунта работают с профилем текущего пользователя, папками чатов,
|
|
8
|
+
активными сессиями и выходом из аккаунта. Они доступны напрямую на клиенте.
|
|
9
|
+
|
|
10
|
+
Профиль
|
|
11
|
+
-------
|
|
12
|
+
|
|
13
|
+
После успешного login профиль текущего аккаунта лежит в ``client.me``:
|
|
14
|
+
|
|
15
|
+
.. code-block:: python
|
|
16
|
+
|
|
17
|
+
@client.on_start()
|
|
18
|
+
async def on_start(client: Client) -> None:
|
|
19
|
+
if client.me is not None:
|
|
20
|
+
print(client.me.contact.id)
|
|
21
|
+
|
|
22
|
+
Обновить имя, фамилию и описание:
|
|
23
|
+
|
|
24
|
+
.. code-block:: python
|
|
25
|
+
|
|
26
|
+
await client.change_profile(
|
|
27
|
+
first_name="Alex",
|
|
28
|
+
last_name="PyMax",
|
|
29
|
+
description="Testing Max API",
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
Фотография профиля
|
|
33
|
+
------------------
|
|
34
|
+
|
|
35
|
+
Сейчас ``change_profile(photo=...)`` не загружает файл напрямую. Для фото
|
|
36
|
+
нужен ``photo_token`` от API Max:
|
|
37
|
+
|
|
38
|
+
.. code-block:: python
|
|
39
|
+
|
|
40
|
+
upload_url = await client.request_profile_photo_upload_url()
|
|
41
|
+
print(upload_url)
|
|
42
|
+
|
|
43
|
+
await client.change_profile(
|
|
44
|
+
first_name="Alex",
|
|
45
|
+
photo_token="PHOTO_TOKEN",
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
Если передать ``photo`` вместо ``photo_token``, PyMax выбросит
|
|
49
|
+
``NotImplementedError``.
|
|
50
|
+
|
|
51
|
+
Папки чатов
|
|
52
|
+
-----------
|
|
53
|
+
|
|
54
|
+
Создать папку:
|
|
55
|
+
|
|
56
|
+
.. code-block:: python
|
|
57
|
+
|
|
58
|
+
update = await client.create_folder(
|
|
59
|
+
title="Работа",
|
|
60
|
+
chat_include=[123456, 234567],
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
Получить список папок:
|
|
64
|
+
|
|
65
|
+
.. code-block:: python
|
|
66
|
+
|
|
67
|
+
folders = await client.get_folders()
|
|
68
|
+
for folder in folders:
|
|
69
|
+
print(folder.id, folder.title)
|
|
70
|
+
|
|
71
|
+
Обновить и удалить папку:
|
|
72
|
+
|
|
73
|
+
.. code-block:: python
|
|
74
|
+
|
|
75
|
+
await client.update_folder(
|
|
76
|
+
folder_id="folder-id",
|
|
77
|
+
title="Новый заголовок",
|
|
78
|
+
chat_include=[123456],
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
await client.delete_folder("folder-id")
|
|
82
|
+
|
|
83
|
+
``FolderList`` можно итерировать напрямую: он перебирает ``folders`` внутри
|
|
84
|
+
ответа.
|
|
85
|
+
|
|
86
|
+
Сессии и выход
|
|
87
|
+
--------------
|
|
88
|
+
|
|
89
|
+
Получить активные сессии:
|
|
90
|
+
|
|
91
|
+
.. code-block:: python
|
|
92
|
+
|
|
93
|
+
sessions = await client.get_sessions()
|
|
94
|
+
for session in sessions:
|
|
95
|
+
print(session.id, session.device_name, session.current)
|
|
96
|
+
|
|
97
|
+
Закрыть остальные сессии аккаунта:
|
|
98
|
+
|
|
99
|
+
.. code-block:: python
|
|
100
|
+
|
|
101
|
+
await client.close_all_sessions()
|
|
102
|
+
|
|
103
|
+
Выйти из текущей сессии Max:
|
|
104
|
+
|
|
105
|
+
.. code-block:: python
|
|
106
|
+
|
|
107
|
+
await client.logout()
|
|
108
|
+
await client.close()
|
|
109
|
+
|
|
110
|
+
``logout()`` завершает серверную сессию. ``close()`` закрывает локальное
|
|
111
|
+
соединение, фоновые задачи и файл сессии.
|
|
112
|
+
|
|
113
|
+
Частые ошибки
|
|
114
|
+
-------------
|
|
115
|
+
|
|
116
|
+
``client.me`` равен ``None``
|
|
117
|
+
Login еще не завершился или клиент не запущен. Читайте профиль внутри
|
|
118
|
+
``on_start`` или после успешного ``await client.start()`` в собственном
|
|
119
|
+
lifecycle.
|
|
120
|
+
|
|
121
|
+
``NotImplementedError`` при ``change_profile(photo=...)``
|
|
122
|
+
Прямая загрузка фото через параметр ``photo`` пока не реализована.
|
|
123
|
+
Используйте ``photo_token``.
|
|
124
|
+
|
|
125
|
+
Папка создалась, но список старый
|
|
126
|
+
Используйте ``get_folders()`` после изменения и сохраняйте новый
|
|
127
|
+
``folder_sync``, если строите собственную синхронизацию папок.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Auth API
|
|
2
|
+
========
|
|
3
|
+
|
|
4
|
+
.. autoclass:: pymax.AuthFlow
|
|
5
|
+
:members:
|
|
6
|
+
|
|
7
|
+
.. autoclass:: pymax.SmsAuthFlow
|
|
8
|
+
:members:
|
|
9
|
+
|
|
10
|
+
.. autoclass:: pymax.QrAuthFlow
|
|
11
|
+
:members:
|
|
12
|
+
|
|
13
|
+
.. autoclass:: pymax.SmsCodeProvider
|
|
14
|
+
:members:
|
|
15
|
+
|
|
16
|
+
.. autoclass:: pymax.PasswordProvider
|
|
17
|
+
:members:
|
|
18
|
+
|
|
19
|
+
.. autoclass:: pymax.auth.EmailCodeProvider
|
|
20
|
+
:members:
|
|
21
|
+
|
|
22
|
+
.. autoclass:: pymax.QrHandler
|
|
23
|
+
:members:
|
|
24
|
+
|
|
25
|
+
.. autoclass:: pymax.ConsoleSmsCodeProvider
|
|
26
|
+
:members:
|
|
27
|
+
|
|
28
|
+
.. autoclass:: pymax.ConsolePasswordProvider
|
|
29
|
+
:members:
|
|
30
|
+
|
|
31
|
+
.. autoclass:: pymax.auth.providers.ConsoleEmailCodeProvider
|
|
32
|
+
:members:
|
|
33
|
+
|
|
34
|
+
.. autoclass:: pymax.ConsoleQrHandler
|
|
35
|
+
:members:
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Client API
|
|
2
|
+
==========
|
|
3
|
+
|
|
4
|
+
.. currentmodule:: pymax
|
|
5
|
+
|
|
6
|
+
.. autoclass:: Client
|
|
7
|
+
:members:
|
|
8
|
+
:inherited-members:
|
|
9
|
+
|
|
10
|
+
.. autoclass:: WebClient
|
|
11
|
+
:members:
|
|
12
|
+
:inherited-members:
|
|
13
|
+
|
|
14
|
+
.. autoclass:: ExtraConfig
|
|
15
|
+
:members:
|
|
16
|
+
|
|
17
|
+
.. autofunction:: configure_logging
|