Download the PHP package gagins/phpmaxbot without Composer
On this page you can find all versions of the php package gagins/phpmaxbot. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package phpmaxbot
PHPMaxBot
PHP библиотека для создания ботов в мессенджере MAX. Поддерживает полное API MAX messenger и предоставляет удобный интерфейс для разработки ботов.
Особенности
- Простой и интуитивно понятный API
- Поддержка webhook и long polling режимов
- Полная поддержка MAX Bot API
- Встроенные помощники для создания клавиатур и кнопок
- Обработка команд, событий, callback-действий и входящих вложений
- Поддержка регулярных выражений для обработчиков
- Обработка исключений и ошибок API
- PSR-4 автозагрузка
Требования
- PHP >= 7.4
- ext-curl
- ext-json
Установка
Через Composer
Вручную
-
Клонируйте репозиторий:
- Подключите автозагрузку:
Быстрый старт
Основное использование
Создание бота
Обработка команд
Обработка событий
Обработка callback-кнопок
Обработка входящих вложений
Когда пользователь нажимает кнопку requestContact или requestGeoLocation — или отправляет медиафайл — бот получает событие message_created с вложением (attachment). Используйте onAttachment($type, $handler) для обработки конкретного типа.
Обработчик получает полный массив вложения $attachment. Расположение данных зависит от типа:
| Тип | Данные в payload |
Прямые поля вложения |
|---|---|---|
image |
photo_id, token, url |
— |
video |
url, token |
— |
audio |
url, token |
— |
file |
url, token |
filename, size |
sticker |
url, code |
width, height |
contact |
vcf_info, max_info |
— |
inline_keyboard |
buttons |
— |
share |
url |
— |
location |
нет | latitude, longitude |
Обработчики onAttachment срабатывают раньше общего on('message_created'). Для каждого типа регистрируется один обработчик.
Создание клавиатур
Типы кнопок
Отправка медиафайлов
PHPMaxBot предоставляет три уровня API для работы с файлами — от одного вызова до полного ручного контроля.
Как это работает
Загрузка файла в MAX состоит из двух шагов: сначала запрашивается URL загрузки, затем файл передаётся на этот URL. Способ получения токена вложения зависит от типа файла:
| Тип | Шаг 1 uploadFile() |
Шаг 2 uploadFileToUrl() |
Откуда токен |
|---|---|---|---|
image, file |
возвращает только url |
передаёт файл → возвращает token |
из ответа шага 2 |
video, audio |
возвращает url и token |
передаёт файл (слот завершается) | из ответа шага 1 |
Все высокоуровневые методы скрывают эту разницу — вы просто передаёте файл.
Уровень 1 — высокоуровневые методы (рекомендуется)
Один вызов: библиотека сама получает URL, загружает файл и отправляет сообщение.
Отправка в чат
Отправка пользователю
Сигнатура методов
Параметр $extra принимает те же опции, что и sendMessageToChat() / sendMessageToUser() (format, дополнительные attachments и т.д.).
Уровень 2 — получение токена, ручная отправка
Используйте этот вариант, когда нужен токен до отправки сообщения — например, чтобы вложить файл в ответ на callback.
Уровень 3 — полный ручной контроль
Когда нужен доступ к сырым ответам каждого шага.
image / file — токен из ответа на загрузку
video / audio — токен из первого ответа
Полный пример: бот с командами /photo и /video
Смотрите также пример examples/media-bot.php.
API методы
Сообщения
Чаты
Закрепленные сообщения
Бот
Видео
Подписки (Webhook)
Загрузка и отправка файлов (краткий справочник)
Полное описание — в разделе «Отправка медиафайлов».
Действия
Callback ответы
Формат сообщений
Запуск бота
Long Polling (режим CLI)
Бот автоматически определит CLI режим и запустит long polling.
Webhook
Разместите файл бота на веб-сервере, доступном по HTTPS. MAX будет отправлять обновления на ваш URL.
Обработка исключений
Доступ к текущему обновлению
Типы обновлений
Доступные типы обновлений для фильтрации:
message_created- Создано новое сообщениеmessage_edited- Сообщение отредактированоmessage_removed- Сообщение удаленоmessage_callback- Нажата callback-кнопкаbot_started- Бот запущен пользователемbot_stopped- Пользователь остановил ботаbot_added- Бот добавлен в чатbot_removed- Бот удален из чатаuser_added- Пользователь добавлен в чатuser_removed- Пользователь удален из чатаchat_title_changed- Название чата измененоdialog_removed- Диалог удален пользователем
Структура обновлений: получение userId и chatId
Разные типы обновлений имеют разную структуру. Пути к идентификаторам:
| Тип обновления | userId | chatId |
|---|---|---|
message_created |
$update['message']['sender']['user_id'] |
$update['message']['recipient']['chat_id'] ¹ |
message_edited |
$update['message']['sender']['user_id'] |
$update['message']['recipient']['chat_id'] ¹ |
message_callback |
$update['callback']['sender']['user_id'] |
$update['callback']['message']['recipient']['chat_id'] ¹ |
message_removed |
$update['user_id'] |
$update['chat_id'] |
bot_started |
$update['user']['user_id'] |
$update['chat_id'] |
bot_stopped |
$update['user']['user_id'] |
$update['chat_id'] |
bot_added |
$update['user']['user_id'] |
$update['chat_id'] |
bot_removed |
$update['user']['user_id'] |
$update['chat_id'] |
user_added |
$update['user']['user_id'] |
$update['chat_id'] |
user_removed |
$update['user']['user_id'] |
$update['chat_id'] |
chat_title_changed |
$update['user']['user_id'] |
$update['chat_id'] |
dialog_removed |
$update['user']['user_id'] |
$update['chat_id'] |
¹ Поле chat_id в объекте recipient присутствует только для групповых чатов. В личном диалоге оно отсутствует — для ответа используйте sender.user_id.
Примеры:
Указать типы обновлений:
Примеры
| Файл | Что демонстрирует |
|---|---|
sample.php |
Полный пример с командами, клавиатурами и вложениями |
examples/simple-bot.php |
Команды, события, регулярные выражения |
examples/keyboard-bot.php |
Inline-клавиатуры, callback-кнопки, запрос контакта и геолокации |
examples/attachments-bot.php |
Обработка всех типов входящих вложений через onAttachment() |
examples/media-bot.php |
Отправка изображений, видео, аудио и файлов |
Запуск любого примера:
Debug режим
Настройка параметров cURL
Библиотека позволяет задать любые параметры cURL, которые будут применяться к каждому запросу к API.
Защищённые параметры —
CURLOPT_URL,CURLOPT_RETURNTRANSFER,CURLOPT_CUSTOMREQUEST,CURLOPT_HTTPHEADER,CURLOPT_POSTFIELDS— всегда устанавливаются библиотекой и не могут быть переопределены.
SSL-параметры (CURLOPT_SSL_VERIFYHOST,CURLOPT_SSL_VERIFYPEER) по умолчанию отключены, но могут быть переопределены.
Способ 1: через второй параметр конструктора (рекомендуется)
Способ 2: через статическое свойство (можно менять в любой момент)
Примеры конфигураций
Работа через прокси:
Строгая проверка SSL (для продакшн-среды):
Ограничение таймаутов:
Лицензия
GPL-3.0
Автор
GrayHoax [email protected]
Ссылки
Поддержка
Если у вас возникли проблемы или вопросы, создайте issue на GitHub.
All versions of phpmaxbot with dependencies
ext-curl Version *
ext-json Version *