Add CommandGroup class

This commit is contained in:
Richard Chien
2018-06-25 22:49:15 +08:00
parent e52aa34f85
commit fd49a272ae
2 changed files with 23 additions and 4 deletions

View File

@ -106,6 +106,24 @@ def on_command(name: Union[str, Tuple[str]], *,
return deco
class CommandGroup:
__slots__ = ('basename', 'permission')
def __init__(self, name: Union[str, Tuple[str]], permission: int = None):
self.basename = name if isinstance(name, tuple) else (name,)
self.permission = permission
def command(self, name: Union[str, Tuple[str]], *,
aliases: Iterable = None, permission: int = None) -> Callable:
name = self.basename + (name if isinstance(name, tuple) else (name,))
kwargs = {}
if aliases is not None:
kwargs['aliases'] = aliases
if permission is not None:
kwargs['permission'] = permission
return on_command(name, **kwargs)
def _find_command(name: Union[str, Tuple[str]]) -> Optional[Command]:
cmd_name = name if isinstance(name, tuple) else (name,)