diff --git a/interactions/models/discord/user.py b/interactions/models/discord/user.py index 2cd6857ea..bf9181d15 100644 --- a/interactions/models/discord/user.py +++ b/interactions/models/discord/user.py @@ -592,6 +592,16 @@ def has_role(self, *roles: Union[Snowflake_Type, Role]) -> bool: """ return all(to_snowflake(role) in self._role_ids for role in roles) + def has_any_role(self, roles: List[Union[Snowflake_Type, Role]]) -> bool: + """ + Checks if the user has any of the given roles. + + Args: + *roles: The Role(s) or role id(s) to check for + + """ + return any((self.has_role(to_snowflake(role)) for role in roles)) + async def timeout( self, communication_disabled_until: Union["Timestamp", datetime, int, float, str, None], diff --git a/interactions/models/discord/user.pyi b/interactions/models/discord/user.pyi index 9119afff3..208db8379 100644 --- a/interactions/models/discord/user.pyi +++ b/interactions/models/discord/user.pyi @@ -146,6 +146,7 @@ class Member(FakeUserMixin): async def remove_role(self, role: Union[Snowflake_Type, Role], reason: Absent[str] = ...) -> None: ... async def remove_roles(self, roles: Iterable[Union[Snowflake_Type, Role]], reason: Absent[str] = ...) -> None: ... def has_role(self, *roles: Union[Snowflake_Type, Role]) -> bool: ... + def has_any_role(self, roles: List[Union[Snowflake_Type, Role]]) -> bool: ... async def timeout( self, communication_disabled_until: Union["Timestamp", datetime, int, float, str, None],