Skip to content

Telegram-бот, предназначенный для отслеживания изменений в GitHub-репозиториях и отправки уведомлений о новых коммитах. Бот поддерживает добавление и удаление репозиториев, форматирование коммит-сообщений, работу с прямыми GitHub-URL и регулярные проверки обновлений.

License

Notifications You must be signed in to change notification settings

Baggrisha/GitHub_allert

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Commits Monitor Bot

Python aiogram Docker SQLite

Телеграм-бот для мониторинга коммитов GitHub репозиториев с автоматическими уведомлениями и управлением через Docker.

📋 Описание

Бот позволяет администраторам отслеживать последние коммиты в указанных GitHub репозиториях, получать автоматические уведомления о новых коммитах и управлять списком отслеживаемых репозиториев через удобные команды Telegram.

⚡ Ключевые функции

  • 🔔 Автоматические уведомления - Фоновая проверка новых коммитов каждые 2 минуты
  • 📊 Просмотр коммитов - Получение последних коммитов для отдельных репозиториев или всех сразу
  • Управление репозиториями - Добавление/удаление репозиториев через команды
  • 📱 Длинные сообщения - Автоматическое разбиение длинных текстов на части
  • 🐳 Docker-контейнеризация - Готовые конфигурации для быстрого развертывания
  • 💾 Резервное копирование - Автоматическое создание бэкапов базы данных при обновлении

🛠 Технологии

  • Python 3.11 - Основной язык программирования
  • aiogram 3.22 - Асинхронный фреймворк для Telegram Bot API
  • SQLite + aiosqlite - База данных для хранения репозиториев
  • Docker + Docker Compose - Контейнеризация и оркестрация
  • GitHub API - Получение информации о коммитах

🚀 Быстрый старт

Docker установка (рекомендуется)

  1. Клонируйте репозиторий:
git clone https://github.com/Baggrisha/GitHub_allert
cd GitHub_allert
  1. Настройте переменные окружения: Создайте файл .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
  1. Запустите бота:
docker compose up -d --build

Ручная установка (Python)

  1. Установите зависимости:
pip install -r requirements.txt
  1. Настройте переменные окружения (аналогично Docker установке)

  2. Запустите бота:

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)

Docker Compose структура

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]

🐛 Troubleshooting

Частые проблемы

Бот не запускается:

  • Проверьте корректность BOT_TOKEN
  • Убедитесь, что GITHUB_ACCESS_TOKEN имеет необходимые права

Не приходят уведомления:

  • Проверьте ID администратора в ADMIN_USER_ID
  • Убедитесь, что репозитории добавлены через /add_repo

Ошибки GitHub API:

  • Обновите GitHub Access Token
  • Проверьте доступ к репозиториям

Логирование

Бот выводит информацию о ошибках в консоль. Для Docker используйте:

docker logs githubbot

📄 Лицензия

Проект распространяется под лицензией MIT.

🤝 Поддержка

Если у вас возникли вопросы или проблемы:

  1. Проверьте раздел Troubleshooting
  2. Создайте issue в репозитории
  3. Убедитесь, что предоставили достаточную информацию для воспроизведения проблемы

Примечание: Этот бот предназначен для административного использования и требует настройки прав доступа через переменные окружения.

About

Telegram-бот, предназначенный для отслеживания изменений в GitHub-репозиториях и отправки уведомлений о новых коммитах. Бот поддерживает добавление и удаление репозиториев, форматирование коммит-сообщений, работу с прямыми GitHub-URL и регулярные проверки обновлений.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published