Телеграм-бот для мониторинга коммитов GitHub репозиториев с автоматическими уведомлениями и управлением через Docker.
Бот позволяет администраторам отслеживать последние коммиты в указанных GitHub репозиториях, получать автоматические уведомления о новых коммитах и управлять списком отслеживаемых репозиториев через удобные команды Telegram.
- 🔔 Автоматические уведомления - Фоновая проверка новых коммитов каждые 2 минуты
- 📊 Просмотр коммитов - Получение последних коммитов для отдельных репозиториев или всех сразу
- ➕ Управление репозиториями - Добавление/удаление репозиториев через команды
- 📱 Длинные сообщения - Автоматическое разбиение длинных текстов на части
- 🐳 Docker-контейнеризация - Готовые конфигурации для быстрого развертывания
- 💾 Резервное копирование - Автоматическое создание бэкапов базы данных при обновлении
- Python 3.11 - Основной язык программирования
- aiogram 3.22 - Асинхронный фреймворк для Telegram Bot API
- SQLite + aiosqlite - База данных для хранения репозиториев
- Docker + Docker Compose - Контейнеризация и оркестрация
- GitHub API - Получение информации о коммитах
- Клонируйте репозиторий:
git clone https://github.com/Baggrisha/GitHub_allert
cd GitHub_allert- Настройте переменные окружения:
Создайте файл
.env:
BOT_TOKEN=your_telegram_bot_token
GITHUB_ACCESS_TOKEN=your_github_access_token
ADMIN_USER_ID=123456789,987654321
COMMIT_COUNT=5
TZ=Europe/Moscow- Запустите бота:
docker compose up -d --build- Установите зависимости:
pip install -r requirements.txt-
Настройте переменные окружения (аналогично Docker установке)
-
Запустите бота:
python -m app.main| Переменная | Описание | Обязательная |
|---|---|---|
BOT_TOKEN |
Токен Telegram бота | ✅ |
GITHUB_ACCESS_TOKEN |
Personal Access Token GitHub | ✅ |
ADMIN_USER_ID |
ID администраторов (через запятую) | ✅ |
COMMIT_COUNT |
Количество коммитов по умолчанию | ❌ (по умолчанию: 5) |
TZ |
Часовой пояс | ❌ (по умолчанию: Europe/Moscow) |
DB_PATH |
Путь к файлу базы данных | ❌ (по умолчанию: /app/data/bot.db) |
services:
bot:
build: .
env_file: .env
volumes:
- ./data:/app/data # Данные и бэкапы
restart: unless-stopped| Команда | Описание | Пример |
|---|---|---|
/last_commit |
Последние коммиты конкретного репозитория | /last_commit owner/repo 3 |
/last_commits |
Последние коммиты всех репозиториев | /last_commits 5 |
/add_repo |
Добавить репозиторий в список | /add_repo owner/repo |
/remove_repo |
Удалить репозиторий из списка | /remove_repo owner/repo |
/my_repos |
Список всех отслеживаемых репозиториев | /my_repos |
Добавление репозитория:
/add_repo https://github.com/owner/repo
или
/add_repo owner/repo
Просмотр коммитов:
/last_commit aiogram/aiogram 3
Автоматические уведомления: Бот автоматически проверяет новые коммиты каждые 2 минуты и отправляет уведомления администраторам.
Для обновления бота используйте предоставленный скрипт:
./rebuild_with_backup.shСкрипт автоматически:
- Создает бэкап текущей базы данных
- Останавливает контейнеры
- Обновляет код из Git
- Пересобирает образы
- Запускает обновленные контейнеры
- Восстанавливает базу данных из бэкапа
Tip
Скрипт сохраняет все данные и подписки при обновлении!
GitHub_allert/
├── app/
│ ├── main.py # Запуск бота
│ ├── db.py # Работа с базой данных
│ ├── main_handler.py # Обработчик
│ ├── config.py # Настройки и токены
│ ├── bot.py # Инициализация бота
│ └── middlewares.py # Middlewares
├── data/ # SQLite база данных
├── docker-compose.yml # Docker Compose конфигурация
├── Dockerfile # Docker образ
└── requirements.txt # Python зависимости
- Database - Асинхронный фасад для работы с SQLite [9]
- Settings - Конфигурация на основе Pydantic [8]
- InjectDependenciesMiddleware - Внедрение зависимостей в обработчики [11]
- send_long_message - Отправка длинных сообщений частями [2]
Бот не запускается:
- Проверьте корректность
BOT_TOKEN - Убедитесь, что
GITHUB_ACCESS_TOKENимеет необходимые права
Не приходят уведомления:
- Проверьте ID администратора в
ADMIN_USER_ID - Убедитесь, что репозитории добавлены через
/add_repo
Ошибки GitHub API:
- Обновите GitHub Access Token
- Проверьте доступ к репозиториям
Бот выводит информацию о ошибках в консоль. Для Docker используйте:
docker logs githubbotПроект распространяется под лицензией MIT.
Если у вас возникли вопросы или проблемы:
- Проверьте раздел Troubleshooting
- Создайте issue в репозитории
- Убедитесь, что предоставили достаточную информацию для воспроизведения проблемы
Примечание: Этот бот предназначен для административного использования и требует настройки прав доступа через переменные окружения.