А теперь хотим, чтобы бот оповещал о новых правках на сайте с MediaWiki. Идея такая же, как и с оповещениями для сайта на WordPress.

Идём туда, где лежит наш сайт на MediaWiki (у меня версия 1.25.3), там заходим в каталог extensions и создаём внутри каталог hp2tb, например. Внутри создаём такую структуру:

  • i18n/en.json
  • extension.json
  • hp2tb.json
  • hp2tb.php
  • hp2tb_body.php

На самом деле, нужны только эти два файла: extension.json и hp2tb_body.php.

extension.json:

{
    "name": "HTTP POST to Telegram bot",
    "author": "ТВАЁИМЯ",
    "url": "mailto:ТВАЁИМЯ@udaff.com",
    "description": "Sends a notification to Telegram about new change",
    "version": "0.1",
    "license-name": "MIT",
    "type": "other",
    "AutoloadClasses": {
        "HPtoTB": "hp2tb_body.php"
    },
    "Hooks": {
        "PageContentSaveComplete": [
            "HPtoTB::sendNotification"
        ]
    }
}

Здесь PageContentSaveComplete - это hook MediaWiki, срабатывающий каждый раз при сохранении любой правки - то, что нам и нужно. Вешаем на него свою функцию.

hp2tb_body.php:

<?php
class HPtoTB {
    public static function sendNotification( $article, $user, $content, $summary,
        $isMinor, $isWatch, $section, $flags, $revision, $status, $baseRevId ) {

        $token = "ТУТТВОЙТОКЕН";
        $chatID = "ТУТIDПОЛЬЗОВАТЕЛЯГРУППЫИЛИКАНАЛА";

        $link2article = "ТУТТВОЁДОМЕННОЕИМЯ" . "/index.php/Special:RecentChanges";
        $msg = "Новая правка на вичке!%0A%0A"
            . "*Пользователь*: " . $user . "%0A"
            . "*Статья*: " . $article->getTitle() . "%0A%0A"
            . $link2article;

        $ch = curl_init("https://api.telegram.org/bot" . $token . "/sendMessage?chat_id=" . $chatID . "&text=" . $msg . "&parse_mode=Markdown&disable_web_page_preview=true");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
        curl_exec($ch);
        curl_close ($ch);

        return true;
    }
}

И теперь осталось подключить это расширение в LocalSettings.php:

wfLoadExtension('hp2tb');

Теперь при каждой правке на сайте бот будет оповещать о ней заданный круг лиц. Если ресурс у вас активно правится ежедневно, то скорее всего потребуется настроить какие-то фильтры, например не уведомлять о правках зарегистрированных пользователей, а только об анонимных.

Подробнее о создании расширений для MediaWiki вы можете прочитать в документации.

А вот все мои плагины для интеграции Telegram с CMS.