Изображение для привлечения внимания
Изображение для привлечения внимания

Вы возможно будете смеяться, но таки да, однажды я на полном серьёзе решил написать Телеграм-бота, использовав в качестве движка WordPress. В итоге это всё зашло настолько далеко, что вылилось в полноценный плагин. Его можно использовать как для интеграции сайта с Телеграмом, так и для быстрого создания автономных Телеграм-ботов, не связанных с веб-проектом.

Сразу оговорюсь, что плагин, о котором пойдет речь, рассчитан в первую очередь на разработчиков. Для обычного администратора Вордпресса там функций пока мало.

Я знаю что к PHP и к Вордпрессу некоторые относится как минимум неоднозначно, а как максимум пренебрежительно. Но уверен, что во многих случаях бот на Вордпрессе это отличное решение.

С чего всё началось

Итак, однажды мне понадобилось написать Телеграм-бота для одной своей мелкой рутинной задачи, честно говоря, уже не помню какой именно. Начал изучать API Телеграма, устройство ботов, принципы их работы. И чем глубже погружался в тему, тем больше мне нравилась идея писать это на Вордпрессе. Скажу прямо, что основная причина была в том, что я с Вордпрессом очень хорошо знаком. Это, без преувеличения, главный мой рабочий инструмент на протяжении уже многих лет.

Но не только поэтому. Просто в Вордпрессе уже из коробки есть многое из того, что нужно боту. Поэтому рассмотрим

Плюсы выбранного подхода

  • Организована работа с пользователями — есть раздел в админке, где отображаются все юзеры, зарегистрированные на сайте. Поиск, сортировка, редактирование тоже разумеется присутствуют.

  • Есть готовые инструменты для хранения файлов и управления ими. Правда, медиабиблиотека Вордпресса это далеко не самый удобный инструмент для работы с файлами, но при необходимости его можно сделать удобнее с помощью сторонних плагинов и настроек;

  • Есть поддержка языков. При создании многоязычного бота по сути нужно просто добавить переводы строк.

  • Гибкость и расширяемость на очень высоком уровне. Про это много уже сказано, и это действительно одно из главных достоинств Вордпресса — огромное количество сторонних плагинов, которые расширяют его функциональность.

  • И последнее по порядку, но не по значимости — Вордпресс-плагин, позволяющий легко подключить Телеграм-бота к сайту может очень пригодиться, если вам нужно иметь возможность получать уведомления в мессенджер о событиях на сайте. Например новые публикации, комментарии, покупки. Возможна и работа в обратную сторону — через бота в Телеграме можно управлять той же публикацией постов, модерировать комментарии и т.д.

А больше всего мне самому понравилась идея использовать хуки Вордпресса для событий бота. Например, сообщение от пользователя, слеш-команда и т. п. Те кто знаком с Вордпрессом как разработчик, думаю, уже поняли меня. Кто не знаком, наверное тоже сталкивались с понятием хуков или по крайней мере догадались что это такое. Если кратко — хуки это некие события, на которые можно повесить свои обработчики. Одной строкой кода связать событие и свою функциональность. Хук умеет передавать в функцию заранее определенные данные (например в нашем случае ID пользователя, текст его сообщения и т. д.).

Но, буду честен, не всё так радужно. Есть и минусы в использовании PHP и Вордпресса для ботов.

Недостатки создания Телеграм бота на Вордпрессе

  • Само устройство Вордпресса не предполагает возможности запустить бесконечный цикл обработки вызовов от Телеграм-API, чтобы правильно с ним коммуницировать. (Позволяет конечно, но Вордпресс не про это). Это в свою очередь не даёт возможности, например, удобно обрабатывать группы файлов — когда пользователь отправляет сразу несколько файлов в одном сообщении.

  • В Вордпрессе бот будет работать медленнее, чем на некоторых других платформах. На практике — отвечает пользователю не мгновенно, а спустя полсекунды, или даже чуть дольше. Зависит от сервера, конфигурации и т. д.

  • Из этого же вытекает следующее ограничение: при очень высокой нагрузке на бота будет высокой нагрузка и на сервер, и не факт что он будет хорошо справляться.

  • Для многих ботов такой функционал избыточен (пользователи, файлы и прочее о чем говорилось выше). Если боту не нужны эти фичи, то разумнее использовать что-то более простое для его построения.

Но давайте скажем честно: подавляющему большинству Телеграм-ботов не придется столкнуться с десятками запросов в секунду. Далеко не всем нужно уметь обрабатывать группы файлов. А готовая админка, управление пользователями и другие полезности Вордпресса многим ботам пригодятся.

Впрочем, давайте ближе к делу. Переходим к практической части.

Как это работает

Итак, разработку я начал с одного класса, который обрабатывал команды API Телеграмма. Но быстро понял, что одним классом тут не обойтись. По мере написания кода вся функциональность, связанная непосредственно с общением с API, была вынесена в отдельный плагин, чтобы потом можно было его многократно использовать. Идея такая: разворачиваем Вордпресс на сервере, добавляем плагин, а дальше пишем собственно логику. Ну или если у вас уже есть сайт, к которому вы хотите прикрутить бота, то просто добавляем на него плагин и пишем логику.

На момент написания статьи версия плагина — 0.3.0 (ноль в начале как бы намекает, что это ещё сыроватая версия, а идущая за ним тройка, что плагин уже пережил пару улучшений). Размещен он в официальном репозитории плагинов Вордпресса под названием Makarski Bot Connector for Telegram. Свою фамилию в начале названия я поставил не из тщеславия, а после общения с командой техподдержки директории плагинов, которые настояли на том что имя должно начинаться с ника либо реального имени разработчика. Насколько я понял, это сейчас общее требование ко всем новым плагинам.

Предположим Вордпресс у вас уже установлен на сервере. Кстати, можно обойтись и локальной установкой и работать в режиме Polling — когда Вордпресс обрабатывает события от Телеграм-бота не мгновенно, а по крону. Но, откровенно говоря, такой режим реально неудобен и подходит разве что для локальной отладки каких-то функций. Боевой режим бота все же предполагает работу на сервере.

После установки Вордпресса нужно добавить в него плагин. Установить его можно скачав по адресу https://wordpress.org/plugins/makarski-bot-connector-for-telegram/, либо прямо из админки Вордпресса, вписав в поиске его имя.

Дальнейшие шаги по построению своего Телеграм-бота такие:

  • Создайте бота и скопируйте его токен из https://t.me/BotFather/.

  • В админке Вордпресса зайдите в Telegram Bot → Settings и вставьте токен, скопированный в предыдущем шаге, в поле «Telegram Token» ниже и нажмите «Save».

  • Выберите режим подключения:

    • Webhook — требуется общедоступный HTTPS-адрес. Впишите УРЛ эндпоинта в поле Telegram endpoint. Это любая УРЛ-дружественная строка, которая будет точкой доступа Телеграма к вашему сайту, напрмиер tgendpoint, тогда Телеграм будет слать вызовы к вашему сайту по адресу https://yoursite.com/tgendpoint/. После сохранения нажмите «Set Webhook». Убедитесь что Webhook status подсвечен зеленым и совпадает с выбранным вами УРЛом.

    • Polling — работает на любом хостинге, включая localhost. Запускается автоматически при сохранении.

Страница настроек плагина
Страница настроек плагина

На этом настройка бота закончена. Для обычного пользователя плагин пока не предоставляет почти никакого функционала, за исключением рассылок пользователям бота. Но это не значит что плагин ничего не умеет. Как уже было сказано, он рассчитан в первую очередь на разработчиков. Поэтому перейдем к примеру кода.

Пишем код

Если вы дочитали до этого места и всё ещё понимаете о чем идёт речь, то скорее всего вам не нужно объяснять куда именно нужно писать кастомный код в Вордпрссе. Это может быть, например, ваш собственный плагин или тема.

Минимальный код для Телеграм-бота, эдакий Hello World, выглядит так:

add_action('init', function () {

    TGBot\register_bot_command('start', function ($bot) {

        $bot->send_message('Welcome!');

    });

});

add_action('tgbot_message', function ($bot, $user_id, $msg) {

    if ($msg->type === 'text') {

        $bot->send_message('You said: ' . esc_html($msg->text));

    }

}, 10, 3);

Это немного уплотненная версия синтаксиса, на практике так пишется редко. Но я же говорил что это «минимальный» код. Давайте разберем детально что тут происходит.

add_action( 'init'... - добавляет функцию, которая будет выполняться каждый раз при инициализации Вордпресса. В нашем случае это анонимная функция в теле которой регистрируется команда бота start. Для этого вызываем функцию TGBot\register_bot_command(). В качестве первого параметра передаем ей строку с командой. В качестве второго – функцию-обработчик. В в свою очередь этот обработчик получает объект $bot, который умеет довольно многое. Например отправить сообщение пользователю, как в нашем примере. Делает он это командой $bot->send_message( 'Welcome!' );. В результате пользователь впервые запустив бота и нажав Старт в ответ получит сообщение с текстом Welcome. Аналогичным образом можно зарегистрировать другие кастмоные команды вашего бота.

Следующая часть кода — реакция на сообщение пользователя.

add_action( 'tgbot_message'... – это тот самый хук о котором я говорил в начале статьи. При его срабатывании будет вызвана переданная ему анонимная функция, которая в качестве параметра получит:

  • объект бота, как и в предыдущем примере;

  • ИД пользователя;

  • текст отправленного пользователем сообщения.

Отмечу, что текст пользовательского сообщения также может быть получен из объекта $bot, и параметр $msg здесь используется просто для удобства.

Далее в теле вызываемой функции проверяем текстовое ли это сообщение, и если да, то отправляем ответ пользователю уже знакомым методом send_message().

На всякий случай, концовка кода — , 10, 3 ); это всё еще параметры функции add_action() где 10 это очередность вызова нашего хука, а 3 это количество передаваемых ему параметров.

Разумеется это просто абстрактные примеры, которые для практического применения нужно расширять. Более подробное описание хуков и функций, которые предоставляет плагин, а также другие примеры кода можно найти в файлах readme.txt и readme.md в папке плагина.

Что дальше

Дальше я планирую добавить в плагин более функциональную панель для рассылок пользователям. Сделать универсальный интерфейс, чтобы рассылки можно было программировать. Пока это на стадии идеи, но это тот функционал, который нужен лично мне сейчас, поэтому в том или ином виде я его реализую.

Кроме этого хочется реализовать в удобном виде работу в группами файлов. Но пока не придумал как именно.

Буду рад услышать от читателей, какие функции вам были бы полезны в плагине. И что можно улучшить.

Ссылки

Комментарии (6)


  1. anonymous
    16.06.2026 10:05


    1. makaravich Автор
      16.06.2026 10:05

      А можно подробнее: в каком именно месте она кривая?


      1. joffer
        16.06.2026 10:05

        не обращайте внимания на подобные комментарии - если бы действительно что-то было криво, вам бы расписали - что или указали бы некривые альтернативы.

        Что касается WP - на какие-то задачи он вполне хорош и логичен, а особенности и непрямые места есть практически у любого фреймворка или CMS.