Send UTC time

This commit is contained in:
0880
2026-01-18 19:06:57 +03:30
parent 56a01ac5a7
commit 460255db9e

28
app.py
View File

@@ -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(),
}