ww-site/rumaxbot

RuMaxBot — интеграция Laravel 12 с API rumaxbot.ru. Artisan-команда rumaxbot:test для живой проверки, PHPUnit-тесты клиента и команды.

Maintainers

Package info

github.com/ww-site/RuMaxBot

pkg:composer/ww-site/rumaxbot

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.1 2026-05-30 17:44 UTC

This package is auto-updated.

Last update: 2026-05-30 17:47:57 UTC


README

Composer-пакет для быстрого подключения Laravel 12 к API rumaxbot.ru (MAX Messenger).

Репозиторий: github.com/ww-site/RuMaxBot

Установка

composer require ww-site/rumaxbot

Для локальной разработки из этого репозитория:

{
    "repositories": [
        {
            "type": "path",
            "url": "../COMPLETED/001_maxbot_pack"
        }
    ],
    "require": {
        "ww-site/rumaxbot": "@dev"
    }
}

Опубликовать конфиг (опционально):

php artisan vendor:publish --tag=rumaxbot-config

Настройка (.env)

RUMAXBOT_BASE_URL=https://rumaxbot.ru
RUMAXBOT_API_TOKEN=mbk_your_api_key_here
RUMAXBOT_TIMEOUT=30
Переменная Описание По умолчанию
RUMAXBOT_BASE_URL Базовый URL сервиса https://rumaxbot.ru
RUMAXBOT_API_TOKEN Bearer-токен из ЛК rumaxbot.ru
RUMAXBOT_TIMEOUT Таймаут HTTP-запроса (сек) 30

Ошибки API и сетевые сбои пишутся в стандартный Laravel log (storage/logs/laravel.log).

Быстрая проверка после установки

Отправить тестовое сообщение в MAX одной командой:

php artisan rumaxbot:test

Своё сообщение:

php artisan rumaxbot:test --message="Привет из Laravel"
php artisan rumaxbot:test --message="<b>HTML</b>" --format=html

Успех:

Sending test message via RuMaxBot...
Message queued successfully. Status: pending

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

Через фасад

use RuMaxBot\DataTransferObjects\SendMessageData;
use RuMaxBot\Enums\MessageFormat;
use RuMaxBot\Facades\RuMaxBot;

RuMaxBot::send(new SendMessageData(
    text: '🚀 Деплой прошёл успешно!',
    format: MessageFormat::Markdown,
));

Через DI

use RuMaxBot\Contracts\RuMaxBotClientInterface;
use RuMaxBot\DataTransferObjects\SendMessageData;

final readonly class DeployNotifier
{
    public function __construct(
        private RuMaxBotClientInterface $ruMaxBot,
    ) {}

    public function notifySuccess(): void
    {
        $this->ruMaxBot->send(new SendMessageData(text: 'Deploy OK'));
    }
}

API

Пакет отправляет POST /api/v1/messages:

{
    "text": "Сообщение",
    "format": "markdown"
}

Поддерживаемые форматы: markdown, html.

Успешный ответ: 202 Accepted:

{
    "message": "Message queued successfully.",
    "data": {
        "id": "019e79d1-...",
        "status": "pending"
    }
}

Тестирование

Пакет поставляется с явными тестами на двух уровнях.

Живая проверка после установки

Отправка реального сообщения в MAX (нужен RUMAXBOT_API_TOKEN в .env):

php artisan rumaxbot:test
php artisan rumaxbot:test --message="Привет из Laravel"
php artisan rumaxbot:test --message="<b>HTML</b>" --format=html

Команда: rumaxbot:test (SendTestMessageCommand).

Успех:

Sending test message via RuMaxBot...
Message queued successfully. Status: pending
Message ID: 019e79d1-...

Автотесты пакета (PHPUnit, без реального API)

HTTP мокается через Http::fake() — к rumaxbot.ru запросы не уходят.

composer install
vendor/bin/phpunit
Файл Покрытие
tests/Unit/RuMaxBotClientTest.php клиент: успешная отправка, парсинг data.status, ошибка 401, пустой токен, legacy-формат ответа
tests/Feature/SendTestMessageCommandTest.php команда rumaxbot:test: успех, --message, ошибка API

Автотесты в Laravel-проекте

Если в проекте есть tests/Feature/RuMaxBotTest.php (как в дистрибутиве laracomposer):

php artisan test --filter RuMaxBot

Проверяется регистрация в DI, команда, клиент, ошибки без токена и при 401.

Лицензия

MIT