mirror of
https://github.com/nonebot/nonebot2.git
synced 2025-01-31 15:41:34 +08:00
Use stub file to keep class CommandGroup
clean
This commit is contained in:
parent
ae35c2e08a
commit
347318aaaa
@ -114,12 +114,18 @@ from .helpers import context_id
|
|||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'NoneBot', 'scheduler', 'init', 'get_bot', 'run',
|
'NoneBot', 'scheduler', 'init', 'get_bot', 'run',
|
||||||
|
|
||||||
'CQHttpError',
|
'CQHttpError',
|
||||||
|
|
||||||
'load_plugin', 'load_plugins', 'load_builtin_plugins',
|
'load_plugin', 'load_plugins', 'load_builtin_plugins',
|
||||||
'get_loaded_plugins',
|
'get_loaded_plugins',
|
||||||
|
|
||||||
'message_preprocessor', 'Message', 'MessageSegment',
|
'message_preprocessor', 'Message', 'MessageSegment',
|
||||||
|
|
||||||
'on_command', 'CommandSession', 'CommandGroup',
|
'on_command', 'CommandSession', 'CommandGroup',
|
||||||
|
|
||||||
'on_natural_language', 'NLPSession', 'NLPResult', 'IntentCommand',
|
'on_natural_language', 'NLPSession', 'NLPResult', 'IntentCommand',
|
||||||
'on_notice', 'NoticeSession', 'on_request', 'RequestSession',
|
'on_notice', 'NoticeSession', 'on_request', 'RequestSession',
|
||||||
|
|
||||||
'context_id',
|
'context_id',
|
||||||
]
|
]
|
||||||
|
@ -156,55 +156,6 @@ def on_command(name: Union[str, CommandName_T], *,
|
|||||||
return deco
|
return deco
|
||||||
|
|
||||||
|
|
||||||
class CommandGroup:
|
|
||||||
"""
|
|
||||||
Group a set of commands with same name prefix.
|
|
||||||
"""
|
|
||||||
__slots__ = ('basename', 'permission', 'only_to_me', 'privileged',
|
|
||||||
'shell_like')
|
|
||||||
|
|
||||||
def __init__(self, name: Union[str, CommandName_T],
|
|
||||||
permission: Optional[int] = None, *,
|
|
||||||
only_to_me: Optional[bool] = None,
|
|
||||||
privileged: Optional[bool] = None,
|
|
||||||
shell_like: Optional[bool] = None):
|
|
||||||
self.basename = (name,) if isinstance(name, str) else name
|
|
||||||
self.permission = permission # TODO: use .pyi
|
|
||||||
self.only_to_me = only_to_me
|
|
||||||
self.privileged = privileged
|
|
||||||
self.shell_like = shell_like
|
|
||||||
|
|
||||||
def command(self, name: Union[str, CommandName_T], *,
|
|
||||||
aliases: Optional[Iterable[str]] = None,
|
|
||||||
permission: Optional[int] = None,
|
|
||||||
only_to_me: Optional[bool] = None,
|
|
||||||
privileged: Optional[bool] = None,
|
|
||||||
shell_like: Optional[bool] = None) -> Callable:
|
|
||||||
sub_name = (name,) if isinstance(name, str) else name
|
|
||||||
name = self.basename + sub_name
|
|
||||||
|
|
||||||
kwargs = {}
|
|
||||||
if aliases is not None:
|
|
||||||
kwargs['aliases'] = aliases
|
|
||||||
if permission is not None:
|
|
||||||
kwargs['permission'] = permission
|
|
||||||
elif self.permission is not None:
|
|
||||||
kwargs['permission'] = self.permission
|
|
||||||
if only_to_me is not None:
|
|
||||||
kwargs['only_to_me'] = only_to_me
|
|
||||||
elif self.only_to_me is not None:
|
|
||||||
kwargs['only_to_me'] = self.only_to_me
|
|
||||||
if privileged is not None:
|
|
||||||
kwargs['privileged'] = privileged
|
|
||||||
elif self.privileged is not None:
|
|
||||||
kwargs['privileged'] = self.privileged
|
|
||||||
if shell_like is not None:
|
|
||||||
kwargs['shell_like'] = shell_like
|
|
||||||
elif self.shell_like is not None:
|
|
||||||
kwargs['shell_like'] = self.shell_like
|
|
||||||
return on_command(name, **kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
def _find_command(name: Union[str, CommandName_T]) -> Optional[Command]:
|
def _find_command(name: Union[str, CommandName_T]) -> Optional[Command]:
|
||||||
cmd_name = (name,) if isinstance(name, str) else name
|
cmd_name = (name,) if isinstance(name, str) else name
|
||||||
if not cmd_name:
|
if not cmd_name:
|
||||||
@ -686,3 +637,6 @@ def kill_current_session(ctx: Context_T) -> None:
|
|||||||
ctx_id = context_id(ctx)
|
ctx_id = context_id(ctx)
|
||||||
if ctx_id in _sessions:
|
if ctx_id in _sessions:
|
||||||
del _sessions[ctx_id]
|
del _sessions[ctx_id]
|
||||||
|
|
||||||
|
|
||||||
|
from nonebot.command.group import CommandGroup
|
||||||
|
26
nonebot/command/group.py
Normal file
26
nonebot/command/group.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
from typing import Union, Callable
|
||||||
|
|
||||||
|
from nonebot.command import on_command
|
||||||
|
from nonebot.typing import CommandName_T
|
||||||
|
|
||||||
|
|
||||||
|
class CommandGroup:
|
||||||
|
"""
|
||||||
|
Group a set of commands with same name prefix.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__slots__ = ('basename', 'base_kwargs')
|
||||||
|
|
||||||
|
def __init__(self, name: Union[str, CommandName_T], **kwargs):
|
||||||
|
self.basename = (name,) if isinstance(name, str) else name
|
||||||
|
if 'aliases' in kwargs:
|
||||||
|
del kwargs['aliases'] # ensure there is no aliases here
|
||||||
|
self.base_kwargs = kwargs
|
||||||
|
|
||||||
|
def command(self, name: Union[str, CommandName_T], **kwargs) -> Callable:
|
||||||
|
sub_name = (name,) if isinstance(name, str) else name
|
||||||
|
name = self.basename + sub_name
|
||||||
|
|
||||||
|
final_kwargs = self.base_kwargs.copy()
|
||||||
|
final_kwargs.update(kwargs)
|
||||||
|
return on_command(name, **final_kwargs)
|
24
nonebot/command/group.pyi
Normal file
24
nonebot/command/group.pyi
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
from typing import Union, Callable, Iterable
|
||||||
|
|
||||||
|
from nonebot.typing import CommandName_T
|
||||||
|
|
||||||
|
|
||||||
|
class CommandGroup:
|
||||||
|
"""
|
||||||
|
Group a set of commands with same name prefix.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__slots__ = ('basename', 'base_kwargs')
|
||||||
|
|
||||||
|
def __init__(self, name: Union[str, CommandName_T], *,
|
||||||
|
permission: int = ...,
|
||||||
|
only_to_me: bool = ...,
|
||||||
|
privileged: bool = ...,
|
||||||
|
shell_like: bool = ...): ...
|
||||||
|
|
||||||
|
def command(self, name: Union[str, CommandName_T], *,
|
||||||
|
aliases: Iterable[str] = ...,
|
||||||
|
permission: int = ...,
|
||||||
|
only_to_me: bool = ...,
|
||||||
|
privileged: bool = ...,
|
||||||
|
shell_like: bool = ...) -> Callable: ...
|
Loading…
x
Reference in New Issue
Block a user