bushlanov-dev/max-bot-api-client-php

Max Bot API Client library

Maintainers

Package info

github.com/BushlanovDev/max-bot-api-client-php

pkg:composer/bushlanov-dev/max-bot-api-client-php

Transparency log

Statistics

Installs: 7 356

Dependents: 0

Suggesters: 0

Stars: 48

Open Issues: 2

1.6.4 2026-06-27 13:40 UTC

README

Actions status Coverage Packagist Version PHP version Laravel Software License

Caution

На мой взгляд Max Messenger является ни чем иным как малварью, созданной для слежки за гражданами РФ. Настоятельно не рекомендую использовать его на реальных устройствах, с настоящим номером телефона, и для личной переписки.
Обязательно к прочтению - Месседжер MAX следит за пользователями VPN

Быстрый старт

Если вы новичок, то можете прочитать официальную документацию, написанную разработчиками Max.

ℹ️ С полной документацией вы можете ознакомиться тут.

Получение токена

Откройте диалог с MasterBot, следуйте инструкциям и создайте нового бота. После создания бота MasterBot отправит вам токен.

Установка библиотеки

composer require bushlanov-dev/max-bot-api-client-php

Пользователи Laravel могут зарегистрировать сервис провайдер и фасад в config/app.php:

'providers' => [
    // ...
    BushlanovDev\MaxMessengerBot\Laravel\MaxBotServiceProvider::class,
],
// ...
'aliases' => [
    // ...
    'MaxBot' => BushlanovDev\MaxMessengerBot\Laravel\MaxBotFacade::class,
],

Использование

Note

С 19 июля 2026 основной домен api изменится с platform-api.max.ru на platform-api2.max.ru и начнет использовать чебурнетовский сертификат!
Вам необходимо либо установить сертификат, либо отключить его проверку, оба варианта описаны ниже.

Установка сертификата на примере ОС Ubuntu

# корневой сертификат
curl -k -O "https://gu-st.ru/content/Other/doc/russian_trusted_root_ca.cer"
# промежуточный сертификат
curl -k -O "https://gu-st.ru/content/Other/doc/russian_trusted_sub_ca.cer"

sudo cp russian_trusted_root_ca.cer /usr/local/share/ca-certificates/russian_trusted_root_ca.crt
sudo cp russian_trusted_sub_ca.cer  /usr/local/share/ca-certificates/russian_trusted_sub_ca.crt

sudo update-ca-certificates

Tip

Гибкая настройка Guzzle
Мах часто меняют домен API а теперь еще и сертификат.
Если вы не хотите или не можете установить сертификат на прямую в систему, можно собрать объект API с кастомным Guzzle клиентом и отключить проверку сертификата.
Во всех остальных случаях достаточно минимального $api = new Api('YOUR_BOT_API_TOKEN');

$guzzle = new \GuzzleHttp\Client([
    'timeout' => 10,
    'connect_timeout' => 5,
    'read_timeout' => 10,
    'headers' => ['User-Agent' => 'max-bot-api-client-php'],
    'verify' => false, // Отключить проверку либо путь до сертификата '/path/to/cert.pem'
]);

$httpFactory = new \GuzzleHttp\Psr7\HttpFactory();

$client = new \BushlanovDev\MaxMessengerBot\Client(
    accessToken: 'YOUR_BOT_API_TOKEN',
    httpClient: $guzzle,
    requestFactory: $httpFactory,
    streamFactory: $httpFactory,
    baseUrl: 'https://platform-api2.max.ru',
);

$api = new BushlanovDev\MaxMessengerBot\Api(
    client: $client,
    modelFactory: new BushlanovDev\MaxMessengerBot\ModelFactory(),
);

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

require __DIR__.'/vendor/autoload.php';

use BushlanovDev\MaxMessengerBot\Api;

$api = new Api('YOUR_BOT_API_TOKEN');

// Загрузка файла
$fileAttachmentRequest = $api->uploadAttachment(
    type: UploadType::File,
    filePath: __DIR__ . '/test.pdf',
);

$api->sendMessage(
    userId: 123,     // ID пользователя получателя сообщения
    chatId: 321,     // Или ID чата, в который нужно отправить сообщение
    text: 'Привет!', // Текст сообщения, вы можете использовать HTML или Markdown
    attachments: [
        $fileAttachmentRequest,
        new InlineKeyboardAttachmentRequest([
            [new CallbackButton('Нажми меня!', 'payload_button1')],
            [new LinkButton('Нажми меня!', 'https://example.com')],
        ]),
    ],
    format: MessageFormat::Markdown, // Формат сообщения (Markdown или HTML)
);

Отправка сообщения с использованием фасада Laravel

MaxBot::sendUserMessage(123456, 'Привет из Laravel!');

Создание универсального обработчика обновлений

$dispatcher = $api->getUpdateDispatcher();

$dispatcher->onMessageCreated(function (MessageCreatedUpdate $update, Api $api) {
    $api->sendMessage(
        userId: $update->message->recipient->userId,
        text: 'Привет!',
    );
});
// или
$dispatcher->addHandler(UpdateType::BotStarted, function (BotStartedUpdate $update, Api $api) {
    $api->sendMessage(
        chatId: $update->chatId,
        text: 'Я запущен!',
    );
});

Подписка на вэб хуки

$api->subscribe(
    url: 'https://example.com/webhook', // HTTPS URL на который будут приходить хуки
    secret: 'super_secret',             // Секретная фраза для проверки хуков
    updateTypes: [
        // Типы хуков которые вы хотите получать (либо ничего не указывать, чтобы получать все)
        UpdateType::BotStarted,
        UpdateType::MessageCreated,
    ],
);

Обработка обновлений

$handler = $api->createWebhookHandler('super_secret'); // Обновления через вебхук
// ИЛИ
$handler = $api->createLongPollingHandler();           // Обновления через лонгполлинг

$handler->handle();

ℹ️ С полной документацией вы можете ознакомиться тут.

Реализованные методы

Bots

Chats

Subscriptions

Upload

Messages

Лицензия

Данная библиотека распространяется под лицензией MIT - подробности см. в файле LICENSE.