From 0758bc2940a2381f9c2dbbc813afe6f8912dafd1 Mon Sep 17 00:00:00 2001 From: qsc20001102 Date: Tue, 3 Mar 2026 09:55:59 +0800 Subject: [PATCH] ok --- core/jx3_data.py | 36 +++++++++++++++++++++++++++++++++--- core/message.py | 15 ++++++++++++++- data/api_config.json | 10 ++++++++++ 3 files changed, 57 insertions(+), 4 deletions(-) diff --git a/core/jx3_data.py b/core/jx3_data.py index 4d1cc09..3406be7 100644 --- a/core/jx3_data.py +++ b/core/jx3_data.py @@ -4,6 +4,7 @@ from typing import Dict, Any, Optional, List, Union from astrbot.api import logger from astrbot.api import AstrBotConfig +import astrbot.api.message_components as Comp from .request import APIClient from .sqlite import AsyncSQLiteDB @@ -823,8 +824,8 @@ class JX3Service: params = {"server": server, "name": name,"token": self.token} # 2. 调用基础请求 - data: Optional[Dict[str, Any]] = await self._base_request( - "jx3_jieshemingpian", "GET", params=params + data: Optional[list[Dict[str, Any]]] = await self._base_request( + "jx3_allmingpian", "GET", params=params ) if not data: @@ -832,7 +833,35 @@ class JX3Service: return return_data # 3. 处理返回数据 (直接提取图片 URL) - return_data["data"] = data['showAvatar'] + list_msg = [] + list_url = [] + + try: + for m in data: + msg = f"第{m.get('showIndex')}张 " + if m.get('showActive'): + msg += "未启用" + else: + msg += "已启用" + list_msg.append(msg) + list_url.append(m.get('showAvatar')) + + chain = [ + Comp.Plain(list_msg[0]), + Comp.Image.fromURL(list_url[0]), + Comp.Plain(list_msg[1]), + Comp.Image.fromURL(list_url[1]), + Comp.Plain(list_msg[2]), + Comp.Image.fromURL(list_url[2]), + ] + except Exception as e: + logger.error(f"数据处理时出错: {e}") + return_data["msg"] = "处理接口返回信息时出错" + return return_data + + return_data["data"] = chain + + return_data["code"] = 200 return return_data @@ -856,6 +885,7 @@ class JX3Service: # 3. 处理返回数据 (直接提取图片 URL) return_data["data"] = data['showAvatar'] + return_data["code"] = 200 return return_data diff --git a/core/message.py b/core/message.py index ee506ef..2505b5c 100644 --- a/core/message.py +++ b/core/message.py @@ -94,6 +94,19 @@ class MessageBuilder: await event.send(event.plain_result("猪脑过载,请稍后再试")) + async def plain_chain(self, event: AstrMessageEvent, action): + """富媒体消息""" + data= await action() + try: + if data["code"] == 200: + await event.send(event.chain_result(data["data"])) + else: + await event.send(event.plain_result(data["msg"])) + except Exception as e: + logger.error(f"功能函数执行错误: {e}") + await event.send(event.plain_result("猪脑过载,请稍后再试")) + + async def handler_plain_image_msg(self, event: AstrMessageEvent, action1, action2): """两轮会话消息发送通用,先文本列表等反馈序号在发送图片""" # 会话触发 @@ -281,7 +294,7 @@ class MessageBuilder: async def jx3_jueshemingpian(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""): """剑三 名片 角色 服务器""" - return await self.image_msg(event, lambda: self.jx3api.jueshemingpian( self.serverdefault(server),name)) + return await self.plain_chain(event, lambda: self.jx3api.jueshemingpian( self.serverdefault(server),name)) async def jx3_shuijimingpian(self, event: AstrMessageEvent,force: str = "万花", body: str = "萝莉", server: str = ""): diff --git a/data/api_config.json b/data/api_config.json index c42213d..ffdcb4d 100644 --- a/data/api_config.json +++ b/data/api_config.json @@ -321,5 +321,15 @@ "mount": "", "star": "1" } + }, + "jx3_allmingpian":{ + "url":"https://www.jx3api.com/data/show/records", + "method":"GET", + "description":"获取角色全部名片", + "params":{ + "server": "", + "name": "", + "token": "" + } } } \ No newline at end of file