Files
monitor-bot/activity.py
2025-12-14 22:45:11 +02:00

35 lines
1.2 KiB
Python

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