def command(arguments: List[ParserElement]):
"""
command is a decorator which examines the function name and its arguments
and registers `<function_name> arguments...` as part of the grammar.
"""
def decorator(fn):
fn_args = inspect.getfullargspec(fn).args
_name = '.' + fn.__name__
_arguments = Literal(_name)
for i, arg in enumerate(arguments):
_arguments += arg.setResultsName(fn_args[i])
global grammar
grammar |= _arguments
def wrapper(parsed: Dict, event, event_user, event_channel, slack_client):
return fn(**parsed, event=event, event_user=event_user, event_channel=event_channel, slack_client=slack_client)
mapping[_name] = wrapper
return wrapper
return decorator
评论列表
文章目录