From e5c0e41336d94028c38fe798020ad19214d4b5d7 Mon Sep 17 00:00:00 2001 From: Junyan Qin Date: Mon, 14 Apr 2025 23:45:00 +0800 Subject: [PATCH] fix(botmgr): ref errors --- .../controller/groups/platform/adapters.py | 15 +++++++++++++++ pkg/api/http/controller/groups/system.py | 2 +- pkg/platform/botmgr.py | 19 +++++++++++-------- pkg/plugin/context.py | 2 +- 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/pkg/api/http/controller/groups/platform/adapters.py b/pkg/api/http/controller/groups/platform/adapters.py index de5a1eae..fa8b2d9c 100644 --- a/pkg/api/http/controller/groups/platform/adapters.py +++ b/pkg/api/http/controller/groups/platform/adapters.py @@ -23,3 +23,18 @@ class AdaptersRouterGroup(group.RouterGroup): return self.success(data={ 'adapter': adapter_info }) + + @self.route('//icon', methods=['GET']) + async def _(adapter_name: str) -> quart.Response: + + adapter_manifest = self.ap.platform_mgr.get_available_adapter_manifest_by_name(adapter_name) + + if adapter_manifest is None: + return self.http_status(404, -1, 'adapter not found') + + icon_path = adapter_manifest.icon_rel_path + + if icon_path is None: + return self.http_status(404, -1, 'icon not found') + + return await quart.send_file(icon_path) \ No newline at end of file diff --git a/pkg/api/http/controller/groups/system.py b/pkg/api/http/controller/groups/system.py index 71d0d8df..04ace284 100644 --- a/pkg/api/http/controller/groups/system.py +++ b/pkg/api/http/controller/groups/system.py @@ -16,7 +16,7 @@ class SystemRouterGroup(group.RouterGroup): data={ "version": constants.semantic_version, "debug": constants.debug_mode, - "enabled_platform_count": len(self.ap.platform_mgr.adapters) + "enabled_platform_count": len(self.ap.platform_mgr.get_running_adapters()) } ) diff --git a/pkg/platform/botmgr.py b/pkg/platform/botmgr.py index 8461461f..6073243d 100644 --- a/pkg/platform/botmgr.py +++ b/pkg/platform/botmgr.py @@ -118,11 +118,6 @@ class RuntimeBot: # 控制QQ消息输入输出的类 class PlatformManager: - - # adapter: msadapter.MessageSourceAdapter = None - adapters: list[msadapter.MessagePlatformAdapter] = [] # deprecated - - message_platform_adapter_components: list[engine.Component] = [] # deprecated # ====== 4.0 ====== ap: app.Application = None @@ -136,7 +131,6 @@ class PlatformManager: def __init__(self, ap: app.Application = None): self.ap = ap - self.adapters = [] self.bots = [] self.adapter_components = [] self.adapter_dict = {} @@ -151,6 +145,9 @@ class PlatformManager: await self.load_bots_from_db() + def get_running_adapters(self) -> list[msadapter.MessagePlatformAdapter]: + return [bot.adapter for bot in self.bots if bot.enable] + async def load_bots_from_db(self): self.ap.logger.info('Loading bots from db...') @@ -207,14 +204,20 @@ class PlatformManager: def get_available_adapters_info(self) -> list[dict]: return [ component.to_plain_dict() - for component in self.message_platform_adapter_components + for component in self.adapter_components ] def get_available_adapter_info_by_name(self, name: str) -> dict | None: - for component in self.message_platform_adapter_components: + for component in self.adapter_components: if component.metadata.name == name: return component.to_plain_dict() return None + + def get_available_adapter_manifest_by_name(self, name: str) -> engine.Component | None: + for component in self.adapter_components: + if component.metadata.name == name: + return component + return None async def write_back_config(self, adapter_name: str, adapter_inst: msadapter.MessagePlatformAdapter, config: dict): # index = -2 diff --git a/pkg/plugin/context.py b/pkg/plugin/context.py index 3ff1ffc7..1672b1ae 100644 --- a/pkg/plugin/context.py +++ b/pkg/plugin/context.py @@ -127,7 +127,7 @@ class APIHost: Returns: list[platform.adapter.MessageSourceAdapter]: 已启用的消息平台适配器列表 """ - return self.ap.platform_mgr.adapters + return self.ap.platform_mgr.get_running_adapters() async def send_active_message( self,