mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-09-05 09:26:10 +00:00
Use Unpack where it's possible
This commit is contained in:
@ -64,7 +64,7 @@ from .cog import Cog
|
||||
from .hybrid import hybrid_command, hybrid_group, HybridCommand, HybridGroup
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from typing_extensions import Self
|
||||
from typing_extensions import Self, Unpack
|
||||
|
||||
import importlib.machinery
|
||||
|
||||
@ -80,12 +80,24 @@ if TYPE_CHECKING:
|
||||
MaybeAwaitableFunc,
|
||||
)
|
||||
from .core import Command
|
||||
from .hybrid import CommandCallback, ContextT, P
|
||||
from .hybrid import CommandCallback, ContextT, P, _HybridCommandDecoratorKwargs, _HybridGroupDecoratorKwargs
|
||||
from discord.client import _ClientOptions
|
||||
from discord.shard import _AutoShardedClientOptions
|
||||
|
||||
_Prefix = Union[Iterable[str], str]
|
||||
_PrefixCallable = MaybeAwaitableFunc[[BotT, Message], _Prefix]
|
||||
PrefixType = Union[_Prefix, _PrefixCallable[BotT]]
|
||||
|
||||
class _BotOptions(_ClientOptions, total=False):
|
||||
owner_id: int
|
||||
owner_ids: Collection[int]
|
||||
strip_after_prefix: bool
|
||||
case_insensitive: bool
|
||||
|
||||
class _AutoShardedBotOptions(_AutoShardedClientOptions, _BotOptions):
|
||||
...
|
||||
|
||||
|
||||
__all__ = (
|
||||
'when_mentioned',
|
||||
'when_mentioned_or',
|
||||
@ -169,7 +181,7 @@ class BotBase(GroupMixin[None]):
|
||||
allowed_contexts: app_commands.AppCommandContext = MISSING,
|
||||
allowed_installs: app_commands.AppInstallationType = MISSING,
|
||||
intents: discord.Intents,
|
||||
**options: Any,
|
||||
**options: Unpack[_BotOptions],
|
||||
) -> None:
|
||||
super().__init__(intents=intents, **options)
|
||||
self.command_prefix: PrefixType[BotT] = command_prefix # type: ignore
|
||||
@ -281,7 +293,7 @@ class BotBase(GroupMixin[None]):
|
||||
name: Union[str, app_commands.locale_str] = MISSING,
|
||||
with_app_command: bool = True,
|
||||
*args: Any,
|
||||
**kwargs: Any,
|
||||
**kwargs: Unpack[_HybridCommandDecoratorKwargs], # type: ignore # name, with_app_command
|
||||
) -> Callable[[CommandCallback[Any, ContextT, P, T]], HybridCommand[Any, P, T]]:
|
||||
"""A shortcut decorator that invokes :func:`~discord.ext.commands.hybrid_command` and adds it to
|
||||
the internal command list via :meth:`add_command`.
|
||||
@ -293,8 +305,8 @@ class BotBase(GroupMixin[None]):
|
||||
"""
|
||||
|
||||
def decorator(func: CommandCallback[Any, ContextT, P, T]):
|
||||
kwargs.setdefault('parent', self)
|
||||
result = hybrid_command(name=name, *args, with_app_command=with_app_command, **kwargs)(func)
|
||||
kwargs.setdefault('parent', self) # type: ignore # parent is not for the user to set
|
||||
result = hybrid_command(name=name, *args, with_app_command=with_app_command, **kwargs)(func) # type: ignore # name, with_app_command
|
||||
self.add_command(result)
|
||||
return result
|
||||
|
||||
@ -305,7 +317,7 @@ class BotBase(GroupMixin[None]):
|
||||
name: Union[str, app_commands.locale_str] = MISSING,
|
||||
with_app_command: bool = True,
|
||||
*args: Any,
|
||||
**kwargs: Any,
|
||||
**kwargs: Unpack[_HybridGroupDecoratorKwargs], # type: ignore # name, with_app_command
|
||||
) -> Callable[[CommandCallback[Any, ContextT, P, T]], HybridGroup[Any, P, T]]:
|
||||
"""A shortcut decorator that invokes :func:`~discord.ext.commands.hybrid_group` and adds it to
|
||||
the internal command list via :meth:`add_command`.
|
||||
@ -317,8 +329,8 @@ class BotBase(GroupMixin[None]):
|
||||
"""
|
||||
|
||||
def decorator(func: CommandCallback[Any, ContextT, P, T]):
|
||||
kwargs.setdefault('parent', self)
|
||||
result = hybrid_group(name=name, *args, with_app_command=with_app_command, **kwargs)(func)
|
||||
kwargs.setdefault('parent', self) # type: ignore # parent is not for the user to set
|
||||
result = hybrid_group(name=name, *args, with_app_command=with_app_command, **kwargs)(func) # type: ignore # name, with_app_command
|
||||
self.add_command(result)
|
||||
return result
|
||||
|
||||
@ -1527,4 +1539,18 @@ class AutoShardedBot(BotBase, discord.AutoShardedClient):
|
||||
.. versionadded:: 2.0
|
||||
"""
|
||||
|
||||
pass
|
||||
if TYPE_CHECKING:
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
command_prefix: PrefixType[BotT],
|
||||
*,
|
||||
help_command: Optional[HelpCommand] = _default,
|
||||
tree_cls: Type[app_commands.CommandTree[Any]] = app_commands.CommandTree,
|
||||
description: Optional[str] = None,
|
||||
allowed_contexts: app_commands.AppCommandContext = MISSING,
|
||||
allowed_installs: app_commands.AppInstallationType = MISSING,
|
||||
intents: discord.Intents,
|
||||
**kwargs: Unpack[_AutoShardedBotOptions],
|
||||
) -> None:
|
||||
...
|
||||
|
Reference in New Issue
Block a user