Skip to content

majestica/haqq_bot

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Бот для отслежения нодой Islamic token

Порядок установки:

  1. обновляем пакеты
sudo apt update && sudo apt upgrade -y
  1. скачиваем репозиторий
git clone https://github.com/tarabukinivan/haqq_bot.git
  1. Устанавливаем nodejs и npm
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash - && \
sudo apt-get install nodejs -y && \
echo -e "\nnodejs > $(node --version).\nnpm  >>> v$(npm --version).\n"

результат выполнения должен быть примерно такой:

resultatnpm

  1. переходим в папку проекта
cd /$USER/haqq_bot
  1. устанавливаем необходимые модули
npm i
  1. создаем файл .env
nano .env

и вводим необходимые данные для работы бота в файл .env

BOT_TOKEN=TOKEN
VALOPER=valoper_address
CHATID=chat_id
INFOTIME=300
LASTPROPOSAL=155

TOKEN - телеграм токен
valoper_address - валопер адрес
chat_id - id чата
300 - задержка повторных отправок сообщений в секундах при критических ошибках (можно редактировать в самом боте)
155 - последний известный пропозал. Можно поставить 0, тогда бот уведомит о последнем пропозале и перезапишет значение.

где взять TOKEN и chat_id можете посмотреть в статье Настройка телеграм бота

  1. устанавливаем pm2 для запуска бота в фоне
npm i pm2 -g
  1. запуск бота (обязательно выполняется в папке бота)
pm2 start index.js

npm_start статус online говорит о том, что бот запущен

  1. для остановки бота выполняется команда: (расширение файла .js необязательна)
pm2 stop index

npm_st бот остановлен

Что умеет бот (для рабоы бота нет необходимости открывать порты)

Бот каждые INFOTIME проверяет синхронизацию ноды, jailed, выход нового пропозала. В случае плохих результатов уведомляет пользователя.

А также имеет команды для проверки вручную:

  /start - Приветствие
  /info - Информация о валидаторе
  /aprop - Список активных proposal
  /allprop - Список всех proposals
  /df - Информация о жестком диске
  /free - Информация об ОЗУ
  /vsync - Информация о синхронизации
  /settime - Частота отправки сообщений при критических ошибках ноды

Подробнее о коде:

code1
Функция loop() каждые infotime секунда запускает функцию prov()
Функция let valiki = await infop('infoval',valoper) возвращает состояние валидатора:
code2
если jailed станет true, то отправит сообщение valoper jailed
Функция let vsync = await infop('vsync') возвращает состояние синхронизации ноды:
code3
Если catching_up станет true, то отправит сообщение the node is not synchronized, check the synchronization information with the /vsync command
Функция let allprop = await infop('allprop') возвращает список всех пропозалов:
code4
Потом берется последний пропозал и сравниватся с LASTPROPOSAL. Если последний пропозал больше, чем в LASTPROPOSAL, то отправляется сообщение пользователю и LASTPROPOSAL перезаписывается.

О ручных командах:

/start - Приветствие

r1

/info - Информация о валидаторе

r2

/aprop - Список активных proposal

r3

/allprop - Список всех proposals

r4

/df - Информация о жестком диске

r5

/free - Информация об ОЗУ

r6

/vsync - Информация о синхронизации

r7

/settime - Частота отправки сообщений при критических ошибках ноды

r8

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%