PHP-бот для мессенджера Max | Сбор обратной связи после мероприятий, обучений и встреч | SQLite | YAML-конфигурация | Docker
MaxBot Feedback — готовый бот для Max Messenger, который собирает структурированную обратную связь от участников мероприятий, слушателей обучений и участников деловых встреч.
Вопросы задаются в удобном формате YAML. Результаты сохраняются в SQLite. Развёртывание — одной командой через Docker.
- 📋 YAML-конфигурация опросов — добавляйте, редактируйте и удаляйте вопросы без изменения кода
- 💬 Нативные кнопки Max — выбор вариантов, оценки и запрос контакта через интерфейс мессенджера
- 📱 Запрос номера телефона — через кнопку «Поделиться контактом» (нативная функция Max)
- ✉️ Запрос e-mail — с валидацией формата
- 🗄️ SQLite — нет зависимости от внешних СУБД; база хранится локально
- 🐳 Docker — Nginx + PHP-FPM, одна команда для запуска
- 🔒 Webhook — боты Max работают через защищённый вебхук
- 📊 Несколько опросов — разные анкеты для разных мероприятий в одном боте
| Тип | Описание | Интерфейс |
|---|---|---|
text |
Произвольный текст | Текстовый ввод |
rating |
Числовая оценка с диапазоном | Кнопки (1–N) |
choice |
Выбор из вариантов | Кнопки со списком |
boolean |
Да / Нет | Кнопки |
email |
E-mail с валидацией | Текстовый ввод |
phone |
Номер телефона | Кнопка «Поделиться контактом» |
git clone https://github.com/GrayHoax/maxbot-feedback.git
cd maxbot-feedbackcp .env.example .envОткройте .env и укажите токен бота:
BOT_TOKEN=your_max_bot_token_here
NGINX_PORT=8080Токен получите у @MaxBotFather в мессенджере Max.
Отредактируйте config/survey.yaml. Каждый опрос имеет уникальный идентификатор и список вопросов:
surveys:
event_feedback:
name: "Обратная связь о мероприятии"
start_message: "Спасибо за участие! Ответьте, пожалуйста, на несколько вопросов."
end_message: "Спасибо! Ваш отзыв получен."
questions:
- id: overall_rating
type: rating
text: "Как вы оцениваете мероприятие в целом?"
min: 1
max: 10
required: true
error_message: "Введите число от 1 до 10"
- id: email
type: email
text: "Укажите e-mail для получения материалов (необязательно)"
required: false
skip_label: "Пропустить"
- id: phone
type: phone
text: "Поделитесь контактом для обратной связи (необязательно)"
required: false
skip_label: "Пропустить"docker compose up -d --buildБот будет доступен на http://localhost:8080/webhook.
Укажите публичный URL вашего сервера (через HTTPS) в настройках бота у @MaxBotFather:
https://your-domain.com/webhook
Для локальной разработки можно использовать ngrok:
ngrok http 8080
| Команда | Описание |
|---|---|
/start |
Начать опрос по умолчанию |
/start <id> |
Начать конкретный опрос (например, /start training_feedback) |
/surveys |
Список доступных опросов |
/cancel |
Прервать текущий опрос |
/help |
Справка и контакты автора |
maxbot-feedback/
├── config/
│ └── survey.yaml # Конфигурация опросов
├── data/
│ └── feedback.sqlite # База данных (создаётся автоматически)
├── docker/
│ ├── nginx/
│ │ └── default.conf # Конфигурация Nginx
│ └── php/
│ ├── Dockerfile # PHP 8.2-FPM Alpine
│ └── php.ini # PHP-настройки
├── public/
│ └── index.php # Точка входа для вебхука
├── src/
│ ├── Bot/
│ │ └── FeedbackBot.php # Логика бота
│ ├── Database/
│ │ └── Database.php # SQLite через PDO
│ └── Survey/
│ ├── SurveyConfig.php # Загрузка и валидация YAML
│ └── Validator.php # Валидация ответов пользователей
├── .env.example
├── composer.json
├── docker-compose.yml
└── README.md
| Поле | Тип | Описание |
|---|---|---|
id |
INTEGER | Первичный ключ |
user_id |
TEXT | ID пользователя в Max |
survey_id |
TEXT | ID опроса из YAML |
current_question_idx |
INTEGER | Индекс текущего вопроса |
status |
TEXT | in_progress / completed / abandoned |
started_at |
TEXT | Дата начала |
completed_at |
TEXT | Дата завершения |
| Поле | Тип | Описание |
|---|---|---|
id |
INTEGER | Первичный ключ |
survey_response_id |
INTEGER | FK → survey_responses |
question_id |
TEXT | ID вопроса из YAML |
answer_value |
TEXT | Ответ пользователя |
answered_at |
TEXT | Время ответа |
- Docker Engine 20+
- Docker Compose v2+
Для локальной разработки без Docker:
- PHP ≥ 7.4
- Расширения:
pdo,pdo_sqlite,curl,json - Composer 2+
# Установить зависимости
composer install
# Запустить встроенный сервер PHP (для тестирования)
php -S localhost:8080 -t public/
# Или настроить ngrok + зарегистрировать вебхук- php-max-bot — PHP-фреймворк для разработки ботов Max Messenger
Коммерческое использование данного программного обеспечения разрешено исключительно с письменного согласования автора.
Некоммерческое использование, модификация и распространение разрешены с указанием первоисточника.
© 2026 GrayHoax
По вопросам лицензирования, интеграции и доработки:
- 🔗 GitHub: github.com/GrayHoax
Также используйте команду /help в самом боте.
