Системный плагин ТелеПост

Событие onTelepostArticleBeforeSave

Плагин ТелеПост генерирует событие onTelepostArticleBeforeSave перед сохранением материала Joomla.

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

Событие реализовано через PSR-14 и передаёт объект Event со следующими аргументами:

  • data — объект данных статьи (передаётся по ссылке). Свойства соответствуют полям таблицы #__content, а также ключам images, urls, tags, com_fields.
  • post — исходный массив channel_post, полученный от Telegram API без изменений.

Пример обработчика события:

use Joomla\Event\Event;

public function onTelepostArticleBeforeSave(Event $event): void
{
    $data = $event->getArgument('data');
    $post = $event->getArgument('post');

    // Пример: изменить заголовок
    $data->title = '[Telegram] ' . $data->title;
}

Примечание: поле introtext может содержать HTML-разметку (абзацы, ссылки), если в настройках плагина включено автоформатирование.

Использование TelepostHelper для скачивания файлов

В основной поставке плагина доступен хелпер Joomla\Plugin\System\Telepost\Helper\TelepostHelper, предназначенный для безопасного скачивания файлов из Telegram.

Хелпер автоматически:

  • проверяет тип файла;
  • очищает имя файла;
  • предотвращает повторную загрузку одинаковых файлов;
  • работает в соответствии с настройками основного плагина.

Пример использования в плагине-парсере:

use Joomla\Plugin\System\Telepost\Helper\TelepostHelper;

// Получение параметров основного плагина
$telepostParams = ...;
$botToken = $telepostParams->get('bot_token');
$imgPath  = $telepostParams->get('img_path');

// Скачивание файла
$filePath = TelepostHelper::downloadTelegramFile($fileId, $botToken, $imgPath);

Плагин-пример

Для упрощения разработки собственных парсеров доступен плагин-пример, демонстрирующий:

  1. Модификацию данных на основе исходного контента Telegram.
  2. Модификацию уже обработанных данных статьи.

Плагин-пример доступен в репозитории проекта на GitHub.

Содержание документации