max-messenger-bot/max-bot-api-php

Max messenger Bot & Api

Maintainers

Package info

github.com/max-messenger-bot/max-bot-api-php

Chat

pkg:composer/max-messenger-bot/max-bot-api-php

Statistics

Installs: 13

Dependents: 2

Suggesters: 0

Stars: 2

Open Issues: 0

0.1.1 2026-04-23 09:13 UTC

This package is auto-updated.

Last update: 2026-04-23 09:14:10 UTC


README

Этот пакет предназначен для работы с Max API в полностью объектно-ориентированном формате. Все запросы, ответы и обновления сервера представлены в строго типизированном объектном виде, никаких array shapes (object-like arrays).

Весь задокументированный функционал реализован, включая возможность возобновления загрузки файлов.

Актуальность: 15 апреля 2026 г.

use MaxMessenger\Bot\MaxApiClient;

$apiClient = new MaxApiClient('your-access-token');

$apiClient->sendMessageToUser(12345678, 'Привет');
use MaxMessenger\Bot\MaxBot;
use MaxMessenger\Bot\MaxBot\Events\BotStartedEvent;
use MaxMessenger\Bot\MaxBot\Events\MessageCreatedEvent;

$bot = new MaxBot('your-access-token', 'your-secret');

$bot->onBotStarted(function (BotStartedEvent $event): void {
    $event->sendToChat(sprintf('Здравствуйте, %s!', $event->getUser()->getFirstName());
});

$bot->onMessageCreated(function (MessageCreatedEvent $event): void {
    $message = $event->getMessage()->getText();
    // Обработка сообщения
    $event->reply('Ваше сообщение получено.', true)
});

$bot->handleFromGlobal();

Warning

По поводу ошибок в клиенте, пожалуйста обращайтесь ко мне напрямую:

Note

Вы можете заметить некоторые отличия реализации от официальной документации. На самом деле, официальная документация может содержать неточности или иметь дублирующиеся способы получения данных.

Некоторые недокументированные в официальном API функции могут быть отключены на стороне Max. Когда они писались и тестировались, они работали.

Если вы думаете, что этот пакет слишком сложный

  1. Если Вам нужно просто отправить сообщение, то никакие пакеты Вам не нужны, просто прочитайте главу Отправка сообщений используя curl в разделе Отправка сообщений.
  2. Если Вам нужно что-то ещё, прочитайте раздел Очень простой бот.

Основные особенности

  • Это полностью объектно-ориентированный клиент без array shapes (object-like arrays).
  • Для работы с клиентом не требуется изучение официального API.
  • В большинстве случаев для понимания работы, Вам достаточно будет посмотреть примеры кода.
  • Есть валидация данных в моделях запросов (можно отключить).
  • Реализована загрузка файлов на сервера обоими поддерживаемыми способами.
  • Имеются утилиты (скрипты) для тестирования и отладки обработки обновлений.
  • Весь функционал разбит на слои (бот, API Max клиент, HTTP клиент для API Max, Curl HTTP клиент), каждый слой может быть частично или полностью заменён Вашей реализацией (используются интерфейсы и многие внутренние методы объявлены как публичные).
  • Код реализован с возможностью написания тестов для любой части Вашего кода.
  • API Max клиент реализован на основе официальной документации API Max в формате yaml.
    • Объектная модель, имена моделей, имена параметров сохранены. Документирование откорректировано и дополнено.
    • Дополнительно добавлено множество методов, упрощающих работу с API.

Документация в коде

I believe that in-code documentation should be in English. However, due to a lack of resources to translate the documentation into English, the in-code documentation is presented in Russian.

Я считаю, что документация в публичном коде должна быть на английском языке. Однако из-за нехватки ресурсов для перевода документации на английский язык, документация в коде представлена на русском языке.

Установка

composer require max-messenger-bot/max-bot-api-php

Требования

  • PHP 8.2+
  • Расширение ext-mbstring

Зависимости

  • mj4444/simple-http-client ^0.2.0 — HTTP-клиент для выполнения запросов

Примеры

Больше примеров смотрите в документации в разделе примеры.

Обработка обновлений через Webhook (основной метод)

use MaxMessenger\Bot\MaxBot;
use MaxMessenger\Bot\MaxBot\Events\BotStartedEvent;
use MaxMessenger\Bot\MaxBot\Events\MessageCreatedEvent;

$bot = new MaxBot('your-access-token', 'your-secret');

// Добавление обработчика команды
$bot->getCommandHandler()
    ->onCommand('start', function (MessageCreatedEvent $event): bool {
        // Обработка команды /start
        return true;
    });

// Добавление обработчика присоединения нового пользователя
$bot->onBotStarted(function (BotStartedEvent $event): bool {
    // Обработка события
    return true;
});

// Добавление обработчика сообщений
$bot->onMessageCreated(function (MessageCreatedEvent $event): bool {
    // Обработка нового сообщения
    $event->reply('Ваше сообщение получено', true)
    return true;
});

$apiClient->handleFromGlobal();

Обработка обновлений через Long Polling

use MaxMessenger\Bot\MaxBot;

$bot = new MaxBot('your-access-token', 'your-secret');

// Добавление обработчиков

// Запуск обработки обновлений с сервера
$marker = null;
while (true) {
    $marker = $bot->handleFromServer(marker: $marker);
    usleep(100000);
}

Отправка сообщений

Отправка простого сообщения

use MaxMessenger\Bot\MaxApiClient;

$apiClient = new MaxApiClient('your-access-token');

$apiClient->sendMessageToUser(12345678, 'Привет');

Отправка сообщения с кнопкой

use MaxMessenger\Bot\MaxApiClient;
use MaxMessenger\Bot\Models\Requests\NewMessageBody;

$apiClient = new MaxApiClient('your-access-token');

$message = NewMessageBody::make('Сообщение с клавиатурой');
$message->addInlineKeyboard()->addLinkButton('Документация', 'https://dev.max.ru/docs-api');
$apiClient->sendMessageToUser(12345678, $message);

Отправка сообщения с файлом

use MaxMessenger\Bot\MaxApiClient;
use MaxMessenger\Bot\Models\Requests\NewMessageBody;

$apiClient = new MaxApiClient('your-access-token');

$message = NewMessageBody::new()
    ->addFileAttachment($fileToken);
$apiClient->sendMessageToUser(12345678, $message);

Загрузка файлов на сервера Max

Для загрузки файлов на сервера Max установите и используйте пакет max-messenger-bot/max-uploader-php.

composer require max-messenger-bot/max-uploader-php

Документация