🐛 修复插件使用问题

This commit is contained in:
HibiKier 2025-02-23 16:41:17 +08:00 committed by GitHub
parent 531ce3a13c
commit d6c1ae681f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -193,9 +193,7 @@ class ShopManage:
"group_id": group_id, "group_id": group_id,
"num": num, "num": num,
"text": text, "text": text,
"session": session,
"goods_name": goods.name, "goods_name": goods.name,
"message": message,
} }
@classmethod @classmethod
@ -203,6 +201,8 @@ class ShopManage:
cls, cls,
args: MappingProxyType, args: MappingProxyType,
param: ShopParam, param: ShopParam,
session: Uninfo,
message: UniMsg,
**kwargs, **kwargs,
) -> dict: ) -> dict:
"""解析参数 """解析参数
@ -221,6 +221,8 @@ class ShopManage:
"kwargs": kwargs, "kwargs": kwargs,
**param.to_dict(), **param.to_dict(),
**param.extra_data, **param.extra_data,
"session": session,
"message": message,
} }
for key in list(param_json.keys()): for key in list(param_json.keys()):
if key not in args: if key not in args:
@ -232,6 +234,8 @@ class ShopManage:
cls, cls,
goods: Goods, goods: Goods,
param: ShopParam, param: ShopParam,
session: Uninfo,
message: UniMsg,
run_type: Literal["after", "before"], run_type: Literal["after", "before"],
**kwargs, **kwargs,
): ):
@ -247,9 +251,13 @@ class ShopManage:
for func in fun_list: for func in fun_list:
if args := inspect.signature(func).parameters: if args := inspect.signature(func).parameters:
if asyncio.iscoroutinefunction(func): if asyncio.iscoroutinefunction(func):
await func(**cls.__parse_args(args, param, **kwargs)) await func(
**cls.__parse_args(args, param, session, message, **kwargs)
)
else: else:
func(**cls.__parse_args(args, param, **kwargs)) func(
**cls.__parse_args(args, param, session, message, **kwargs)
)
elif asyncio.iscoroutinefunction(func): elif asyncio.iscoroutinefunction(func):
await func() await func()
else: else:
@ -260,6 +268,8 @@ class ShopManage:
cls, cls,
goods: Goods, goods: Goods,
param: ShopParam, param: ShopParam,
session: Uninfo,
message: UniMsg,
**kwargs, **kwargs,
) -> str | UniMessage | None: ) -> str | UniMessage | None:
"""运行道具函数 """运行道具函数
@ -275,9 +285,13 @@ class ShopManage:
if goods.func: if goods.func:
if args: if args:
return ( return (
await goods.func(**cls.__parse_args(args, param, **kwargs)) await goods.func(
**cls.__parse_args(args, param, session, message, **kwargs)
)
if asyncio.iscoroutinefunction(goods.func) if asyncio.iscoroutinefunction(goods.func)
else goods.func(**cls.__parse_args(args, param, **kwargs)) else goods.func(
**cls.__parse_args(args, param, session, message, **kwargs)
)
) )
if asyncio.iscoroutinefunction(goods.func): if asyncio.iscoroutinefunction(goods.func):
return await goods.func() return await goods.func()
@ -330,12 +344,12 @@ class ShopManage:
) )
if num > param.max_num_limit: if num > param.max_num_limit:
return f"{goods_info.goods_name} 单次使用最大数量为{param.max_num_limit}..." return f"{goods_info.goods_name} 单次使用最大数量为{param.max_num_limit}..."
await cls.run_before_after(goods, param, "before", **kwargs) await cls.run_before_after(goods, param, session, message, "before", **kwargs)
result = await cls.__run(goods, param, **kwargs) result = await cls.__run(goods, param, session, message, **kwargs)
await UserConsole.use_props( await UserConsole.use_props(
session.user.id, goods_info.uuid, num, PlatformUtils.get_platform(session) session.user.id, goods_info.uuid, num, PlatformUtils.get_platform(session)
) )
await cls.run_before_after(goods, param, "after", **kwargs) await cls.run_before_after(goods, param, session, message, "after", **kwargs)
if not result and param.send_success_msg: if not result and param.send_success_msg:
result = f"使用道具 {goods.name} {num} 次成功!" result = f"使用道具 {goods.name} {num} 次成功!"
return result return result