Система создания отчетов по данным из Metabase и рассылки по адресатам + Тг Бот для рассылки уведомлений
Support Bot - это телеграм-бот на Go с использованием библиотеки telebot v4, предоставляющий позволяющий:
- Управления пользователями и чатами
- Отправки уведомлений и рассылок
- Автоматической генерации и отправки отчетов
- Интеграции с Metabase, SMB и SMTP
- Управление пользователями: добавление, удаление, просмотр списка пользователей
- Управление чатами: добавление, удаление, просмотр списка чатов
- Система уведомлений: отправка уведомлений пользователям и в чаты
- Генерация отчетов: автоматическое создание отчетов из Metabase с расписанием (cron)
- Интеграция с файловыми хранилищами: поддержка SMB для работы с файлами
- Email рассылка: отправка отчетов через SMTP
/start- Начало работы с ботом/admin- Административная панель (только для администраторов)/register- Регистрация пользователя/subscribe- Подписка чата на уведомления
- Go 1.25.6+
- PostgreSQL 9+
- Docker и Docker Compose (опционально)
git clone https://github.com/netscrawler/support_bot.git
cd support_bot- Создайте базу данных PostgreSQL
- Примените миграции из директории
migrations/init.sql/в следующем порядке:psql -U your_user -d notification_bot -f migrations/init.sql/001_create_tables.sql psql -U your_user -d notification_bot -f migrations/init.sql/002_create_report_tables.sql psql -U your_user -d notification_bot -f migrations/init.sql/003_add_admin.sql psql -U your_user -d notification_bot -f migrations/init.sql/004_insert_settings.sql
Создайте конфигурационный файл на основе примера:
cp config/config.example.yaml config/local.yamlОтредактируйте config/local.yaml, указав необходимые параметры:
log:
level: info # Уровень логирования: debug, info, test
file: ./log.log # Путь к файлу логов
output: [stdout, file] # Куда выводить логи
metabase_domain: https://your-metabase-instance.com # URL Metabase
database:
port: 5432
host: localhost
user: postgres
password: postgres
name: bottst
sslmode: disable
database_connect: 10s
timeout:
shutdown: 5s # Таймаут graceful shutdown
bot:
telegram_token: your_telegram_bot_token
CleanUpTime: 5m
bot_poll: 10s
smb: # Настройки SMB (опционально)
adress: //server/share
user: username
password: password
domain: DOMAIN
smtp:
host: smtp.yandex.ru
port: 465
email: email
password: passwordАльтернативный способ: Укажите путь к конфигу через переменную окружения:
export CONFIG_PATH=./config/local.yaml# Сборка
make build
# Запуск (автоматически соберет и запустит)
make runПримечание: В Makefile можно изменить параметр CONFIG_NAME для указания нужного конфигурационного файла.
# Запуск всех сервисов (бот, PostgreSQL, Samba)
docker-compose up -d
# Просмотр логов
docker-compose logs -f bottst
# Остановка
docker-compose downDocker Compose автоматически:
- Создаст и инициализирует базу данных PostgreSQL
- Применит миграции из
migrations/init.sql/ - Запустит бота с конфигурацией из
config/local_docker.yaml - Настроит Samba сервер для тестирования (опционально)
# Сборка образа
docker build -t support_bot .
# Запуск контейнера
docker run -d \
--name support_bot \
-e CONFIG_PATH=/bot/config/local.yaml \
-v $(pwd)/config:/bot/config:ro \
support_botsupport_bot/
├── cmd/bot/ # Точка входа приложения
├── internal/
│ ├── app/ # Логика приложения
│ ├── config/ # Загрузка конфигурации
│ ├── models/ # Модели данных
│ ├── postgres/ # Работа с БД
│ ├── tg_bot/ # Telegram bot handlers
│ ├── collector/ # Сбор данных
│ ├── evaluator/ # Обработка выражений
│ ├── exporter/ # Экспорт отчетов
│ ├── generator/ # Генерация отчетов
│ ├── orchestrator/ # Оркестрация процессов
│ └── sheduler/ # Планировщик задач
├── config/ # Конфигурационные файлы
├── migrations/ # SQL миграции
└── docker-compose.yaml # Docker Compose конфигурация
make buildПараметры сборки включают:
- Версию из Git тега
- Commit hash
- Время сборки
make cleanПроект распространяется "как есть" без каких-либо гарантий.