Всем привет.
В своей предыдущей статье я рассказывал о том, как отправлять системные уведомления в личные сообщения в Telegram (на примере авторизации).
Чуть ранее я взялся за более практичный плагин — отправку новых статей с сайта в Telegram-канал, но мне нужно было немного времени, чтобы обкатать плагин на рабочем сайте. Если аудитория сайта не ограничивается домохозяйками, то можно расширить аудиторию сайта, заведя канал в Telegram, где пользователи смогут оперативно получать обновления сайта.

Цель плагина

Отправлять информацию о только что опубликованных статьях в Telegram-канал.

Код плагина

Свежую версию плагина всегда можно посмотреть здесь: https://github.com/mishantrop/quasitelegramposter

Как использовать

  • Создать telegram-бота.
  • Создать telegram-канал.
  • Добавить бота на канал.
  • Создать плагин и назвать, как хочется.
  • Вставить туда код.
  • Привязать плагин к событиям OnDocPublished, OnResourceAutoPublished и OnDocFormSave.
В коде необходимо указать токен:
$token = '123456789:hYa87bZ_juzh1nasdKjh87bHd1';

Псевдоним чата:
$chatId = '@modx';

Указать идентификаторы шаблонов:
$articlesTemplates = [3];

В канал будут отправляться только ресурсы с указанными шаблонами.

Варианты оформления постов

За формат поста отвечает переменная $format. Если значение 0, то выводится ссылка, если 1 — изображение.
Есть несколько вариантов оформления постов: ссылка (Telegram сам подтянет заголовок, описание и изображение) и изображение с подписью.

Ссылка

$format = 0;

Ссылка

Изображение с подписью

$format = 1;

Изображение
Изображение по умолчанию берётся из TV с именем image, можно изменить на этой строке:
$image = $siteUrl.$resource->getTVValue('image');

Недостатки

При сохранении опубликованного ресурса пост повторно отправится на канал.

Итоги

Буду рад предложениям, замечаниям и pull-request-ам.