Расширение MediaWiki для бота Telegram
А теперь хотим, чтобы бот оповещал о новых правках на сайте с 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.
Social networks
Zuck: Just ask
Zuck: I have over 4,000 emails, pictures, addresses, SNS
smb: What? How'd you manage that one?
Zuck: People just submitted it.
Zuck: I don't know why.
Zuck: They "trust me"
Zuck: Dumb fucks