fix command

This commit is contained in:
jxxghp 2023-06-15 22:59:47 +08:00
parent e459880373
commit ed14485092
2 changed files with 8 additions and 7 deletions

View File

@ -184,16 +184,17 @@ class Command(metaclass=Singleton):
try: try:
logger.info(f"用户 {userid} 开始执行:{command.get('description')} ...") logger.info(f"用户 {userid} 开始执行:{command.get('description')} ...")
cmd_data = command['data'] if command.get('data') else {} cmd_data = command['data'] if command.get('data') else {}
if ObjectUtils.has_arguments(command['func']): args_num = ObjectUtils.has_arguments(command['func'])
if args_num:
if cmd_data: if cmd_data:
# 使用内置参数 # 使用内置参数
command['func'](**cmd_data) command['func'](**cmd_data)
elif data_str: elif args_num > 1:
# 使用用户输入参数 # 使用用户输入参数
command['func'](data_str, userid) command['func'](data_str, userid)
else: else:
# 没有用户输入参数 # 没有用户输入参数
command['func'](userid) command['func'](data_str)
else: else:
# 没有参数 # 没有参数
command['func']() command['func']()

View File

@ -1,5 +1,5 @@
import inspect import inspect
from typing import Any from typing import Any, Callable
class ObjectUtils: class ObjectUtils:
@ -12,9 +12,9 @@ class ObjectUtils:
return str(obj).startswith("{") or str(obj).startswith("[") return str(obj).startswith("{") or str(obj).startswith("[")
@staticmethod @staticmethod
def has_arguments(func): def has_arguments(func: Callable) -> int:
""" """
判断函数是否有参 返回函数的参数个
""" """
signature = inspect.signature(func) signature = inspect.signature(func)
parameters = signature.parameters parameters = signature.parameters
@ -24,4 +24,4 @@ class ObjectUtils:
if parameter_names and parameter_names[0] == 'self': if parameter_names and parameter_names[0] == 'self':
parameter_names = parameter_names[1:] parameter_names = parameter_names[1:]
return len(parameter_names) > 0 return len(parameter_names)