Giter VIP home page Giter VIP logo

neutron_bot's Introduction

Бот для отслежения ноды

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

#Изменения

  1. обновляем пакеты
sudo apt update && sudo apt upgrade -y
  1. скачиваем репозиторий
git clone https://github.com/nadyacoin/neutron_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/neutron_bot
  1. устанавливаем необходимые модули
npm i
  1. создаем файл .env
nano .env

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

BOT_TOKEN=TOKEN
VALOPER=valoper_address
CHATID=chat_id
INFOTIME=10
LASTPROPOSAL=0

TOKEN - телеграм токен
valoper_address - валопер адрес
chat_id - id чата
10 - задержка повторных отправок сообщений в секундах при критических ошибках (можно редактировать в самом боте)
0 - последний известный пропозал. Можно всегда поставить 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 - Информация о жестком диске
  /peer - Количество пиров
  /free - Информация об ОЗУ
  /vsync - Информация о синхронизации
  /settime - Частота отправки сообщений при критических ошибках ноды

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

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

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

/start - Бот имеет меню для удобной навигации

menu

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

info

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

aprop

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

allprop

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

df

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

free

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

vsync

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

settime

neutron_bot's People

Contributors

tarabukinivan avatar nadyacoin avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.