Python wrapper для API мессенджера Max
Project description
PyMax
Python-библиотека для Max API.
[!WARNING] PyMax использует неофициальный внутренний API Max. API может измениться без предупреждения, а использование библиотеки может нарушать условия сервиса. Вы используете PyMax на свой риск; авторы и контрибьюторы не несут ответственности за блокировки аккаунтов, потерю данных или другие последствия.
Что это
PyMax - асинхронная Python-библиотека для внутреннего API Max. Она умеет авторизоваться в аккаунте, слушать события, отправлять сообщения, работать с чатами, пользователями, файлами, сессиями и доменными типами Max через TCP или WebSocket.
Возможности
- Авторизация по телефону и SMS-коду через
Client. - QR-авторизация web-клиента через
WebClient. - Роутеры, фильтры,
on_start, raw-события и typed events. - Сообщения: отправка, ответы, reply, реакции, pin, read, delete и история.
- Чаты, группы, участники, invite-ссылки и настройки групп.
- Пользователи, контакты, профиль, папки, активные сессии и 2FA.
- Вложения:
Photo,File,Video. - SQLite-сессии, sync-state, reconnect и debug-логи.
- Pydantic-модели и удобные domain-объекты.
Установка
Требуется Python 3.10 или новее.
pip install -U maxapi-python
Через uv:
uv add -U maxapi-python
Напрямую из репозитория:
pip install git+https://github.com/MaxApiTeam/PyMax.git
Быстрый старт
Client использует TCP-соединение. При первом запуске PyMax попросит SMS-код
и сохранит сессию в SQLite-файл; дальше этот файл используется автоматически.
import asyncio
from pymax import Client, Message
client = Client(
phone="+79990000000",
work_dir="cache",
session_name="main.db",
)
@client.on_start()
async def on_start(client: Client) -> None:
print("Клиент запущен")
print("Ваш ID:", client.me.contact.id if client.me else "unknown")
@client.on_message()
async def on_message(message: Message, client: Client) -> None:
print(message.chat_id, message.sender, message.text)
if message.chat_id is not None and message.text:
await message.answer("Привет от PyMax")
async def main() -> None:
await client.start()
if __name__ == "__main__":
asyncio.run(main())
WebClient
WebClient использует WebSocket и QR-авторизацию:
import asyncio
from pymax import WebClient
client = WebClient(work_dir="cache", session_name="web.db")
@client.on_start()
async def on_start(client: WebClient) -> None:
print("Web-клиент запущен")
asyncio.run(client.start())
Роутеры
Обработчики можно регистрировать на клиенте или вынести в отдельный роутер.
Handler всегда принимает событие и клиента: (event, client).
from pymax import Client, ClientRouter, Message
router = ClientRouter()
def is_start(message: Message) -> bool:
return message.text == "/start"
@router.on_message(is_start)
async def start(message: Message, client: Client) -> None:
await message.answer("Готово")
client = Client(phone="+79990000000", work_dir="cache")
client.include_router(router)
Куда дальше
- Getting Started - первый запуск и сессии.
- Client - жизненный цикл клиента, reconnect и sync-state.
- Router - роутеры, фильтры и raw events.
- Messages - сообщения, реакции, история и вложения.
- Files - отправка и скачивание файлов.
- FAQ и Troubleshooting - частые проблемы.
Опубликованная документация:
Разработка
uv sync --all-groups
uv run pre-commit install
uv run pre-commit run --all-files
uv run pytest
uv run python -c "import pymax; print(pymax.__all__)"
uv run sphinx-build -b html docs docs/_build/html
Ссылки
Лицензия
Проект распространяется под лицензией MIT. Подробности см. в LICENSE.
Авторы
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file maxapi_python-2.3.1.tar.gz.
File metadata
- Download URL: maxapi_python-2.3.1.tar.gz
- Upload date:
- Size: 296.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
988d2bde8bb9c549630ab225b3aebda36ebb35850d33e0013bc64b96887cd7e6
|
|
| MD5 |
8cf92826c2049f4f9ffde802b483e360
|
|
| BLAKE2b-256 |
853749d261644c0df2a51cdefdf8d2cb95ff8881ada789152e32d959d2dda57a
|
File details
Details for the file maxapi_python-2.3.1-py3-none-any.whl.
File metadata
- Download URL: maxapi_python-2.3.1-py3-none-any.whl
- Upload date:
- Size: 134.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e9980eb9e5b037bd5e8599f53f8438117b4e67a4ea5a937d709b5bcacfd5bd7
|
|
| MD5 |
1e4e759de46072212274583b3af81475
|
|
| BLAKE2b-256 |
53958ea5c703ddffcd907278f1ae04066e1a718bf12034f35fc8c47bb981f0ba
|