Register a command handler that will be invoked when a command is
        detected. If your handler has a docstring, it will be shown for
        .help [command]. The function will be invoked with *args set to the
        list of parameters given (as parsed by shlex.split). You may also
        include any of these keyword arguments in your signature:

        message:    the original message this was invoked in response to
        client:     the value of CommandSet.client
        cmdset:     this command set

        If your function returns a string, it will be given back to the user
        who issued the command.

        :param name: name of the command. Defaults to __name__ if None.
        :param hint: hint for the command (shown for .help).
        :param aliases: aliases for this command.

def command(self, name: str=None, hint: str=None, aliases: Sequence[str]=list()):
        """
        Register a command handler that will be invoked when a command is
        detected. If your handler has a docstring, it will be shown for
        .help [command]. The function will be invoked with *args set to the
        list of parameters given (as parsed by shlex.split). You may also
        include any of these keyword arguments in your signature:

        message:    the original message this was invoked in response to
        client:     the value of CommandSet.client
        cmdset:     this command set

        If your function returns a string, it will be given back to the user
        who issued the command.

        :param name: name of the command. Defaults to __name__ if None.
        :param hint: hint for the command (shown for .help).
        :param aliases: aliases for this command.
        """
        def decorator(fn):
            _name = name or fn.__name__
            cmd = _Command(_name, hint, fn)
            self._commands[_name] = cmd
            for alias in aliases:
                self._aliases[alias] = cmd
            return fn
        return decorator