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()
|
load_dotenv()
|
||||||
|
|
||||||
IS_PROD = False
|
IS_PROD = True
|
||||||
|
|
||||||
# Telegram Bot Configuration (Production)
|
# Telegram Bot Configuration (Production)
|
||||||
TELEGRAM_BOT_TOKEN_PROD = "8241474807:AAH684LTY93aXRou4-LtqU5-p8LuEjzYn8U"
|
TELEGRAM_BOT_TOKEN_PROD = "8241474807:AAH684LTY93aXRou4-LtqU5-p8LuEjzYn8U"
|
||||||
|
|
@ -28,7 +28,7 @@ else:
|
||||||
LICHESS_API_BASE_URL = "https://lichess.org/api"
|
LICHESS_API_BASE_URL = "https://lichess.org/api"
|
||||||
LICHESS_STATS_API_BASE_URL = "http://localhost:8001" # For Docker container access
|
LICHESS_STATS_API_BASE_URL = "http://localhost:8001" # For Docker container access
|
||||||
# Минимальная задержка (сек) между запросами к Lichess в очереди мониторинга (избежание бана)
|
# Минимальная задержка (сек) между запросами к Lichess в очереди мониторинга (избежание бана)
|
||||||
LICHESS_REQUEST_QUEUE_MIN_DELAY = 5.0
|
LICHESS_REQUEST_QUEUE_MIN_DELAY = 4.0
|
||||||
|
|
||||||
# Database Configuration
|
# Database Configuration
|
||||||
def _resolve_database_path() -> str:
|
def _resolve_database_path() -> str:
|
||||||
|
|
|
||||||
|
|
@ -121,17 +121,15 @@ class LichessClient:
|
||||||
# Формируем URL для получения игр пользователя
|
# Формируем URL для получения игр пользователя
|
||||||
url = f"{self.base_url}/games/user/{username}"
|
url = f"{self.base_url}/games/user/{username}"
|
||||||
|
|
||||||
# Параметры запроса
|
# Параметры запроса. Параметр 'rated' в API Lichess не передаём:
|
||||||
|
# при rated=true API часто возвращает 0 игр даже для рейтинговых партий.
|
||||||
|
# Фильтрация по рейтинговости делается в stats_service после получения списка.
|
||||||
params = {
|
params = {
|
||||||
'since': since_ms, # Начало периода
|
'since': since_ms, # Начало периода
|
||||||
'until': until_ms, # Конец периода
|
'until': until_ms, # Конец периода
|
||||||
'max': 1000 # Максимум игр за запрос (лимит Lichess API)
|
'max': 1000 # Максимум игр за запрос (лимит Lichess API)
|
||||||
}
|
}
|
||||||
|
|
||||||
# Добавляем фильтр по рейтинговым играм, если нужно
|
|
||||||
if rated_only:
|
|
||||||
params['rated'] = 'true'
|
|
||||||
|
|
||||||
# Заголовки для получения NDJSON формата
|
# Заголовки для получения NDJSON формата
|
||||||
headers = {
|
headers = {
|
||||||
'Accept': 'application/x-ndjson' # Запрашиваем NDJSON формат
|
'Accept': 'application/x-ndjson' # Запрашиваем NDJSON формат
|
||||||
|
|
|
||||||
|
|
@ -648,8 +648,8 @@ class StatsService:
|
||||||
since_ms = since_timestamp * 1000
|
since_ms = since_timestamp * 1000
|
||||||
until_ms = until_timestamp * 1000
|
until_ms = until_timestamp * 1000
|
||||||
|
|
||||||
# Получаем игры
|
# Получаем игры (без фильтра rated в запросе к Lichess — см. lichess_client)
|
||||||
games = await self.lichess_client.get_games_of_period(username, since_ms, until_ms, rated_only)
|
games = await self.lichess_client.get_games_of_period(username, since_ms, until_ms, rated_only=False)
|
||||||
|
|
||||||
if games is None:
|
if games is None:
|
||||||
return GamesOfPeriodResponse(
|
return GamesOfPeriodResponse(
|
||||||
|
|
@ -660,6 +660,10 @@ class StatsService:
|
||||||
games_count=0
|
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:
|
if not games:
|
||||||
return GamesOfPeriodResponse(
|
return GamesOfPeriodResponse(
|
||||||
message=f"Игры за указанный период не найдены",
|
message=f"Игры за указанный период не найдены",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue