rentceisy/yandex-messenger-bot-sdk

There is no license information available for the latest version (v0.0.2) of this package.

Yandex Messenger Bot API SDK

Maintainers

Package info

github.com/RentCeisy/yandex-messenger-bot-sdk

pkg:composer/rentceisy/yandex-messenger-bot-sdk

Statistics

Installs: 50

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.0.2 2026-06-03 07:41 UTC

This package is auto-updated.

Last update: 2026-06-03 07:42:49 UTC


README

PHP SDK для отправки сообщений через Bot API Яндекс Мессенджера.

Требования

  • PHP >= 8.0
  • Composer

Установка

composer require rentceisy/yandex-messenger-bot-sdk

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

<?php

require 'vendor/autoload.php';

use Rentceisy\YandexMessengerBotSdk\YandexMessenger;

$bot = new YandexMessenger('YOUR_BOT_TOKEN');

// Отправка сообщения в групповой чат
$message = $bot->sendMessage([
    'chat_id' => '0/0/4f24b544-***************',
    'text'    => 'Привет, команда!',
]);

echo $message->message_id; // 1647523230504005

Метод sendMessage

Отправляет текстовое сообщение в групповой чат или личный диалог пользователю.

public function sendMessage(array $params): ?\Rentceisy\YandexMessengerBotSdk\Objects\Message

Параметры

Параметр Тип Обязательный Описание
chat_id string Нет* ID группового чата. Бот должен быть участником чата
login string Нет* Логин пользователя для отправки в личный чат
text string Нет Текст сообщения (не более 6000 символов)
payload_id string Нет Уникальный ID запроса. Запросы с одинаковым ID трактуются как дубликаты
message_id int Нет ID сообщения для редактирования. Сообщение должно быть из того же чата
reply_message_id int Нет ID сообщения, на которое будет дан ответ
thread_id int Нет ID сообщения, под которым будет открыт тред
disable_notification bool Нет Отключить уведомление о сообщении. По умолчанию false
important bool Нет Пометить сообщение как важное. По умолчанию false
disable_web_page_preview bool Нет Отключить раскрытие ссылок. По умолчанию false

* Параметры chat_id и login являются необязательными по отдельности, но необходимо указать хотя бы один из них.

Примеры

Отправка в групповой чат:

$message = $bot->sendMessage([
    'chat_id' => '0/0/4f24b544-***************',
    'text'    => 'Привет!',
]);

Отправка пользователю:

$message = $bot->sendMessage([
    'login' => 'ivan.ivanov',
    'text'  => 'Привет, Иван!',
]);

Ответ на сообщение:

$message = $bot->sendMessage([
    'chat_id'          => '0/0/4f24b544-***************',
    'text'             => 'Это ответ',
    'reply_message_id' => 1647523230504005,
]);

Важное сообщение без уведомления и без превью ссылок:

$message = $bot->sendMessage([
    'chat_id'                  => '0/0/4f24b544-***************',
    'text'                     => 'https://yandex.ru',
    'important'                => true,
    'disable_notification'     => true,
    'disable_web_page_preview' => true,
]);

Идемпотентная отправка (защита от дубликатов):

$message = $bot->sendMessage([
    'chat_id'    => '0/0/4f24b544-***************',
    'text'       => 'Привет!',
    'payload_id' => uniqid('msg_', true),
]);

Возвращаемое значение

При успешной отправке возвращает объект Message, содержащий:

Свойство Тип Описание
ok bool Флаг успешности (true)
message_id int ID отправленного сообщения в чате
$message = $bot->sendMessage([...]);

echo $message->ok;          // true
echo $message->message_id;  // 1647523230504005

Обработка ошибок

При ошибках API SDK выбрасывает исключения:

use Rentceisy\YandexMessengerBotSdk\Exceptions\YandexMessengerResponseException;
use Rentceisy\YandexMessengerBotSdk\Exceptions\YandexMessengerSDKException;

try {
    $message = $bot->sendMessage([
        'chat_id' => '0/0/invalid',
        'text'    => 'Привет!',
    ]);
} catch (YandexMessengerResponseException $e) {
    // Ошибка от API (например: "Bot is not a member of the chat")
    echo $e->getMessage();
    echo $e->getErrorCode();
} catch (YandexMessengerSDKException $e) {
    // Ошибка SDK или HTTP-клиента
    echo $e->getMessage();
}

Настройка HTTP-клиента

Таймауты

$bot->setTimeOut(30);        // Таймаут запроса (сек)
$bot->setConnectTimeOut(5);  // Таймаут соединения (сек)

Кастомный HTTP-клиент

SDK использует Guzzle по умолчанию, но вы можете подменить реализацию через интерфейс HttpClientInterface:

$bot->setHttpClientHandler($myCustomHttpClient);

Кастомный Base URL

$bot->setBaseBotUrl('https://custom-proxy.example.com/bot/v1');

Лицензия

MIT