На основе скрипта 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