|
@ -55,8 +55,9 @@ from ..utils import get as utils_get, MISSING, maybe_coroutine |
|
|
T = TypeVar('T') |
|
|
T = TypeVar('T') |
|
|
|
|
|
|
|
|
if TYPE_CHECKING: |
|
|
if TYPE_CHECKING: |
|
|
from typing_extensions import Self |
|
|
from typing_extensions import Self, Unpack |
|
|
from ..interactions import Interaction |
|
|
from ..interactions import Interaction |
|
|
|
|
|
from ..permissions import _PermissionsKwargs |
|
|
|
|
|
|
|
|
CooldownFunction = Union[ |
|
|
CooldownFunction = Union[ |
|
|
Callable[[Interaction[Any]], Coroutine[Any, Any, T]], |
|
|
Callable[[Interaction[Any]], Coroutine[Any, Any, T]], |
|
@ -286,7 +287,7 @@ def has_any_role(*items: Union[int, str]) -> Callable[[T], T]: |
|
|
return check(predicate) |
|
|
return check(predicate) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def has_permissions(**perms: bool) -> Callable[[T], T]: |
|
|
def has_permissions(**perms: Unpack[_PermissionsKwargs]) -> Callable[[T], T]: |
|
|
r"""A :func:`~discord.app_commands.check` that is added that checks if the member |
|
|
r"""A :func:`~discord.app_commands.check` that is added that checks if the member |
|
|
has all of the permissions necessary. |
|
|
has all of the permissions necessary. |
|
|
|
|
|
|
|
@ -341,7 +342,7 @@ def has_permissions(**perms: bool) -> Callable[[T], T]: |
|
|
return check(predicate) |
|
|
return check(predicate) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def bot_has_permissions(**perms: bool) -> Callable[[T], T]: |
|
|
def bot_has_permissions(**perms: Unpack[_PermissionsKwargs]) -> Callable[[T], T]: |
|
|
"""Similar to :func:`has_permissions` except checks if the bot itself has |
|
|
"""Similar to :func:`has_permissions` except checks if the bot itself has |
|
|
the permissions listed. This relies on :attr:`discord.Interaction.app_permissions`. |
|
|
the permissions listed. This relies on :attr:`discord.Interaction.app_permissions`. |
|
|
|
|
|
|
|
|