Необходимо написать бота, который будет мониторить состояние нод в сети и иметь возможность привязываться к конкретным нодам.
Существующий бот для проекта Smartcash @SmartNodeMonitorBot
Его код https://github.com/xdustinface/SmartNodeMonitorBot
Нужно сделать такого же бота для этого проекта https://github.com/swiftcashproject
Информационный сайт по нодам, которые уже доступны в сети, их позиции:
https://swiftcash.bitcoiner.me/swiftnodes/payouts/
https://swiftcash.bitcoiner.me/swiftnodes/list/
Бот должен работать как в групповом чате так и в закрытом чате с одним пользователем.
По сути, бот берет данные из блокчейна, которые доступны через толстый кошелек.
Команда в кошельке swiftnode list, получаем вот такой вот результат.
{
"rank": 8,
"network": "ipv4",
"txhash": "750f262718c1a78f130a6f5f4b10ef28bd51918666ad73f1580a0c2d303280d8",
"outidx": 1,
"status": "ENABLED",
"addr": "Sj1LR3nnTrVYzrZ5iar6YFWMxX4mHR61sw",
"netaddr": "51.15.229.0:8544",
"version": 80411,
"lastseen": 1541939613,
"activetime": 947614,
"lastpaid": 0
}
Бот парсит из этой команды следующие данные:
• Addr (Публичный адрес )
• Status (Cтатус ноды)
• Rank (Позиция ноды в очереди выплат)
• Last Seen (Время последнего отклика в сети)
• Last Paid (time) (Время последнего вознаграждения)
• Last Paid (block) (Блок последнего вознаграждения)
• Activetime (С какого времени активна нода в сети)
Так же использую сайт https://explorer.swiftcash.cc/ нужно парсить конечный баланс по публичному адресу(Final Balance).
Соответственно, нам нужно создать свою БД в которую будут заноситься данные результаты. И из этой БД будут подтягиваться данные по позициям и выплатам ботом.
В свою очередь пользователь бота сообщает боту какие IP его, и бот начинает мониторить его IP.
Если в нашей промежуточной БД меняется статус ноды, либо нода получает выплату (ранк =1) то бот уведомляет пользователя об этом.
Так же необходимо предусмотреть HELP секцию в боте.
Функционал бота:
• Проверить текущее общее количество созданных / задействованных нод в сети. (команда /nodecount) Выводить общее количество нод в сети. (Команда в кошельке swiftnode count).
• Добавить / удалить личные ноды в приватном чате с ботом. (команда /add(remove)node “IP” “метка\название ноды”). Так же необходимо предусмотреть возможность удаления\добавления нод списком.
• Отобразить подробное резюме всех ваших добавленных нод(команда /mynodes). Метрики включают:
o Имя ноды и IP
o Статус ноды
o Ранг
o Uptime
o Последний блок выплат и время
• Проверить текущий баланс ваших нод использую публичный адрес(/mynodesbalance).
• Включить / отключить несколько уведомлений в приватном чате с ботом(/enable(disable)winnernotification | /enable(disable)statusnotification):
o Уведомления о наградах. Получайте уведомление, когда один из ваших узлов получает вознаграждение.
o Уведомления о состоянии - получение уведомления, если один из ваших узлов изменяет свой