From 5fc4140cf76defd9b44bfe4a545427a4964318bd Mon Sep 17 00:00:00 2001 From: Snowykami Date: Sun, 15 Dec 2024 17:43:03 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E4=BC=98=E5=8C=96=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=BB=98=E8=AE=A4=E5=80=BC=E6=94=AF=E6=8C=81=EF=BC=9B?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=A4=A9=E6=B0=94=E8=8E=B7=E5=8F=96=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E7=9A=84=E8=BF=94=E5=9B=9E=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonebot_plugin_marshoai/plugin/func_call/caller.py | 6 ++++++ .../plugins/snowykami_testplugin/__init__.py | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/nonebot_plugin_marshoai/plugin/func_call/caller.py b/nonebot_plugin_marshoai/plugin/func_call/caller.py index 19181662..5508189b 100644 --- a/nonebot_plugin_marshoai/plugin/func_call/caller.py +++ b/nonebot_plugin_marshoai/plugin/func_call/caller.py @@ -131,6 +131,12 @@ class Caller: param.annotation, Caller ): kwargs[name] = self + + # 检查形参是否有默认值或传入,若没有则用parameters中的默认值填充 + for name, param in sig.parameters.items(): + if name not in kwargs: + kwargs[name] = self._parameters.get(name, param.default) + return await self.func(*args, **kwargs) diff --git a/nonebot_plugin_marshoai/plugins/snowykami_testplugin/__init__.py b/nonebot_plugin_marshoai/plugins/snowykami_testplugin/__init__.py index 2f972853..a4d48b89 100644 --- a/nonebot_plugin_marshoai/plugins/snowykami_testplugin/__init__.py +++ b/nonebot_plugin_marshoai/plugins/snowykami_testplugin/__init__.py @@ -32,14 +32,14 @@ async def fortune_telling(age: int, name: str, gender: str) -> str: @on_function_call(description="获取一个地点未来一段时间的天气").params( location=String(description="地点名称,可以是城市名、地区名等"), days=Integer(description="天数", minimum=1, maximum=30), - unit=String(enum=["摄氏度", "华氏度"], description="温度单位"), + unit=String(enum=["摄氏度", "华氏度"], description="温度单位", default="摄氏度"), ) async def get_weather(location: str, days: int, unit: str) -> str: """获取一个地点未来一段时间的天气""" # 进行一系列获取天气操作... - return f"{location}未来{days}天的天气信息..." + return f"{location}未来{days}天的天气很好,全都是晴天,温度是34" @on_function_call(description="获取设备物理地理位置")