diff --git a/mipac/models/roles.py b/mipac/models/roles.py index c0fd0e7..a054ea1 100644 --- a/mipac/models/roles.py +++ b/mipac/models/roles.py @@ -5,7 +5,7 @@ from typing import TYPE_CHECKING from mipac.models.lite.role import PartialRole from mipac.models.user import MeDetailed, UserDetailedNotMe, packed_user -from mipac.types.roles import IMeRole, IRole, IRolePolicies, IRolePolicieValue, IRoleUser +from mipac.types.roles import IMeRole, IRole, IRolePolicies, IRoleUser from mipac.utils.format import str_to_datetime if TYPE_CHECKING: @@ -77,90 +77,105 @@ class MeRole: return not self.__eq__(__value) -class RolePolicyValue: - def __init__(self, policiy_value_data: IRolePolicieValue) -> None: - self.__policy_value_data = policiy_value_data +class RolePolicies: + def __init__(self, role_policies_data: IRolePolicies) -> None: + self.__role_policies_data = role_policies_data @property - def value(self) -> int: - return self.__policy_value_data.get("value") + def gtl_available(self) -> bool: + return self.__role_policies_data["gtl_available"] @property - def use_default(self) -> bool: - return self.__policy_value_data.get("use_default") + def ltl_available(self) -> bool: + return self.__role_policies_data["ltl_available"] @property - def priority(self) -> int | None: - return self.__policy_value_data.get("priority") + def can_public_note(self) -> bool: + return self.__role_policies_data["can_public_note"] + @property + def can_invite(self) -> bool: + return self.__role_policies_data["can_invite"] -class RolePolicies: - def __init__(self, role_policies_data: IRolePolicies) -> None: - self.__role_policies_data = role_policies_data + @property + def invite_limit(self) -> int: + return self.__role_policies_data["invite_limit"] + + @property + def invite_limit_cycle(self) -> int: + return self.__role_policies_data["invite_limit_cycle"] + + @property + def invite_expiration_time(self) -> int: + return self.__role_policies_data["invite_expiration_time"] + + @property + def can_manage_custom_emojis(self) -> bool: + return self.__role_policies_data["can_manage_custom_emojis"] @property - def antenna_limit(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["antenna_limit"]) + def can_manage_avatar_decorations(self) -> bool: + return self.__role_policies_data["can_manage_avatar_decorations"] @property - def gtl_available(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["gtl_available"]) + def can_search_notes(self) -> bool: + return self.__role_policies_data["can_search_notes"] @property - def ltl_available(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["ltl_available"]) + def can_use_translator(self) -> bool: + return self.__role_policies_data["can_use_translator"] @property - def can_public_note(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["can_public_note"]) + def can_hide_ads(self) -> bool: + return self.__role_policies_data["can_hide_ads"] @property - def drive_capacity_mb(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["drive_capacity_mb"]) + def drive_capacity_mb(self) -> int: + return self.__role_policies_data["drive_capacity_mb"] @property - def can_invite(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["can_invite"]) + def always_mark_nfsw(self) -> bool: + return self.__role_policies_data["always_mark_nfsw"] @property - def can_manage_custom_emojis(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["can_manage_custom_emojis"]) + def pin_limit(self) -> int: + return self.__role_policies_data["pin_limit"] @property - def can_hide_ads(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["can_hide_ads"]) + def antenna_limit(self) -> int: + return self.__role_policies_data["antenna_limit"] @property - def pin_limit(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["pin_limit"]) + def word_mute_limit(self) -> int: + return self.__role_policies_data["word_mute_limit"] @property - def word_mute_limit(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["word_mute_limit"]) + def webhook_limit(self) -> int: + return self.__role_policies_data["webhook_limit"] @property - def webhook_limit(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["webhook_limit"]) + def clip_limit(self) -> int: + return self.__role_policies_data["clip_limit"] @property - def clip_limit(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["clip_limit"]) + def note_each_clips_limit(self) -> int: + return self.__role_policies_data["note_each_clips_limit"] @property - def note_each_clips_limit(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["note_each_clips_limit"]) + def user_list_limit(self) -> int: + return self.__role_policies_data["user_list_limit"] @property - def user_list_limit(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["user_list_limit"]) + def user_each_user_lists_limit(self) -> int: + return self.__role_policies_data["user_each_user_lists_limit"] @property - def user_each_user_lists_limit(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["user_each_user_lists_limit"]) + def rate_limit_factor(self) -> int: + return self.__role_policies_data["rate_limit_factor"] @property - def rate_limit_factor(self) -> RolePolicyValue: - return RolePolicyValue(self.__role_policies_data["rate_limit_factor"]) + def avatar_decoration_limit(self) -> int: + return self.__role_policies_data["avatar_decoration_limit"] class Role(PartialRole[IRole]): diff --git a/mipac/types/roles.py b/mipac/types/roles.py index 1f67762..bf5fbcb 100644 --- a/mipac/types/roles.py +++ b/mipac/types/roles.py @@ -17,30 +17,31 @@ class IMeRole(TypedDict): user: IMeDetailedSchema expires_at: str | None - -class IRolePolicieValue(TypedDict): - value: int - use_default: bool - priority: NotRequired[int] - - class IRolePolicies(TypedDict): - antenna_limit: IRolePolicieValue - gtl_available: IRolePolicieValue - ltl_available: IRolePolicieValue - can_public_note: IRolePolicieValue - drive_capacity_mb: IRolePolicieValue - can_invite: IRolePolicieValue - can_manage_custom_emojis: IRolePolicieValue - can_hide_ads: IRolePolicieValue - pin_limit: IRolePolicieValue - word_mute_limit: IRolePolicieValue - webhook_limit: IRolePolicieValue - clip_limit: IRolePolicieValue - note_each_clips_limit: IRolePolicieValue - user_list_limit: IRolePolicieValue - user_each_user_lists_limit: IRolePolicieValue - rate_limit_factor: IRolePolicieValue + gtl_available: bool + ltl_available: bool + can_public_note: bool + can_invite: bool + invite_limit: int + invite_limit_cycle: int + invite_expiration_time: int + can_manage_custom_emojis: bool + can_manage_avatar_decorations: bool + can_search_notes: bool + can_use_translator: bool + can_hide_ads: bool + drive_capacity_mb: int + always_mark_nfsw: bool + pin_limit: int + antenna_limit: int + word_mute_limit: int + webhook_limit: int + clip_limit: int + note_each_clips_limit: int + user_list_limit: int + user_each_user_lists_limit: int + rate_limit_factor: int + avatar_decoration_limit: int class IPartialRole(TypedDict):