40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
"""
|
|
Доменная сущность User
|
|
"""
|
|
from datetime import datetime
|
|
from uuid import UUID, uuid4
|
|
from enum import Enum
|
|
|
|
|
|
class UserRole(str, Enum):
|
|
"""Роли пользователей"""
|
|
USER = "user"
|
|
ADMIN = "admin"
|
|
|
|
|
|
class User:
|
|
"""Пользователь системы"""
|
|
|
|
def __init__(
|
|
self,
|
|
telegram_id: str,
|
|
role: UserRole = UserRole.USER,
|
|
user_id: UUID | None = None,
|
|
created_at: datetime | None = None,
|
|
is_premium: bool = False,
|
|
premium_until: datetime | None = None,
|
|
questions_used: int = 0
|
|
):
|
|
self.user_id = user_id or uuid4()
|
|
self.telegram_id = telegram_id
|
|
self.role = role
|
|
self.created_at = created_at or datetime.utcnow()
|
|
self.is_premium = is_premium
|
|
self.premium_until = premium_until
|
|
self.questions_used = questions_used
|
|
|
|
def is_admin(self) -> bool:
|
|
"""проверка, является ли пользователь администратором"""
|
|
return self.role == UserRole.ADMIN
|
|
|