Telegram-бот для автоматического отслеживания новых релизов macOS (Sequoia, Sonoma, Ventura и др.) с сайта Mr. Macintosh.
graph LR
A[🤖 Бот] -->|Каждый час| B[🔍 Парсинг сайта]
B --> C{Новый релиз?}
C -->|Да| D[💾 Сохранение в БД]
C -->|Нет| A
D --> E[📢 Уведомление]
E --> F[👤 Пользователи]
E --> G[📱 Каналы]
- 🔍 Автоматический мониторинг нескольких версий macOS (Tahoe, Sequoia, Sonoma и др.)
- 🔔 Мгновенные уведомления о новых версиях (Public и Beta)
- 📊 Детальная информация о каждом релизе (версия, build, ссылка на скачивание)
- 🖥️ Поддержка мониторинга нескольких URL одновременно
- 📢 Динамическое управление уведомлениями через бота (без редактирования конфига)
- 📤 Команда
/broadcastдля отправки релизов во все каналы - 🛡️ Whitelist пользователей для защиты от несанкционированного доступа
- 💾 SQLite база данных для хранения истории релизов
- 🐳 Docker контейнер для удобного развертывания
- Python 3.10+
- Telegram бот (создается через @BotFather)
- Docker и Docker Compose (опционально)
- Напишите @BotFather в Telegram
- Отправьте команду
/newbot - Следуйте инструкциям и получите токен бота
- Сохраните токен - он понадобится для настройки
- Напишите @userinfobot
- Бот отправит вам ваш ID
- Сохраните этот ID
Если хотите отправлять уведомления в канал:
- Создайте канал в Telegram
- Добавьте вашего бота в канал как администратора с правом отправки сообщений
- Чтобы узнать ID канала:
- Перейдите в веб-версию Telegram
- Откройте канал
- ID канала будет в URL (например:
-1001234567890)
# Клонируйте репозиторий
git clone https://github.com/nimbo78/macos_update_checker.git
cd macos_update_checker
# Создайте конфигурационный файл
cp config.py.example config.py
# Отредактируйте config.py, укажите:
# - BOT_TOKEN
# - NOTIFICATION_TARGETS (ваш ID и/или ID канала)
# - ALLOWED_USER_IDS (ваш ID)
# - ADMIN_USER_IDS (ваш ID)
# Запустите с помощью Docker Compose
docker-compose up -d
# Просмотр логов
docker-compose logs -f# Клонируйте репозиторий
git clone https://github.com/nimbo78/macos_update_checker.git
cd macos_update_checker
# Создайте виртуальное окружение
python -m venv venv
source venv/bin/activate # На Windows: venv\Scripts\activate
# Установите зависимости
pip install -r requirements.txt
# Создайте конфигурационный файл
cp config.py.example config.py
# Отредактируйте config.py
# Запустите бота
python bot.pyВсе настройки находятся в файле config.py:
# Токен бота
BOT_TOKEN = "your_bot_token"
# Куда отправлять уведомления
NOTIFICATION_TARGETS = [
123456789, # Личный чат
-1001234567890, # Канал
]
# Кто может использовать команды
ALLOWED_USER_IDS = [
123456789,
]
# Администраторы
ADMIN_USER_IDS = [
123456789,
]
# Интервал проверки (в секундах)
CHECK_INTERVAL = 3600 # 1 час
# URL страниц для мониторинга разных версий macOS
# Ключ - название версии (отображается в уведомлениях)
# Значение - URL страницы для парсинга
MACOS_URLS = {
"Tahoe": "https://mrmacintosh.com/macos-tahoe-full-installer-database-download-directly-from-apple/",
"Sequoia": "https://mrmacintosh.com/macos-sequoia-full-installer-database-download-directly-from-apple/",
# "Sonoma": "https://mrmacintosh.com/macos-sonoma-full-installer-database-download-directly-from-apple/",
}Бот поддерживает мониторинг нескольких версий macOS одновременно. Просто добавьте нужные URL в словарь MACOS_URLS:
MACOS_URLS = {
"Sequoia": "https://mrmacintosh.com/macos-sequoia-full-installer-database-download-directly-from-apple/",
"Sonoma": "https://mrmacintosh.com/macos-sonoma-full-installer-database-download-directly-from-apple/",
"Ventura": "https://mrmacintosh.com/macos-ventura-full-installer-database-download-directly-from-apple/",
}Для обратной совместимости также поддерживается старый формат с одним URL:
MACOS_URL = "https://mrmacintosh.com/macos-sequoia-full-installer-database-download-directly-from-apple/"| Команда | Описание | Доступ |
|---|---|---|
/start |
Приветствие и список команд | Все |
/help |
Справка по использованию | Все |
/status |
Статус бота и последняя проверка | Все |
/latest |
Последние релизы всех версий macOS (Public и Beta) | Все |
/myid |
Узнать свой Telegram ID | Все |
| Команда | Описание |
|---|---|
/check |
Принудительная проверка обновлений |
/broadcast |
Отправить последние релизы во все каналы/чаты |
/targets |
Показать все цели уведомлений |
/addtarget ID [имя] |
Добавить цель уведомлений (канал или чат) |
/removetarget ID |
Удалить цель уведомлений |
/exporttargets |
Экспорт таргетов для вставки в config.py |
Теперь можно добавлять и удалять цели уведомлений прямо через бота, без редактирования конфига и пересборки контейнера:
/addtarget -1001234567890 Мой канал # Добавить канал
/addtarget 123456789 Личный чат # Добавить пользователя
/removetarget -1001234567890 # Удалить цель
/targets # Посмотреть все цели
/exporttargets # Экспорт для config.py
Особенности:
- Динамические цели хранятся в SQLite базе данных
- Сохраняются при перезапуске/пересборке контейнера (volume
./data) - Работают параллельно с целями из
config.py /exporttargetsгенерирует код для вставки в config.py
macos_update_checker/
├── bot.py # Основной файл бота
├── scraper.py # Парсер страницы
├── database.py # Работа с базой данных
├── config.py.example # Пример конфигурации
├── requirements.txt # Python зависимости
├── Dockerfile # Docker образ
├── docker-compose.yml # Docker Compose конфигурация
├── .gitignore # Git ignore
└── README.md # Документация
Логи сохраняются в файл bot.log и выводятся в консоль.
# Docker
docker-compose logs -f
# Последние 50 строк
docker-compose logs --tail=50# Docker
docker-compose down
# Без Docker
# Нажмите Ctrl+C в терминале📖 Подробная инструкция: См. UPDATE.md
# Быстрое обновление (Docker)
cd macos_update_checker && git pull && docker-compose down && docker-compose build --no-cache && docker-compose up -d
# Быстрое обновление (Python)
cd macos_update_checker && git pull && source venv/bin/activate && pip install -r requirements.txt --upgrade- Проверьте, что ваш ID добавлен в
ALLOWED_USER_IDS - Убедитесь, что бот запущен (
docker-compose ps) - Проверьте логи на наличие ошибок
- Убедитесь, что бот добавлен в канал как администратор
- Проверьте правильность ID канала в
NOTIFICATION_TARGETS - ID канала должен начинаться с
-100
- Проверьте доступность сайта mrmacintosh.com
- Возможно, изменилась структура страницы - нужно обновить парсер
⚠️ Не коммитьте файлconfig.pyс реальными токенами!- ✅ Используйте
.gitignoreдля исключения чувствительных данных - 🔄 Регулярно обновляйте зависимости для устранения уязвимостей
Apache License 2.0
При возникновении проблем создайте Issue в репозитории проекта.
Создано для мониторинга релизов macOS 🍎