#Изменения
- обновляем пакеты
sudo apt update && sudo apt upgrade -y
- скачиваем репозиторий
git clone https://github.com/nadyacoin/neutron_bot.git
- Устанавливаем 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"
результат выполнения должен быть примерно такой:
- переходим в папку проекта
cd /$USER/neutron_bot
- устанавливаем необходимые модули
npm i
- создаем файл .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 можете посмотреть в статье Настройка телеграм бота
- устанавливаем pm2 для запуска бота в фоне
npm i pm2 -g
- запуск бота (обязательно выполняется в папке бота)
pm2 start index.js
- для остановки бота выполняется команда: (расширение файла .js необязательна)
pm2 stop index
Бот каждые INFOTIME проверяет синхронизацию ноды, jailed, выход нового пропозала, количество пиров. В случае плохих результатов уведомляет пользователя.
А также имеет команды для проверки вручную:
/start - Приветствие
/info - Информация о валидаторе
/aprop - Список активных proposal
/allprop - Список всех proposals
/df - Информация о жестком диске
/peer - Количество пиров
/free - Информация об ОЗУ
/vsync - Информация о синхронизации
/settime - Частота отправки сообщений при критических ошибках ноды
Функция 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
перезаписывается.