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

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