initial commit

This commit is contained in:
2025-12-14 22:45:11 +02:00
commit cf1801bff4
11 changed files with 493 additions and 0 deletions

34
activity.py Normal file
View File

@@ -0,0 +1,34 @@
from __future__ import annotations
from dataclasses import dataclass, field
from datetime import datetime, timezone
from typing import Optional
def _now() -> datetime:
return datetime.now(timezone.utc)
@dataclass
class ChatActivityTracker:
last_bot_message_id: Optional[int] = None
last_bot_message_time: Optional[datetime] = None
last_user_message_time: Optional[datetime] = None
_now_fn: callable = field(default=_now, repr=False)
def record_user_activity(self) -> None:
self.last_user_message_time = self._now_fn()
def record_bot_message(self, message_id: int) -> None:
self.last_bot_message_id = message_id
self.last_bot_message_time = self._now_fn()
def can_edit_last_bot_message(self) -> bool:
if self.last_bot_message_id is None:
return False
if self.last_user_message_time is None:
return True
if self.last_bot_message_time is None:
return False
# Edit only if после последнего бот-сообщения не было новых сообщений пользователей.
return self.last_bot_message_time >= self.last_user_message_time