feat: 插件、指令返回接口优化
This commit is contained in:
@@ -70,3 +70,16 @@ class AstrMessageEvent():
|
|||||||
self.global_object = global_object
|
self.global_object = global_object
|
||||||
self.llm_provider = llm_provider
|
self.llm_provider = llm_provider
|
||||||
self.session_id = session_id
|
self.session_id = session_id
|
||||||
|
|
||||||
|
class CommandResult():
|
||||||
|
'''
|
||||||
|
用于在Command中返回多个值
|
||||||
|
'''
|
||||||
|
def __init__(self, hit: bool, success: bool, message_chain: list, command_name: str = "unknown_command") -> None:
|
||||||
|
self.hit = hit
|
||||||
|
self.success = success
|
||||||
|
self.message_chain = message_chain
|
||||||
|
self.command_name = command_name
|
||||||
|
|
||||||
|
def _result_tuple(self):
|
||||||
|
return (self.success, self.message_chain, self.command_name)
|
||||||
@@ -25,6 +25,7 @@ from nakuru.entities.components import (
|
|||||||
from PIL import Image as PILImage
|
from PIL import Image as PILImage
|
||||||
from cores.qqbot.global_object import GlobalObject, AstrMessageEvent
|
from cores.qqbot.global_object import GlobalObject, AstrMessageEvent
|
||||||
from pip._internal import main as pipmain
|
from pip._internal import main as pipmain
|
||||||
|
from cores.qqbot.global_object import CommandResult
|
||||||
|
|
||||||
PLATFORM_QQCHAN = 'qqchan'
|
PLATFORM_QQCHAN = 'qqchan'
|
||||||
PLATFORM_GOCQ = 'gocq'
|
PLATFORM_GOCQ = 'gocq'
|
||||||
@@ -55,7 +56,16 @@ class Command:
|
|||||||
)
|
)
|
||||||
for k, v in cached_plugins.items():
|
for k, v in cached_plugins.items():
|
||||||
try:
|
try:
|
||||||
hit, res = v["clsobj"].run(ame)
|
result = v["clsobj"].run(ame)
|
||||||
|
if isinstance(result, CommandResult):
|
||||||
|
hit = result.hit
|
||||||
|
res = result._result_tuple()
|
||||||
|
print(hit, res)
|
||||||
|
elif isinstance(result, tuple):
|
||||||
|
hit = result[0]
|
||||||
|
res = result[1]
|
||||||
|
else:
|
||||||
|
raise TypeError("插件返回值格式错误。")
|
||||||
if hit:
|
if hit:
|
||||||
return True, res
|
return True, res
|
||||||
except TypeError as e:
|
except TypeError as e:
|
||||||
@@ -65,9 +75,9 @@ class Command:
|
|||||||
if hit:
|
if hit:
|
||||||
return True, res
|
return True, res
|
||||||
except BaseException as e:
|
except BaseException as e:
|
||||||
gu.log(f"{k}插件加载出现问题,原因: {str(e)}\n已安装插件: {cached_plugins.keys}\n如果你没有相关装插件的想法, 请直接忽略此报错, 不影响其他功能的运行。", level=gu.LEVEL_WARNING)
|
gu.log(f"{k}插件异常,原因: {str(e)}\n已安装插件: {cached_plugins.keys}\n如果你没有相关装插件的想法, 请直接忽略此报错, 不影响其他功能的运行。", level=gu.LEVEL_WARNING)
|
||||||
except BaseException as e:
|
except BaseException as e:
|
||||||
gu.log(f"{k}插件加载出现问题,原因: {str(e)}\n已安装插件: {cached_plugins.keys}\n如果你没有相关装插件的想法, 请直接忽略此报错, 不影响其他功能的运行。", level=gu.LEVEL_WARNING)
|
gu.log(f"{k} 插件异常,原因: {str(e)}\n已安装插件: {cached_plugins.keys}\n如果你没有相关装插件的想法, 请直接忽略此报错, 不影响其他功能的运行。", level=gu.LEVEL_WARNING)
|
||||||
|
|
||||||
if self.command_start_with(message, "nick"):
|
if self.command_start_with(message, "nick"):
|
||||||
return True, self.set_nick(message, platform, role)
|
return True, self.set_nick(message, platform, role)
|
||||||
|
|||||||
Reference in New Issue
Block a user