From 20f96d0e0abd83d34a9e6d92cc41075e39cf4747 Mon Sep 17 00:00:00 2001 From: vrubel Date: Thu, 5 Feb 2026 01:38:33 +0300 Subject: [PATCH] fix critical bugs --- LichessClientTG_bot/config.py | 4 ++-- LichessWebServices/lichess_client.py | 8 +++----- LichessWebServices/stats_service.py | 8 ++++++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/LichessClientTG_bot/config.py b/LichessClientTG_bot/config.py index f3f17f3..bec7e2c 100644 --- a/LichessClientTG_bot/config.py +++ b/LichessClientTG_bot/config.py @@ -3,7 +3,7 @@ from dotenv import load_dotenv load_dotenv() -IS_PROD = False +IS_PROD = True # Telegram Bot Configuration (Production) TELEGRAM_BOT_TOKEN_PROD = "8241474807:AAH684LTY93aXRou4-LtqU5-p8LuEjzYn8U" @@ -28,7 +28,7 @@ else: LICHESS_API_BASE_URL = "https://lichess.org/api" LICHESS_STATS_API_BASE_URL = "http://localhost:8001" # For Docker container access # Минимальная задержка (сек) между запросами к Lichess в очереди мониторинга (избежание бана) -LICHESS_REQUEST_QUEUE_MIN_DELAY = 5.0 +LICHESS_REQUEST_QUEUE_MIN_DELAY = 4.0 # Database Configuration def _resolve_database_path() -> str: diff --git a/LichessWebServices/lichess_client.py b/LichessWebServices/lichess_client.py index 7d2e698..49e3a59 100644 --- a/LichessWebServices/lichess_client.py +++ b/LichessWebServices/lichess_client.py @@ -121,17 +121,15 @@ class LichessClient: # Формируем URL для получения игр пользователя url = f"{self.base_url}/games/user/{username}" - # Параметры запроса + # Параметры запроса. Параметр 'rated' в API Lichess не передаём: + # при rated=true API часто возвращает 0 игр даже для рейтинговых партий. + # Фильтрация по рейтинговости делается в stats_service после получения списка. params = { 'since': since_ms, # Начало периода 'until': until_ms, # Конец периода 'max': 1000 # Максимум игр за запрос (лимит Lichess API) } - # Добавляем фильтр по рейтинговым играм, если нужно - if rated_only: - params['rated'] = 'true' - # Заголовки для получения NDJSON формата headers = { 'Accept': 'application/x-ndjson' # Запрашиваем NDJSON формат diff --git a/LichessWebServices/stats_service.py b/LichessWebServices/stats_service.py index b699d5f..05a66a3 100644 --- a/LichessWebServices/stats_service.py +++ b/LichessWebServices/stats_service.py @@ -648,8 +648,8 @@ class StatsService: since_ms = since_timestamp * 1000 until_ms = until_timestamp * 1000 - # Получаем игры - games = await self.lichess_client.get_games_of_period(username, since_ms, until_ms, rated_only) + # Получаем игры (без фильтра rated в запросе к Lichess — см. lichess_client) + games = await self.lichess_client.get_games_of_period(username, since_ms, until_ms, rated_only=False) if games is None: return GamesOfPeriodResponse( @@ -660,6 +660,10 @@ class StatsService: games_count=0 ) + # Фильтр по рейтинговости на нашей стороне (API Lichess с param rated даёт неверный результат) + if rated_only: + games = [g for g in games if g.get('rated') is True] + if not games: return GamesOfPeriodResponse( message=f"Игры за указанный период не найдены",