add per-game accuracy and outcome table to stats/notifications
All checks were successful
CI/CD Pipeline / build-and-deploy (push) Successful in 31s
All checks were successful
CI/CD Pipeline / build-and-deploy (push) Successful in 31s
Games-of-period responses can now include a per-game breakdown
(include_games) with Lichess post-analysis accuracy, plus which side
the tracked player was on and their rating change for that game.
- lichess_client.py requests accuracy=true from Lichess; stats_service
computes per-mode average accuracy and builds GameRow entries
(tracked_is_white, tracked_rating_diff) for blitz/rapid/classical
- /games/{username}/period gained an include_games query param
- formatters.py renders a column-aligned monospace table per game:
outcome circle (win/loss/draw relative to the tracked player),
rating change, accuracy, names/ratings, result — for today/yesterday
and periodic notifications; week keeps an aggregate accuracy line
- usernames are Markdown-escaped before formatting since messages are
now sent with parse_mode='Markdown'
This commit is contained in:
parent
4a783225af
commit
d479e14bf9
8 changed files with 364 additions and 75 deletions
|
|
@ -98,7 +98,7 @@ class LichessAPI:
|
|||
logger.error(f"Error getting week stats: {e}")
|
||||
return None
|
||||
|
||||
async def get_games_period(self, username: str, since: int, until: int, rated_only: Optional[bool] = None) -> Optional[Dict[str, Any]]:
|
||||
async def get_games_period(self, username: str, since: int, until: int, rated_only: Optional[bool] = None, include_games: bool = False) -> Optional[Dict[str, Any]]:
|
||||
"""Get games for a specific period"""
|
||||
await self.rate_limiter.wait_if_needed()
|
||||
try:
|
||||
|
|
@ -106,6 +106,8 @@ class LichessAPI:
|
|||
params = {"since": since, "until": until}
|
||||
if rated_only is not None:
|
||||
params["rated_only"] = "true" if rated_only else "false"
|
||||
if include_games:
|
||||
params["include_games"] = "true"
|
||||
logger.info(f"🔍 LichessAPI.get_games_period: URL={url}, params={params}")
|
||||
|
||||
async with aiohttp.ClientSession() as session:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue