fix critical bugs
This commit is contained in:
parent
0de0deb14f
commit
20f96d0e0a
3 changed files with 11 additions and 9 deletions
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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 формат
|
||||
|
|
|
|||
|
|
@ -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"Игры за указанный период не найдены",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue