Робот-посыльный
Данный бот предназначен для универсального оповещения пользователей в телеграм из различных сервисов.
Примеры применения:
-
Оповещение организаторов из сервисов по мониторингу систем (ELK, Alert manager)
-
Изменения в турнирной таблице из парсеров борды
-
Сообщения о firstblood'ах из CTFd
Для установки необходимо:
-
создать телеграм бота в @BotFather
-
установить вебхуки с доменом, на сервере которого будет развернут бот
-
настроить проксирование nginx на порт бота
-
в корне проекта создать файл
.env
и заполнить его необходимыми параметрами (пример в.env.example
) -
выполнить команду
docker-compose up --build -d
Для общения с ботом необходимо отправить запрос на URL/SECRET_KEY со следующими JSON полями:
-
message
- основные данные, которые пришлет бот. (ОБЯЗАТЕЛЬНОЕ ПОЛЕ) -
id
- название сервиса, с которого идет отправка. Необходимо для заглушки слишком спамящих сообщений -
type
- тип отображения сообщения в телеграмм. Доступные типы:plain
- без форматирования (ПО ДЕФОЛТУ и в случае ошибок отображения других)file
- отправляет файл с сервера с названием из поляdata
markdown
html
-
to
- адресат сообщения. Может быть:MAIN
- главный чатDEV
- dev чат (ПО ДЕФОЛТУ)- ID пользователя/чата в телеграм
Переменные MAIN и DEV задаются в настройках бота
- Отправить сообщение "TEST" в DEV чат
{
"message": "TEST"
}
- Отправить жирное сообщение "TEST", с ID "Test-service", типом "markdown", пользователю с TelegramID 445313647
{
"message": "**TEST**",
"id": "Test-service",
"type": "markdown",
"to": "445313647"
}
Бот имеет встроенные команды (для удобства их можно добавить в @BotFather). Следует обратить внимание на функционал заглушки сервисов. Он предназначен для того, чтобы на стороне бота заглушать неинформативные сообщения, которые сервисы могут отправлять слишком часто.
Список команд:
/help
- Список доступных команд/info
- Выбранные чаты (DEV/MAIN)/init
- Обозначить текущий чат как MAIN/services
- Показать все доступные сервисы/clear
- Отчистить список сервисов/muted
- Показать сервисы с отключенными оповещениями/unmuted
- Показать сервисы с включенными оповещениями/mute *service_name*
- Заглушить сервис по названию/unmute *service_name*
- Включить оповещения для сервиса по названию/mute
- Заглушить последний сервис/unmute
- Включить оповещения для последнего сервиса