From 460255db9ecf979a6e90d7b2cfcdf98ba166bc73 Mon Sep 17 00:00:00 2001 From: 0880 <98263509+0880880@users.noreply.github.com> Date: Sun, 18 Jan 2026 19:06:57 +0330 Subject: [PATCH] Send UTC time --- app.py | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/app.py b/app.py index 5043db5..78b9317 100644 --- a/app.py +++ b/app.py @@ -2,7 +2,7 @@ import asyncio import json import uuid from collections.abc import Iterator -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone from enum import Enum from itertools import product from pathlib import Path @@ -166,13 +166,13 @@ class Room: self.turn = Color.WHITE self.board = Board() self.players = [] - self.last_move = datetime.now() + self.last_move = datetime.now(timezone.utc) self.game_start = None self.state = State.NOT_FINISHED def start(self): - self.last_move = datetime.now() - self.game_start = datetime.now() + self.last_move = datetime.now(timezone.utc) + self.game_start = datetime.now(timezone.utc) def add_player(self) -> None | tuple[str, Color]: np: int = len(self.players) @@ -218,12 +218,25 @@ async def join(request, room_id): "turn": room.turn.value, "board": room.board.serialize(), "ready": len(room.players) == 2, + "state": room.state.value, + "start_time": ( + room.game_start or datetime.now(timezone.utc) + ).isoformat(), }, ) else: return JSONResponse( request, - {"code": "FULL", "error": "Room Full", "board": room.board.serialize()}, + { + "code": "FULL", + "error": "Room Full", + "board": room.board.serialize(), + "turn": room.turn.value, + "state": room.state.value, + "start_time": ( + room.game_start or datetime.now(timezone.utc) + ).isoformat(), + }, ) @@ -445,11 +458,11 @@ async def move(request: Request, room_id): async def poll(request, room_id): for key in rooms: room = rooms[key] - if (datetime.now() - room.last_move) >= timedelta(hours=24): + if (datetime.now(timezone.utc) - room.last_move) >= timedelta(hours=24): del rooms[key] if ( room.game_start - and (datetime.now() - room.game_start) >= timedelta(minutes=30) + and (datetime.now(timezone.utc) - room.game_start) >= timedelta(minutes=30) and room.state == State.NOT_FINISHED ): room.state = State.TIE @@ -462,6 +475,7 @@ async def poll(request, room_id): "board": room.board.serialize(), "ready": len(room.players) == 2, "state": room.state.value, + "start_time": (room.game_start or datetime.now(timezone.utc)).isoformat(), }