Оповещения в Telegram о Донатах с DonationAlerts – Mikulski
Наложение сайта

Оповещения в Telegram о Донатах с DonationAlerts

На основе скрипта Donation-Alerts-in-twitch-chat собрал оповещалку о донатах в Telegram. Далее подробный гайд по установке/запуску на Ubuntu и Windows.
Сразу оговорюсь, что скрипт работает только с публичными каналами/чатами Telegram!

Donation-Alerts-in-Telegram

Ubuntu

Сперва нужно установить Node.js и npm:

sudo apt install nodejs
sudo apt install npm

Лишним не будет еще установить PM2 – менеджер процессов, который запускает приложения Node.js в фоновом режиме. Это пригодится в контексте работы 24/7 и для “костыля”, чтобы восстановить соединение с сокетом DonationAlerts, когда он отвалится:

sudo npm install pm2@latest -g

Далее надо скопировать репозиторий с github:

git clone https://github.com/Mikulskii/Donation-Alerts-in-Telegram.git

Перейти в созданную директорию:

cd Donation-Alerts-in-Telegram

И открыть текстовым редактором файл datg.js:

nano datg.js

Здесь нужно добавить токены Телеграм-бота (о том как создать бота и получить токен, подробно описано здесь: https://mikulski.rocks/ru/avtopost-v-telegram/) и токен виджетов DonationAlerts (настройки аккаунта -> Показать токен).

const telegram = 'токен Telegram-бота';
const tokenDA = 'токен DonationAlerts';

В самом конце кода можно отредактировать сообщение, которое придет в Телеграм, а также нужно добавить имя канала/чата в формате @название_канала):

channelBot.sendMessage('@название_Telegram_канала',"Новый донат: "+ donate.username + " задонатил " + donate.amount + " " + donate.currency + " Сообщение: " + "'" + donate.message + "'", telegram);

Можно переходить к запуску. Находясь в той же директории, что и скрипт надо ввести команду:

node datg.js

Либо, используя PM2:

pm2 start datg.js

PM2 предпочтительнее в контексте работы 24/7, т.к. в случае, если случится разрыв соединения с вебсокетом DonationAlerts (это случается раз в несколько дней, иногда чаще), то скрипт остановит свой процесс, а PM2 его тут же перезапустит.
Да, по идее, модуль socket-io, который отвечает за подключение к вебсокету умеет автоматически переподключаться, если добавить атрибуты:

const socket = io("https://socket.donationalerts.ru:443", {
                    reconnection: true,
                    reconnectionDelay: 1000,
                    reconnectionDelayMax: 5000,
                    reconnectionAttempts: Infinity},
                    { transports: ["websocket"] }); 

И блок для вывода в лог о попытке переподключения:

socket.on('reconnect_attempt', () => {
                console.log('Trying to reconnect to service')
            });

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

Windows

Нужно скачать инсталлятор Node.js для Windows и запустить его: https://nodejs.org/en/download/
Далее скачивается Zip-архив репозитория с github: https://github.com/Mikulskii/Donation-Alerts-in-Telegram

Архив распаковывается в любое удобное место, файл datg.js редактируется аналогично тому, как было описано выше, затем через терминал Powershell нужно зайти в директорию, где находится скрипт и запустить его:

node datg.js
7 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии