Skip to main content

Python wrapper для API мессенджера Max

Project description

PyMax

Python-библиотека для Max API.

Python 3.10+ License: MIT Package

[!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.

Авторы

  • ink - основной разработчик, исследование API и документация.
  • noxzion - оригинальный автор проекта.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

maxapi_python-2.1.2.tar.gz (266.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

maxapi_python-2.1.2-py3-none-any.whl (123.5 kB view details)

Uploaded Python 3

File details

Details for the file maxapi_python-2.1.2.tar.gz.

File metadata

  • Download URL: maxapi_python-2.1.2.tar.gz
  • Upload date:
  • Size: 266.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","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

Hashes for maxapi_python-2.1.2.tar.gz
Algorithm Hash digest
SHA256 0aa5793aebb91a9b8a381bf37437b77c3498c8e2bbffc62fa1f92f8cf4837ea8
MD5 c5c353f3fb5f93606df65a00106f23c1
BLAKE2b-256 42a4630782b8e26ff5063d8fe1bb3d3343f0978f136d1f8a3907efe50315c870

See more details on using hashes here.

File details

Details for the file maxapi_python-2.1.2-py3-none-any.whl.

File metadata

  • Download URL: maxapi_python-2.1.2-py3-none-any.whl
  • Upload date:
  • Size: 123.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","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

Hashes for maxapi_python-2.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b0a2cacf56c84493bd209da2947ea41d6e9586f1b249b34b774d0912fed28aa8
MD5 ec692da435e8916b57d07a46c84da1ba
BLAKE2b-256 c804d20d6bfd76e4ad4f475dcd1efbac74ca4aacc7916e37eec66faeb8549fb2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page