Телеграм бот для Subspace
В этом гайде я расскажу, как вы можете создать собственного бота в Telegram для управления и мониторинга вашей ноды Subspace.
1) Создание бота Telegram и получение API ключей
2) Установка и настрйока бота на вашу ноду
1.1) Регистрируем бота
Пишем в телеграме https://t.me/BotFather в сообщении
/newbot
Придумываем название(произвольно) и имя ( должно ОБЯЗАТЕЛЬНО заканчиваться на bot,
Пример: abcde_bot или abcdetestBot )
Сохраняем HTTP API token, который выдал BotFather, он нам пригодится
1.2) Получаем api_hash для telegram-api-server
При использовании стандартного сервера Telegram ограничения и тайм-ауты, после которых бот может перестать отвечать.
Для того, чтобы наш бот был стабилен и доступен - мы развернем свой собственный telegram-api-server на нашей ноде.
Переходим и авторизовываемся в официальный раздел apps в веб-версии Telegram: https://my.telegram.org
Переходим в раздел API development tools
Заполняем поля:
App title: Любое название на английском языке
Shortname: Любое название английском языке без пробелов
Url: Произвольная ссылка или IP
Platform: Desktop
Description: Придумайте любое описание
После чего нажимаем Create application.
В случае успеха ( не всегда с первого раза, иногда отдает "ОШИБКА" без описания) получаем что-то подобное
Сохраняем себе api_id и api_hash
На это регистрация бота и приложения для него завершена.
2.1) Устанавливаем бота на сервер
Клонируем репозиторий:
git clone https://github.com/mrShakedown/subspace-bot.git
Создаем сервис для бота:
nano /etc/systemd/system/telegram-bot.service
[Unit] Description=Telegram-bot After=network.target [Service] Type=simple ExecStart=/root/bot.sh Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
Для сохранения и выхода из редактора: CTRL+O, CTRL+X
Создаем скрипт для запуска бота:
#!/bin/bash python3 /root/bot.py
Выдаем права на исполнение:chmod +x /root/bot.sh
Правим конфигурацию:
token = 'YOUR_TOKEN' - Ваш токен бота
data_path = '/dev' - путь, для отслеживания места
timer = 10 - частота проверки условия для алертов и их отправки (в секундах)
admin_id = 123 - Ваш уникальный ID учетной записи, поолучить можно у бота https://t.me/my_id_bot (человек с другим ID не сможет пользоваться вашим ботом)
2.2) Подготовка окружения
Устанавливаем библиотеку для работы бота https://github.com/eternnoir/pyTelegramBotAPI
apt install python3-pip
pip install pyTelegramBotAPI
Устанавливаем окружение для telegram-api-server (официальное руководство)
git clone --recursive https://github.com/tdlib/telegram-bot-api.git
apt-get install libssl-dev build-essential checkinstall zlib1g-dev cmake openssl ccache gperf -y
Собираем
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --target install
Создаем сервис для работы telegram-api-server
nano /etc/systemd/system/telegram-api.service
[Unit] Description=telegram-api-server After=network.target [Service] Type=simple ExecStart=telegram-bot-api --api-id=123 --api-hash=123 -p 8080 [Install] WantedBy=multi-user.target
и p = порт на ваш выбор, по умолчанию 8080
Для сохранения и выхода из редактора: CTRL+O, CTRL+X
Сохраняем и запускаем
Обновляем созданные сервисы для бота и апи-сервера
systemctl enable telegram-api.service
systemctl enable telegram-bot.service
systemctl restart telegram-api.service telegram-bot.service
Итог:
У вас на сервере запущен бот, к которому только вы имеете доступ, с помощью которого можно отслеживать состояние ноды в ручном (список команд в /help)
или автоматически(алерты по нажатию /on или /off )
Основной список команд можно получить у бота в чате:
/help - покажет команды на настоящий момент
Также вы можете добавить свои команду непосредственно в bot.py и перезапустить сервис (systemctl restart telegram-bot.service)
По мере добавления разных фич - гайт будет обновляться ( очень хочется сократить
P.s. я не профессиональный прогер, адекватная критика не возбраняется (fork it)