|
All checks were successful
CI/CD Pipeline / build-and-deploy (push) Successful in 38s
Errors from Lichess (timeouts/5xx/invalid tokens) were being disguised as "no activity" (HTTP 200, games_count/puzzles_in_period=0), causing the bot to silently advance its checkpoint past real, undetected activity. Puzzle-fetch failures weren't counted as errors at all, and the periodic task died permanently after 5 consecutive errors with no way to recover short of a manual restart. /setperiod also unconditionally reset the checkpoint, dropping the window between the last check and the command. - API now returns success=false/502 on real errors instead of masking them as zero activity (models.py, stats_service.py, main.py) - Puzzle-fetch errors are now treated the same as game-fetch errors: retry the same window instead of reporting "no puzzles" - Notification delivery failures no longer silently advance the checkpoint - Replaced the hard 5-error kill switch with capped backoff that keeps retrying indefinitely, plus an admin-bot notification if a player's monitoring has been failing for a prolonged period (~2h+) - /setperiod only clears the checkpoint when disabling notifications, preserving continuity when a period is just changed Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| admin_bot.py | ||
| bot.py | ||
| config.py | ||
| database.py | ||
| Dockerfile | ||
| Dockerfile.admin | ||
| formatters.py | ||
| helpEN.jpeg | ||
| helpRU.jpeg | ||
| i18n.py | ||
| lichess_api.py | ||
| message_counters.py | ||
| migrate_tokens.py | ||
| rate_limiter.py | ||
| README.md | ||
| request_queue.py | ||
| requirements.txt | ||
| run.sh | ||
| version.py | ||
| view_db.py | ||
Lichess Telegram Bot
Телеграм бот для получения статистики игроков Lichess с использованием вашего веб-сервиса.
Возможности
- Добавление пользователей: Добавление игроков Lichess с токеном или без
- Выбор активного игрока: Глобальный выбор активного игрока для всех чатов
- Статистика: Получение статистики за сегодня, вчера и неделю
- Периодические уведомления: Настройка автоматических уведомлений о активности игрока
Команды
/start- Начать работу с ботом/adduser- Добавить нового игрока Lichess/getgamers- Выбрать активного игрока/today- Статистика за сегодня/yesterday- Статистика за вчера/week- Статистика за неделю/setperiod- Настроить периодические уведомления
Установка и запуск
С помощью Docker (рекомендуется)
-
Убедитесь, что ваш Lichess API сервис запущен на
http://localhost:8001 -
Запустите бота:
docker-compose up -d
- Проверьте логи:
docker-compose logs -f lichess-bot
Локальная установка
- Установите зависимости:
pip install -r requirements.txt
- Скопируйте файл конфигурации:
cp .env.example .env
- Запустите бота:
python bot.py
Конфигурация
Основные настройки находятся в файле config.py:
TELEGRAM_BOT_TOKEN- Токен вашего телеграм ботаLICHESS_STATS_API_BASE_URL- URL вашего веб-сервиса (по умолчаниюhttp://localhost:8001)PERIOD_OPTIONS- Доступные периоды для уведомленийPOLL_INTERVAL- Интервал опроса Telegram API (1.0 секунда)POLL_TIMEOUT- Таймаут для Long Polling (30 секунд)DROP_PENDING_UPDATES- Игнорировать накопившиеся обновления при запускеALLOWED_UPDATES- Типы обновлений для обработки
Структура проекта
├── bot.py # Основной файл бота
├── database.py # Работа с базой данных SQLite
├── lichess_api.py # API клиент для Lichess и вашего сервиса
├── formatters.py # Форматирование ответов
├── config.py # Конфигурация
├── requirements.txt # Python зависимости
├── Dockerfile # Docker образ
├── docker-compose.yml # Docker Compose конфигурация
└── README.md # Документация
API Endpoints
Бот использует следующие endpoints вашего сервиса:
GET /today/{username}- Статистика за сегодняGET /yesterday/{username}- Статистика за вчераGET /week/{username}- Статистика за неделюGET /games/{username}/period- Игры за периодGET /puzzle/period- Задачи за период (требует токен)
База данных
Используется SQLite база данных с таблицами:
gamers- Игроки Lichesschat_active_gamers- Активные игроки по чатам (не используется для глобального режима)
Логирование
Бот ведет подробные логи всех операций. В Docker контейнере логи можно просмотреть командой:
docker-compose logs -f lichess-bot
Мониторинг
Docker Compose включает health checks для мониторинга состояния сервисов.
Поддержка
При возникновении проблем проверьте:
- Запущен ли ваш Lichess API сервис на порту 8001
- Правильность токена телеграм бота
- Логи контейнера на наличие ошибок