fix critical bugs

This commit is contained in:
vrubel 2026-02-05 01:38:33 +03:00
parent 0de0deb14f
commit 20f96d0e0a
3 changed files with 11 additions and 9 deletions

View file

@ -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:

View file

@ -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 формат

View file

@ -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"Игры за указанный период не найдены",