diff --git a/mipac/models/mute.py b/mipac/models/mute.py index 5599106..5227462 100644 --- a/mipac/models/mute.py +++ b/mipac/models/mute.py @@ -1,37 +1,47 @@ from __future__ import annotations +from datetime import datetime from typing import TYPE_CHECKING -from mipac.models.user import MeDetailed, UserDetailedNotMe, packed_user +from mipac.models.user import UserDetailedNotMe from mipac.types.mute import IMuteUser +from mipac.utils.format import str_to_datetime if TYPE_CHECKING: from mipac.manager.client import ClientManager class MuteUser: - def __init__(self, data: IMuteUser, *, client: ClientManager) -> None: - self.__data: IMuteUser = data + def __init__(self, raw_mute_user: IMuteUser, *, client: ClientManager) -> None: + self.__raw_mute_user: IMuteUser = raw_mute_user self.__client: ClientManager = client @property def id(self) -> str: - return self.__data["id"] + return self.__raw_mute_user["id"] @property def created_at(self) -> str: - return self.__data["created_at"] + return self.__raw_mute_user["created_at"] + + @property + def expires_at(self) -> datetime | None: + return ( + str_to_datetime(self.__raw_mute_user["expires_at"]) + if self.__raw_mute_user["expires_at"] + else None + ) @property def mutee_id(self) -> str: - return self.__data["mutee_id"] + return self.__raw_mute_user["mutee_id"] @property - def mutee(self) -> UserDetailedNotMe | MeDetailed: - return packed_user(self.__data["mutee"], client=self.__client) + def mutee(self) -> UserDetailedNotMe: + return UserDetailedNotMe(self.__raw_mute_user["mutee"], client=self.__client) def __eq__(self, __value: MuteUser) -> bool: - return isinstance(__value, IMuteUser) and self.id == __value.id + return isinstance(__value, MuteUser) and self.id == __value.id def __ne__(self, __value: MuteUser) -> bool: return not self.__eq__(__value) diff --git a/mipac/types/mute.py b/mipac/types/mute.py index 357eb76..c5e0907 100644 --- a/mipac/types/mute.py +++ b/mipac/types/mute.py @@ -9,5 +9,6 @@ if TYPE_CHECKING: class IMuteUser(TypedDict): id: str created_at: str + expires_at: str | None mutee_id: str mutee: IUserDetailed