Files
Roblox-Buyer/models/user.py
T

69 lines
2.2 KiB
Python

from dataclasses import dataclass, field
from typing import Any
@dataclass(slots=True)
class UserProfile:
user_id: int
username: str | None = None
registered: str = ""
cookies_loaded: int = 0
total_earned: float = 0.0
referral_earned: float = 0.0
balance: float = 0.0
referrer: int | None = None
referrals: list[int] = field(default_factory=list)
is_admin: bool = False
is_banned: bool = False
ban_reason: str = ""
@classmethod
def default(
cls,
user_id: int,
username: str | None = None,
registered: str = "",
referrer: int | None = None,
is_admin: bool = False,
) -> "UserProfile":
return cls(
user_id=user_id,
username=username,
registered=registered,
referrer=referrer,
is_admin=is_admin,
)
@classmethod
def from_dict(cls, data: dict[str, Any]) -> "UserProfile":
return cls(
user_id=int(data.get("user_id", 0)),
username=data.get("username"),
registered=data.get("registered", ""),
cookies_loaded=int(data.get("cookies_loaded", 0)),
total_earned=float(data.get("total_earned", 0.0)),
referral_earned=float(data.get("referral_earned", 0.0)),
balance=float(data.get("balance", 0.0)),
referrer=data.get("referrer"),
referrals=[int(x) for x in data.get("referrals", [])],
is_admin=bool(data.get("is_admin", False)),
is_banned=bool(data.get("is_banned", False)),
ban_reason=data.get("ban_reason", ""),
)
def to_dict(self) -> dict[str, Any]:
return {
"user_id": self.user_id,
"username": self.username,
"registered": self.registered,
"cookies_loaded": self.cookies_loaded,
"total_earned": self.total_earned,
"referral_earned": self.referral_earned,
"balance": self.balance,
"referrer": self.referrer,
"referrals": self.referrals,
"is_admin": self.is_admin,
"is_banned": self.is_banned,
"ban_reason": self.ban_reason,
}