Плагин WordPress для интеграции системы комментариев с Telegram Bot API
WP TGComment — это специализированный плагин для WordPress, который обеспечивает интеграцию комментариев WP с Telegram Bot API. Плагин создает платформу для двустороннего общения между консультантом и пользователями через Telegram, автоматически синхронизируя все сообщения с комментариями WordPress.
Консультации организуются на основе специального типа записей consultation, который регистрируется дополнительным плагином Pharma. Каждая консультация строго привязана к двум участникам, идентификаторы которых обязательно указываются в метаполях записи как doctor_id и client_id. Каждая консультация это переписка исключительно двух участников, преимущественно рассматриваемая как консультация между доктором и пациентом, однако сценарии применения системы могут быть шире.
- Telegram → WordPress: Сообщения из Telegram автоматически становятся комментариями WordPress
- WordPress → Telegram: Новые комментарии мгновенно отправляются участникам консультации
- Поддержка медиафайлов: Фото, видео, документы, голосовые сообщения
- Групповые медиа: Обработка albums (несколько изображений в одном сообщении)
- Telegram Login Widget: Официальная авторизация через Telegram
- Криптографическая проверка: Полная валидация данных согласно документации Telegram
- Автоматическая привязка: Связывание аккаунтов WordPress и Telegram
- Доктор-Пациент: Приватные консультации между двумя участниками
- Множественные консультации:
- Врач ведет одновременно множество консультаций с различными пациентами
- Пациент может иметь несколько активных консультаций (например, на родственников)
- Дифференцированные режимы ответов:
- Врач: Обязательно отвечает через reply на конкретные сообщения (предотвращает ошибки при множественных консультациях)
- Пациент: Может писать прямые сообщения или выбирать активную консультацию
- Контекстные ответы: Возможность отвечать на конкретные сообщения через swipe/reply
- Асинхронная обработка: Очередь сообщений с обработкой через WP Cron
- Webhook и Polling: Два режима получения обновлений от Telegram
- Retry механизм: Автоматические повторы при сбоях
| Класс | Назначение |
|---|---|
WP_TGComment |
Главный класс плагина, управление настройками и cron |
WP_TGComment_Handler |
Обработка входящих сообщений от Telegram |
WP_TGComment_Processor |
Преобразование сообщений в комментарии WordPress |
WP_TGComment_Notifier |
Отправка уведомлений в Telegram |
WP_TGComment_Auth |
Авторизация через Telegram Login Widget |
graph TD
A[Telegram Bot API] -->|Webhook/Polling| B[WP_TGComment]
B --> C[WP_TGComment_Handler]
C --> D[Очередь incoming]
D -->|WP Cron| E[WP_TGComment_Processor]
E --> F[WordPress Comments]
F -->|wp_insert_comment| G[WP_TGComment_Notifier]
G --> H[Очередь outgoing]
H -->|WP Cron| I[Telegram Bot API]
Плагин требует установки следующих зависимых плагинов, которые указаны в wp-dependencies.json:
| Плагин | Назначение | Репозиторий |
|---|---|---|
| Codestar Framework | Фреймворк для создания настроек админ-панели | mainpart/codestar-framework |
| Git Updater | Автоматическое обновление плагинов из GitHub | afragen/git-updater |
| Pharma | Основной плагин с типом записей consultation |
mainpart/pharma |
| DCO Comment Attachment | Поддержка вложений в комментариях | yadenis/DCO-Comment-Attachment |
Важно: Плагин Pharma регистрирует критически важный тип записей
consultationи предоставляет базовую функциональность для медицинских консультаций. Без него WP TGComment не сможет функционировать корректно.
# Клонировать репозиторий
git clone https://github.com/mainpart/wp-tgcomment.git
# Или скачать как zip архив
wget https://github.com/mainpart/wp-tgcomment/archive/main.zipcd wp-tgcomment
composer install --no-dev --optimize-autoloader- Загрузите папку плагина в
/wp-content/plugins/ - Активируйте плагин в админ-панели WordPress
- Перейдите в Настройки → WP TGComment
- Создайте бота через @BotFather
- Получите токен API
- Введите токен в настройках плагина
- Выберите режим получения обновлений (Webhook или Polling)
// wp-config.php дополнительные константы
define('WP_TGCOMMENT_DEBUG', true); // Включить отладку| Задача | Интервал | Назначение |
|---|---|---|
wp_tgcomment_get_updates |
2 мин | Получение обновлений (только Polling) |
wp_tgcomment_process_comments |
1 мин | Обработка входящих сообщений |
wp_tgcomment_send_notifications |
1 мин | Отправка исходящих уведомлений |
Очередь входящих сообщений от Telegram
CREATE TABLE wp_tgcomments_incoming (
id bigint(20) NOT NULL AUTO_INCREMENT,
wp_user_id bigint(20) NOT NULL,
telegram_user_id bigint(20) NOT NULL,
chat_id bigint(20) NOT NULL,
tg_message_id bigint(20) NOT NULL,
post_id bigint(20) NOT NULL,
telegram_message_json longtext NOT NULL,
media_group_id varchar(50) DEFAULT NULL,
created_at datetime DEFAULT CURRENT_TIMESTAMP,
retry_count int(11) DEFAULT 0,
is_deleted tinyint(1) DEFAULT 0,
PRIMARY KEY (id),
UNIQUE KEY unique_message (chat_id, tg_message_id)
);Очередь исходящих уведомлений в Telegram
CREATE TABLE wp_tgcomments_outgoing (
id bigint(20) NOT NULL AUTO_INCREMENT,
comment_id bigint(20) NOT NULL,
recipient_user_id bigint(20) NOT NULL,
telegram_user_id bigint(20) NOT NULL,
chat_id bigint(20) NOT NULL,
message_text longtext NOT NULL,
attachment_urls longtext,
created_at datetime DEFAULT CURRENT_TIMESTAMP,
sent_at datetime DEFAULT NULL,
retry_count int(11) DEFAULT 0,
status enum('pending','sent','failed') DEFAULT 'pending',
PRIMARY KEY (id)
);doctor_id- [ОБЯЗАТЕЛЬНО] ID врача (wp_user.ID)client_id- [ОБЯЗАТЕЛЬНО] ID пациента (wp_user.ID)
Критически важно: Метаполя
doctor_idиclient_idдолжны быть заполнены для каждой записи типаconsultation. Плагин использует эти данные для определения участников консультации и маршрутизации сообщений.
tg_incoming_message_id- ID сообщения в Telegram (для входящих)tg_outgoing_message_id- ID сообщения в Telegram (для исходящих)tg_incoming_chat_id- ID чата (для входящих)tg_outgoing_chat_id- ID чата (для исходящих)attachment_id- ID вложений WordPress
telegram_id- ID пользователя в Telegram для связи аккаунтов
| Команда | Описание |
|---|---|
/start |
Показать доступные консультации |
/list |
Последние 3 сообщения из активной консультации |
/logout |
Отключить аккаунт от Telegram |
- Авторизация: Пользователь отправляет любое сообщение боту
- Login Widget: Бот предлагает авторизоваться через Telegram
- Выбор консультации: После авторизации выбирается активная консультация
- Общение: Все сообщения автоматически синхронизируются
- Авторизация: Врач инициирует общение с ботом
- Автоматическое определение роли: Система определяет роль пользователя по базе данных
- Получение уведомлений:
- Все входящие сообщения от пациентов поступают в общий поток
- Каждое сообщение содержит контекст консультации
- Обязательный режим ответов:
- Врач может отвечать ТОЛЬКО через reply на конкретные сообщения
- Прямая отправка сообщений без контекста запрещена
- Это предотвращает ошибочную отправку сообщений не тому пациенту
- Управление консультациями:
- Возможность просмотра списка активных консультаций
- Быстрый доступ к истории сообщений каждой консультации
- PHP 7.4+
- Composer
- WordPress тестовое окружение
- Docker (опционально, для Devilbox)
# Клонировать репозиторий
git clone https://github.com/mainpart/wp-tgcomment.git
cd wp-tgcomment
# Установить зависимости
composer install
# Запустить тесты (когда будут добавлены)
composer testwp-tgcomment/
├── class.wp-tgcomment.php # Главный класс
├── class.wp-tgcomment-handler.php # Обработчик сообщений
├── class.wp-tgcomment-processor.php # Процессор в комментарии
├── class.wp-tgcomment-notifier.php # Уведомления
├── class.wp-tgcomment-auth.php # Авторизация
├── settings.php # Настройки админки
├── wp-tgcomment.php # Bootstrap файл
├── composer.json # Зависимости
├── example.json # Пример сообщения
└── README.md # Документация
Этот проект распространяется под лицензией GPLv2 или более поздней версии. См. файл LICENSE для подробностей.
Дмитрий Красников
- Email: dmitry.krasnikov@gmail.com
- GitHub: @mainpart
- Telegram Bot API за отличную документацию
- WordPress за платформу
- WP Dependency Installer за управление зависимостями
Нужна помощь? Создайте issue или свяжитесь с автором.
