diff --git a/mipac/actions/admins/roles.py b/mipac/actions/admins/roles.py index 8f679ef..eb85136 100644 --- a/mipac/actions/admins/roles.py +++ b/mipac/actions/admins/roles.py @@ -19,6 +19,44 @@ class AdminRoleActions(AbstractAction): self.__client: ClientManager = client self.__role_id: str | None = role_id + async def create( + self, + name: str, + description: str, + color: str | None = None, + iconUrl: str| None = None, + target: Literal['manual', 'conditional'] = 'manual', + cond_formula: dict[Any, Any] | None = None, + is_public: bool = False, + is_moderator: bool = False, + is_administrator: bool = False, + as_badge: bool = False, + can_edit_members_by_moderator: bool = False, + policies: dict[Any, Any] | None = None, + ) -> Role: + body = { + 'name': name, + 'description': description, + 'color': color, + 'iconUrl': iconUrl, + 'target': target, + 'condFormula': cond_formula or {}, + 'isPublic': is_public, + 'isModerator': is_moderator, + 'isAdministrator': is_administrator, + 'asBadge': as_badge, + 'canEditMembersByModerator': can_edit_members_by_moderator, + 'policies': policies or {}, + } + if self.__client._config.use_version >= 13: + res: IRole = await self.__session.request( + Route('POST', '/api/admin/roles/create'), + auth=True, json=body, lower=True, remove_none=False + ) + return Role(res) + raise NotSupportVersion(NotSupportVersionText) + + async def show(self, role_id: str) -> Role: if self.__client._config.use_version >= 13: res: IRole = await self.__session.request(