- Двойная аутентификация: поддержка как токен-ориентированной аутентификации для уже существующих сессий, так и верификации по номеру телефона для новых сессий.
- Обработка событий в реальном времени: позволяет задавать пользовательские функции-обработчики для событий, приходящих от сервера (например, новых сообщений или обновлений статуса собеседника).
- Автоматическое восстановление соединения: автоматически переподключается и повторно аутентифицирует сессию в случае обрыва соединения, обеспечивая надёжность работы.
- Вспомогательные методы: содержит удобные методы для выполнения типичных действий — получение истории чата, загрузка файлов и видео, управление контактами и т.д.
Установите библиотеку с помощью pip:
pip install MaxBridgeДля начала работы создайте экземпляр класса MaxAPI. Вы можете аутентифицироваться с помощью уже имеющегося токена или пройти верификацию по номеру телефона.
С использованием токена аутентификации:
Если у вас уже есть действительный auth_token, вы можете передать его при инициализации для быстрого подключения.
from max_api import MaxAPI
AUTH_TOKEN = "ваш_токен_аутентификации"
api = MaxAPI(auth_token=AUTH_TOKEN)- Откройте веб-браузер и перейдите на веб-версию Max Messenger.
- Войдите в свой аккаунт Max, если вы ещё не авторизованы.
- После входа откройте инструменты разработчика в браузере (щёлкните правой кнопкой мыши на странице и выберите «Просмотреть код» или нажмите
F12). - Перейдите на вкладку «Application» («Приложение») в инструментах разработчика.
- В левой панели в разделе «Storage» («Хранилище») найдите и откройте «Local Storage», затем выберите домен
https://web.max.ru. - Найдите токен аутентификации — это значение ключа
__oneme_auth. - Скопируйте значение этого токена. Оно понадобится вам для аутентификации в классе
MaxAPI.
Без токена аутентификации (верификация по номеру телефона):
Если у вас нет auth_token, вы можете пройти аутентификацию (войти), подтвердив номер телефона.
from max_api import MaxAPI
api = MaxAPI()
phone_number = "ваш_номер_телефона" # например, "+79123456789"
api.send_verify_code(phone_number)
# Введите код, полученный по SMS
code = input("Введите код подтверждения: ")
api.check_verify_code(code)После успешной аутентификации вы можете легко отправлять сообщения в любой чат.
# ID чата, в который нужно отправить сообщение
chat_id = "some_chat_id"
# Текст сообщения
message_text = "Привет из API!"
# Отправка сообщения
api.send_message(chat_id, message_text)Также можно отправить ответ на конкретное сообщение:
api.send_message(chat_id, "Это ответ.", reply_id="id_сообщения_для_ответа")Вы можете обрабатывать события в реальном времени (например, новые сообщения), передав функцию-обработчик в параметр on_event при инициализации.
import json
def my_event_handler(event_data):
"""
Пользовательская функция для обработки входящих событий от сервера.
"""
opcode = event_data.get("opcode")
if opcode == 128: # Событие: новое сообщение
print(f"Получено новое сообщение: {json.dumps(event_data, indent=2, ensure_ascii=False)}")
else:
print(f"Событие от сервера (Opcode {opcode}): {json.dumps(event_data, indent=2, ensure_ascii=False)}")
# Инициализация API с пользовательским обработчиком событий
api = MaxAPI(auth_token=AUTH_TOKEN, on_event=my_event_handler)
# Теперь API будет использовать my_event_handler для обработки входящих событий.
# Не забудьте оставить скрипт запущенным, чтобы получать события.Историю сообщений любого чата можно получить простым вызовом метода.
# ID чата, из которого нужно получить историю
chat_id = "some_chat_id"
# Количество сообщений для получения
message_count = 50
# Получение истории чата
history = api.get_history(chat_id, count=message_count)
print(history)Чтобы получать обновления в реальном времени для конкретного чата (новые сообщения, индикаторы набора текста и т.д.), необходимо подписаться на него.
# ID чата для подписки
chat_id = "some_chat_id"
# Подписка на чат
api.subscribe_to_chat(chat_id)API автоматически обрабатывает сигналы SIGINT (Ctrl+C) и SIGTERM. Также вы можете вручную вызвать метод close(), чтобы отключиться от WebSocket-сервера.
api.close()auth_token(str, необязательный): токен аутентификации для сессии.on_event(callable, необязательный): функция-обработчик событий от сервера. Принимает один аргумент — словарь с данными события.
send_message(chat_id, text, reply_id=None, wait_for_response=False, format=False): отправляет сообщение в чат.get_history(chat_id, count=30, from_timestamp=None): получает историю сообщений чата.subscribe_to_chat(chat_id, subscribe=True): подписывается на обновления чата или отписывается от них.mark_as_read(chat_id, message_id): помечает конкретное сообщение как прочитанное.get_contact_details(contact_ids): получает информацию о профиле одного или нескольких контактов.get_contact_by_phone(phone_number): находит контакт по номеру телефона.get_chat_by_id(chat_id): возвращает чат из локального кэша по его ID.get_all_chats(): возвращает словарь всех закэшированных чатов.send_verify_code(phone_number): отправляет код подтверждения на указанный номер телефона для начала аутентификации.check_verify_code(code): проверяет код, полученный по SMS, и завершает аутентификацию.send_generic_command(command_name, payload, wait_for_response=True, timeout=10): отправляет произвольную команду API по её строковому имени (например,'GET_HISTORY').get_video(id): скачивает видео по его ID и возвращает как байтовый поток.get_file(id, chat_id, msg_id): скачивает файл по его ID и возвращает его содержимое и имя.close(): отключается от WebSocket-сервера и завершает работу цикла событий.