33 lines
987 B
Python
33 lines
987 B
Python
from dataclasses import dataclass
|
|
from typing import Any
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class BotStats:
|
|
total_users: int = 0
|
|
total_cookies: int = 0
|
|
total_paid_direct: float = 0.0
|
|
total_paid_referral: float = 0.0
|
|
|
|
@classmethod
|
|
def default(cls) -> "BotStats":
|
|
return cls()
|
|
|
|
@classmethod
|
|
def from_dict(cls, data: dict[str, Any] | None) -> "BotStats":
|
|
data = data or {}
|
|
return cls(
|
|
total_users=int(data.get("total_users", 0)),
|
|
total_cookies=int(data.get("total_cookies", 0)),
|
|
total_paid_direct=float(data.get("total_paid_direct", 0.0)),
|
|
total_paid_referral=float(data.get("total_paid_referral", 0.0)),
|
|
)
|
|
|
|
def to_dict(self) -> dict[str, Any]:
|
|
return {
|
|
"total_users": self.total_users,
|
|
"total_cookies": self.total_cookies,
|
|
"total_paid_direct": self.total_paid_direct,
|
|
"total_paid_referral": self.total_paid_referral,
|
|
}
|