Система мониторинга Telegram-ботов, которая автоматически проверяет их доступность, отправляя команду /start и измеряя время отклика.
- 🔄 Автоматическая проверка списка ботов каждый час
- ⚡ Измерение latency (время отклика)
- 🔍 Двухэтапная проверка: сначала
/start, затем дополнительные команды для выявления скрытых ошибок - 🚨 Алерты в Telegram при недоступности ботов
- 📊 Логирование всех проверок
- 🔧 Гибкая настройка через переменные окружения
- Перейдите на my.telegram.org
- Войдите в свой аккаунт Telegram
- Создайте новое приложение в разделе "API development tools"
- Сохраните
API_IDиAPI_HASH
# Клонируйте репозиторий
git clone <your-repo>
cd Health-Checker
# Установите зависимости
pip install -r requirements.txt
# Создайте файл конфигурации
cp .env.example .envTG_API_ID=ваш_api_id
TG_API_HASH=ваш_api_hash
SESSION_NAME=hc_userbot
BOTS_FILE=bots.txt
# Опционально для алертов:
ALERT_TOKEN=токен_бота_для_алертов
ALERT_CHAT=id_чата_для_алертов
# Углубленная проверка (по умолчанию включена):
DEEP_CHECK=true # или false для отключенияОтредактируйте файл bots.txt, добавив ботов для мониторинга:
@YourBot1
@YourBot2
SomeBotWithoutAt
python -m pingbot.runnerВывод:
[12:05:01] @ShopBot OK 320 ms
[12:05:01] @WeatherBot FAIL timeout
[12:05:01] @WidgetSupportBot OK 156 ms
# С интервалом 60 минут (по умолчанию)
python -m pingbot.scheduler
# С кастомным интервалом (в минутах)
python -m pingbot.scheduler 30Добавьте в crontab для проверки каждый час:
crontab -e0 * * * * cd /path/to/Health-Checker && /usr/bin/python3 -m pingbot.runner >> /var/log/ping.log 2>&1
Для получения уведомлений о недоступности ботов:
- Создайте бота через @BotFather
- Получите токен бота
- Добавьте бота в чат/канал и получите Chat ID
- Укажите
ALERT_TOKENиALERT_CHATв.env
.
├── pingbot/
│ ├── __init__.py # Версия пакета
│ ├── config.py # Загрузка конфигурации
│ ├── models.py # Модели данных
│ ├── pinger.py # Логика проверки ботов
│ ├── runner.py # Основной runner
│ └── scheduler.py # Планировщик задач
├── bots.txt # Список ботов
├── .env.example # Пример конфигурации
├── requirements.txt # Зависимости
└── README.md # Документация
OK- бот отвечает нормальноtimeout- бот не ответил в течение 3 секундblocked- бот заблокировал пользователяflood_wait- слишком частые запросы (Telegram ограничения)service_error- бот ответил с ошибкой сервиса ("Произошла ошибка, попробуйте позже")error- другая ошибка
pytest tests/- Python 3.8+
- Telegram аккаунт для user-бота
- API ключи Telegram
MIT License
Новая функция: Telegram бот с кнопками для получения статистики!
🔍 Главное меню с кнопками:
- 📊 Текущая статистика - общие данные мониторинга
- 🔄 Запустить проверку - мгновенная проверка всех ботов
- 📈 История проверок - последние 10 проверок
- 🤖 Список ботов - статус всех отслеживаемых ботов
/start- Главное меню с кнопками/stats- Быстрая статистика/check- Запуск проверки ботов
# Запуск интерактивного бота
source venv/bin/activate && python -m pingbot.bot
# Для работы бота требуется ALERT_TOKEN в .env файле- 🕐 Время последней проверки
- 📈 Общее количество проверок
- ✅ Процент успешности
- ⚡ Средняя задержка ответа
- 📊 Статус каждого бота с латентностью
- 📈 История проверок с временными метками
📊 СТАТИСТИКА МОНИТОРИНГА
🕐 Последняя проверка: 2024-06-24 01:35:00
📈 Всего проверок: 15
✅ Успешность: 66.7%
⚡ Средняя задержка: 285ms
📊 Статус ботов:
✅ @BotFather - 292ms
✅ @userinfobot - 278ms
❌ @SomeBot - timeout
Бот автоматически обновляет статистику при каждой проверке и сохраняет историю!