This commit is contained in:
qsc
2026-07-31 00:05:52 +08:00
parent fb6320b23b
commit e1e1a3d608
6 changed files with 385 additions and 492 deletions
+12
View File
@@ -37,6 +37,18 @@
帮战记录:帮战 服务器
阵营沙盘:沙盘 服务器
诛恶事件:诛恶 服务器
【角色名片】
名片缓存:名片 服务器 角色
名片历史:全名片 服务器 角色
随机名片:随机秀 服务器 [门派] [体型]
【奇遇相关】
奇遇记录:奇遇 服务器 角色 | 查询 服务器 角色
未触发的:未出 服务器 角色
奇遇汇总:汇总 服务器 [天数]
近期奇遇:近期 服务器 [数量]
奇遇统计:统计 奇遇 [服务器] [数量]
奇遇攻略:攻略 奇遇
## 安装与依赖
-25
View File
@@ -125,29 +125,4 @@ class AIJX3Service:
processor=processor,
template=""
)
return_data = self._init_return_data()
# 1. 构造请求参数
params = {"serverName": server}
# 2. 调用基础请求
data: Optional[Dict[str, Any]] = await self._base_request(
"aijx3_shapan", "POST", params=params
)
if not data:
return_data["msg"] = "获取接口信息失败"
return return_data
# 3. 处理返回数据 (直接提取图片 URL)
pic_url = data.get("picUrl")
if pic_url:
return_data["data"] = pic_url
else:
return_data["msg"] = "接口未返回图片URL"
return return_data
return_data["code"] = 200
return return_data
+207 -423
View File
@@ -725,6 +725,213 @@ class JX3APIService:
)
async def jueshemingpian(self, server: str, name: str) -> Dict[str, Any]:
"""名片缓存"""
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
url = data.get("showAvatar")
if not url:
return_data["msg"] = "未获取到名片图片"
return return_data
server_name = data.get("serverName", server)
role_name = data.get("roleName", name)
show_like = data.get("showLike", 0)
msg0 = f"{server_name}-{role_name}"
msg1 = f"点赞:{show_like}"
return_data["data"] = [
Comp.Plain(msg0),
Comp.Image.fromURL(url),
Comp.Plain(msg1)
]
return await self._request_api(
path="/card/cached",
params={"server": server, "name": name, "token": self.token},
processor=processor,
template=""
)
async def shuijimingpian(self, server:str, force: str, body:str,) -> Dict[str, Any]:
"""随机名片"""
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
url = data.get("showAvatar")
if not url:
return_data["msg"] = "未获取到名片图片"
return return_data
server_name = data.get("serverName")
role_name = data.get("roleName")
msg = f"{server_name}-{role_name}"
return_data["data"] = [
Comp.Plain(msg),
Comp.Image.fromURL(url),
]
return await self._request_api(
path="/card/random",
params={"server": server, "body": body, "force":force, "token": self.token},
processor=processor,
template=""
)
async def shuoyoumingpian(self, server: str, name: str) -> Dict[str, Any]:
"""名片历史"""
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
chain = []
for m in data:
status = "当前展示" if m.get("showActive") else "未展示"
msg = f"{m.get('showIndex')}{status}"
url = m.get("showAvatar")
if not url:
logger.warning(f"{m.get('showIndex')}张名片缺少图片URL,已跳过")
continue
chain.extend([
Comp.Plain(msg),
Comp.Image.fromURL(url),
])
if not chain:
return_data["msg"] = "未获取到有效的名片数据"
return return_data
return_data["data"] = chain
return await self._request_api(
path="/card/records",
params={"server": server, "name": name, "token": self.token},
processor=processor,
template=""
)
async def qiyuhuizong(self, server: str, num: int) -> Dict[str, Any]:
"""奇遇汇总"""
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
for item in data:
latest = item.get("last")
item["latest_name"] = latest.get("name")
item["latest_time"] = format_time(latest.get("time"))
return_data["data"] = {
"items": data,
"server": server,
"num": num,
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
return await self._request_api(
path="/event/collect",
params={"server": server, "num": num, "token": self.token},
processor=processor,
template="qiyuhuizong.html"
)
async def weizuoqiyu(self, server: str, name: str, ) -> Dict[str, Any]:
"""未出奇遇"""
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
return_data["data"]["ptqy"] = []
return_data["data"]["jsqy"] = []
return_data["data"]["name"] = name
return_data["data"]["server"] = server
for item in data:
try:
level = int(item.get("level", 0))
except (TypeError, ValueError):
continue
event_item = {
"event": item.get("name"),
"time": "未触发"
}
if level == 1:
return_data["data"]["ptqy"].append(event_item)
elif level == 2:
return_data["data"]["jsqy"].append(event_item)
if not return_data["data"]["ptqy"] and not return_data["data"]["jsqy"]:
return_data["msg"] = "未查询到未做普通或绝世奇遇"
return return_data
return await self._request_api(
path="/event/missing",
params={"server": server, "name": name, "token": self.token},
processor=processor,
template="weizuoqiyu.html"
)
async def jinqiqiyu(self, server: str, limit: int) -> Dict[str, Any]:
"""近期奇遇"""
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
for item in data:
item["time"] = format_time(item.get("time"))
return_data["data"] = {
"items": data,
"server": server,
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
return await self._request_api(
path="/event/recent",
params={"server": server, "limit": limit, "token": self.token},
processor=processor,
template="jinqiqiyu.html"
)
async def juesheqiyu(self, server: str, name: str, full: int) -> Dict[str, Any]:
"""角色奇遇"""
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
return_data["data"]["ptqy"] = []
return_data["data"]["jsqy"] = []
return_data["data"]["cwqy"] = []
for item in data:
item["time"] = datetime.fromtimestamp(item["time"]).strftime("%Y-%m-%d %H:%M:%S")
if item["level"] == 1:
return_data["data"]["ptqy"].append(item)
if item["level"] == 2:
return_data["data"]["jsqy"].append(item)
if item["level"] == 3:
return_data["data"]["cwqy"].append(item)
return await self._request_api(
path="/event/records",
params= {"server": server, "name": name, "full": full, "token": self.token},
processor=processor,
template="juesheqiyu.html"
)
async def qiyutongji(self, name: str, server: str, limit: int) -> Dict[str, Any]:
"""奇遇统计"""
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
for item in data:
item["time"] = format_time(item.get("time"))
return_data["data"] = {
"items": data,
"server": server,
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
"qiyuname": name
}
return await self._request_api(
path="/event/statistics",
params={"name": name, "server": server, "limit": limit, "token": self.token},
processor=processor,
template="qiyuliebiao.html"
)
@@ -1694,294 +1901,19 @@ class JX3APIService:
return return_data
async def juesheqiyu(self, name: str, server: str) -> Dict[str, Any]:
"""角色奇遇"""
return_data = self._init_return_data()
# 1. 构造请求参数
params = {"server": server, "name": name, "token": self.token}
# 2. 调用基础请求
data: Optional[List[Dict[str, Any]]] = await self._base_request(
"jx3_juesheqiyu", "GET", params=params
)
if not data:
return_data["msg"] = "未找到改角色奇遇信息"
return return_data
# 3. 处理返回数据
try:
return_data["data"]["ptqy"] = []
return_data["data"]["jsqy"] = []
return_data["data"]["cwqy"] = []
for item in data:
item["time"] = datetime.fromtimestamp(item["time"]).strftime("%Y-%m-%d %H:%M:%S")
if item["level"] == 1:
return_data["data"]["ptqy"].append(item)
if item["level"] == 2:
return_data["data"]["jsqy"].append(item)
if item["level"] == 3:
return_data["data"]["cwqy"].append(item)
except Exception as e:
logger.error(f"处理返回数据失败: {e}")
return_data["msg"] = "处理返回数据失败"
return return_data
# 4. 加载模板
try:
return_data["temp"] = await load_template("juesheqiyu.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
return_data["code"] = 200
return return_data
async def weizuoqiyu(self, name: str, server: str) -> Dict[str, Any]:
"""未做奇遇"""
return_data = self._init_return_data()
# 1. 构造请求参数
params = {"server": server, "name": name, "token": self.token}
# 2. 调用基础请求
data: Optional[List[Dict[str, Any]]] = await self._base_request(
"jx3_weizuoqiyu", "GET", params=params
)
if not data:
return_data["msg"] = "未查询到未做奇遇信息"
return return_data
if not isinstance(data, list):
return_data["msg"] = "获取接口信息失败或数据格式错误"
return return_data
# 3. 处理返回数据
try:
return_data["data"]["ptqy"] = []
return_data["data"]["jsqy"] = []
return_data["data"]["name"] = name
return_data["data"]["server"] = server
for item in data:
event_name = item.get("name") or item.get("event")
if not event_name:
continue
try:
level = int(item.get("level", 0))
except (TypeError, ValueError):
continue
event_item = {
"event": event_name,
"time": "未触发"
}
if level == 1:
return_data["data"]["ptqy"].append(event_item)
elif level == 2:
return_data["data"]["jsqy"].append(event_item)
if not return_data["data"]["ptqy"] and not return_data["data"]["jsqy"]:
return_data["msg"] = "未查询到未做普通或绝世奇遇"
return return_data
except Exception as e:
logger.error(f"处理返回数据失败: {e}")
return_data["msg"] = "处理返回数据失败"
return return_data
# 4. 加载模板
try:
return_data["temp"] = await load_template("weizuoqiyu.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
return_data["code"] = 200
return return_data
async def qiyutongji(self, name: str, server: str) -> Dict[str, Any]:
"""奇遇统计"""
return_data = self._init_return_data()
params = {"server": server, "name": name, "token": self.token}
data_list: Optional[List[Dict[str, Any]]] = await self._base_request("jx3_qiyutongji", "GET", params=params)
if not data_list or not isinstance(data_list, list):
return_data["msg"] = "获取接口信息失败或数据格式错误"
return return_data
# 格式化时间
try:
for item in data_list:
item["time"] = datetime.fromtimestamp(item["time"]).strftime("%Y-%m-%d %H:%M:%S")
except Exception as e:
logger.error(f"数据处理时出错: {e}")
return_data["msg"] = "处理接口返回信息时出错"
return return_data
# 准备模板渲染数据
try:
return_data["data"] = {
"items": data_list,
"server": server,
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
"qiyuname": name
}
except Exception as e:
logger.error(f"模板数据准备失败: {e}")
return_data["msg"] = "系统错误:模板渲染数据准备失败"
return return_data
# 加载模板
try:
return_data["temp"] = await load_template("qiyuliebiao.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
return_data["code"] = 200
return return_data
async def jinqiqiyu(self, server: str) -> Dict[str, Any]:
"""近期奇遇"""
return_data = self._init_return_data()
params = {"server": server, "token": self.token}
data_list: Optional[List[Dict[str, Any]]] = await self._base_request(
"jx3_jinqiqiyu", "GET", params=params
)
if not data_list or not isinstance(data_list, list):
return_data["msg"] = "未查询到近期奇遇信息"
return return_data
# 格式化时间
try:
for item in data_list:
event_time = item.get("time")
if event_time:
try:
item["time"] = datetime.fromtimestamp(int(event_time)).strftime("%Y-%m-%d %H:%M:%S")
except (TypeError, ValueError, OSError):
item["time"] = str(event_time)
else:
item["time"] = ""
except Exception as e:
logger.error(f"数据处理时出错: {e}")
return_data["msg"] = "处理接口返回信息时出错"
return return_data
# 准备模板渲染数据
try:
return_data["data"] = {
"items": data_list,
"server": server,
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
except Exception as e:
logger.error(f"模板数据准备失败: {e}")
return_data["msg"] = "系统错误:模板渲染数据准备失败"
return return_data
# 加载模板
try:
return_data["temp"] = await load_template("jinqiqiyu.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
return_data["code"] = 200
return return_data
async def qiyuhuizong(self, server: str, num: int = 7) -> Dict[str, Any]:
"""奇遇汇总"""
return_data = self._init_return_data()
if num < 1 or num > 30:
return_data["msg"] = "汇总天数需在 1-30 天之间"
return return_data
params = {"server": server, "num": num, "token": self.token}
data_list: Optional[List[Dict[str, Any]]] = await self._base_request(
"jx3_qiyuhuizong", "GET", params=params
)
if not data_list or not isinstance(data_list, list):
return_data["msg"] = "未查询到奇遇汇总信息"
return return_data
# 整理最近一次触发信息
try:
for item in data_list:
latest = item.get("data")
if not isinstance(latest, dict):
latest = {}
item["latest_name"] = latest.get("name", "")
latest_time = latest.get("time")
if latest_time:
try:
item["latest_time"] = datetime.fromtimestamp(int(latest_time)).strftime("%Y-%m-%d %H:%M:%S")
except (TypeError, ValueError, OSError):
item["latest_time"] = str(latest_time)
else:
item["latest_time"] = ""
except Exception as e:
logger.error(f"数据处理时出错: {e}")
return_data["msg"] = "处理接口返回信息时出错"
return return_data
# 准备模板渲染数据
try:
return_data["data"] = {
"items": data_list,
"server": server,
"num": num,
"update_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
except Exception as e:
logger.error(f"模板数据准备失败: {e}")
return_data["msg"] = "系统错误:模板渲染数据准备失败"
return return_data
# 加载模板
try:
return_data["temp"] = await load_template("qiyuhuizong.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
return_data["code"] = 200
return return_data
@@ -2436,46 +2368,7 @@ class JX3APIService:
return return_data
async def jueshemingpian(self, server: str, name: str) -> Dict[str, Any]:
"""单张名片"""
return_data = self._init_return_data()
# 1. 构造请求参数
params = {"server": server, "name": name, "token": self.token}
# 2. 调用基础请求
data: Optional[Dict[str, Any]] = await self._base_request(
"jx3_jieshemingpian", "GET", params=params
)
if not data or not isinstance(data, dict):
return_data["msg"] = "未找到该角色名片"
return return_data
# 3. 处理返回数据
try:
url = data.get("showAvatar")
if not url:
return_data["msg"] = "未获取到名片图片"
return return_data
server_name = data.get("serverName", server)
role_name = data.get("roleName", name)
show_like = data.get("showLike", 0)
msg = f"{server_name}-{role_name} 点赞:{show_like}"
return_data["data"] = [
Comp.Plain(msg),
Comp.Image.fromURL(url),
]
except Exception as e:
logger.error(f"数据处理时出错: {e}")
return_data["msg"] = "处理接口返回信息时出错"
return return_data
return_data["code"] = 200
return return_data
async def jingnai(self, name: str, server: str) -> Dict[str, Any]:
@@ -2558,76 +2451,10 @@ class JX3APIService:
return return_data
async def shuoyoumingpian(self, server: str, name: str) -> Dict[str, Any]:
"""所有名片"""
return_data = self._init_return_data()
# 1. 构造请求参数
params = {"server": server, "name": name, "token": self.token}
# 2. 调用基础请求
data: Optional[list[Dict[str, Any]]] = await self._base_request(
"jx3_allmingpian", "GET", params=params
)
if not data:
return_data["msg"] = "未找到该角色"
return return_data
# 3. 处理返回数据
try:
chain = []
for m in data:
status = "已启用" if m.get("showActive") else "未启用"
msg = f"{m.get('showIndex')}{status}"
url = m.get("showAvatar")
if not url:
logger.warning(f"{m.get('showIndex')}张名片缺少图片URL,已跳过")
continue
chain.extend([
Comp.Plain(msg),
Comp.Image.fromURL(url),
])
if not chain:
return_data["msg"] = "未获取到有效的名片数据"
return return_data
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
async def shuijimingpian(self, force: str, body:str, server:str) -> Dict[str, Any]:
"""随机名片"""
return_data = self._init_return_data()
# 1. 构造请求参数
params = {"server": server, "body": body, "force":force, "token": self.token}
# 2. 调用基础请求
data: Optional[Dict[str, Any]] = await self._base_request(
"jx3_shuijimingpian", "GET", params=params
)
if not data:
return_data["msg"] = "获取接口信息失败"
return return_data
# 3. 处理返回数据 (直接提取图片 URL)
return_data["data"] = data['showAvatar']
return_data["code"] = 200
return return_data
@@ -2901,50 +2728,7 @@ class JX3APIService:
return return_data
async def qiyugonglue(self, name: str) -> Dict[str, Any]:
"""奇遇攻略"""
return_data = self._init_return_data()
# 1. 构造请求参数
params = {"name": name}
# 2. 调用基础请求
data: Optional[list[Dict[str, Any]]] = await self._base_request(
"jx3box_qiyugonglue", "GET", params=params, out_key="list"
)
if not data:
return_data["msg"] = "未找到该奇遇"
return return_data
# 提取dwID
dwID = data[0]["dwID"]
url = f"https://node.jx3box.com/serendipity/{dwID}/achievement"
logger.debug(f"获取ID接口地址:{url}")
data1 = await self._api.get(url)
url1 = f"https://cms.jx3box.com/api/cms/wiki/post/type/achievement/source/{data1['achievement_id']}"
logger.debug(f"获取攻略接口地址:{url1}")
# 获取奇遇攻略
data2 = await self._api.get(url1, out_key="data")
if not data2:
return_data["msg"] = "获取攻略数据异常"
return return_data
# 4. 处理数据
try:
return_data["data"] = {}
content = data2["post"]["content"]
return_data["temp"] = content
except Exception as e:
logger.exception("处理返回数据失败")
return_data["msg"] = "处理返回数据失败"
return return_data
return_data["code"] = 200
return return_data
async def hong1(self, name: str) -> Dict[str, Any]:
+85
View File
@@ -0,0 +1,85 @@
import json
import html
import re
from datetime import datetime, timedelta
from typing import Dict, Any, Optional, List, Union
from inspect import isawaitable
from typing import Any, Awaitable, Callable, Dict, Optional
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
from .fun_basic import load_template,gold_to_parts,week_to_num,compare_date_str,format_time,format_remaining
class JX3BOXService:
def __init__(self, config: AstrBotConfig, sqlite: AsyncSQLiteDB, cache_sqlite: Optional[AsyncSQLiteDB] = None):
# 实例化 API Client
self._api: APIClient = APIClient()
# 引用插件配置文件
self._config = config
# 引用sqlite
self._sql_db = sqlite
self._cache_db = cache_sqlite or sqlite
async def close(self):
"""释放底层 APIClient 资源"""
if self._api:
await self._api.close()
def _init_return_data(self) -> Dict[str, Any]:
"""初始化标准的返回数据结构"""
return {
"code": 0,
"msg": "功能函数未执行",
"data": {},
"temp": "",
"icons": {}
}
async def qiyugonglue(self, name: str) -> Dict[str, Any]:
"""奇遇攻略"""
return_data = self._init_return_data()
# 1. 调用基础请求
api_url = "https://node.jx3box.com/serendipities"
data = await self._api.get(api_url, params={"name": name}, out_key="list")
if not data:
return_data["msg"] = "未找到该奇遇"
return return_data
# 提取dwID
dwID = data[0]["dwID"]
url = f"https://node.jx3box.com/serendipity/{dwID}/achievement"
logger.debug(f"获取ID接口地址:{url}")
data1 = await self._api.get(url)
url1 = f"https://cms.jx3box.com/api/cms/wiki/post/type/achievement/source/{data1['achievement_id']}"
logger.debug(f"获取攻略接口地址:{url1}")
# 获取奇遇攻略
data2 = await self._api.get(url1, out_key="data")
if not data2:
return_data["msg"] = "获取攻略数据异常"
return return_data
# 4. 处理数据
try:
return_data["data"] = {}
content = data2["post"]["content"]
return_data["temp"] = content
except Exception as e:
logger.exception("处理返回数据失败")
return_data["msg"] = "处理返回数据失败"
return return_data
return_data["code"] = 200
return return_data
+56 -34
View File
@@ -8,6 +8,7 @@ from astrbot.core.utils.session_waiter import (
from .jx3api_data import JX3APIService
from .aijx3_data import AIJX3Service
from .jx3box_data import JX3BOXService
from .async_task import AsyncTask
from .bilei_data import BiLeidata
@@ -37,10 +38,19 @@ class MessageBuilder:
"18:剑侠录总览"
)
def __init__(self, server: str, jx3api: JX3APIService, aijx3: AIJX3Service,bilei: BiLeidata, jx3at: AsyncTask, icons: dict[str, dict[str, str]]):
def __init__(self,
server: str,
jx3api: JX3APIService,
aijx3: AIJX3Service,
jx3box: JX3BOXService,
bilei: BiLeidata,
jx3at: AsyncTask,
icons: dict[str, dict[str, str]]
):
self.server = server
self.jx3api = jx3api
self.aijx3 = aijx3
self.jx3box = jx3box
self.bilei = bilei
self.jx3at = jx3at
self.icons = icons
@@ -449,6 +459,45 @@ class MessageBuilder:
""" 诛恶事件 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.zhueevent(server,20))
async def jueshemingpian(self, event: AstrMessageEvent, server: str , name: str , ):
""" 名片 服务器 角色 """
return await self.plain_chain(event, lambda: self.jx3api.jueshemingpian(server, name))
async def shuoyoumingpian(self, event: AstrMessageEvent, server: str, name: str, ):
""" 全名片 服务器 角色 """
return await self.plain_chain(event, lambda: self.jx3api.shuoyoumingpian(server,name))
async def shuijimingpian(self, event: AstrMessageEvent,server: str, force: str = "", body: str = "", ):
""" 随机秀 服务器 门派 体型 """
return await self.plain_chain(event, lambda: self.jx3api.shuijimingpian(server,force,body))
async def qiyuhuizong(self, event: AstrMessageEvent,server: str, num: str = "7" ):
""" 汇总 服务器 天数 """
return await self.T2I_image_msg(event, lambda: self.jx3api.qiyuhuizong(server, num))
async def weizuoqiyu(self, event: AstrMessageEvent,server: str, name: str, ):
""" 未出 服务器 角色 """
return await self.T2I_image_msg(event, lambda: self.jx3api.weizuoqiyu(server,name))
async def jinqiqiyu(self, event: AstrMessageEvent,server: str, limit: int = 20):
""" 近期 服务器 数量"""
return await self.T2I_image_msg(event, lambda: self.jx3api.jinqiqiyu(server,limit))
async def juesheqiyu(self, event: AstrMessageEvent, server: str, name: str):
""" 奇遇 服务器 角色 """
return await self.T2I_image_msg(event, lambda: self.jx3api.juesheqiyu(server,name, 0))
async def qiyutongji(self, event: AstrMessageEvent,adventureName: str, server: str = "",limit: int = 20):
""" 统计 奇遇 服务器 数量"""
return await self.T2I_image_msg(event, lambda: self.jx3api.qiyutongji(adventureName,server,limit))
async def qiyugonglue(self, event: AstrMessageEvent,name: str):
""" 攻略 奇遇"""
return await self.T2I_image_msg(event, lambda: self.jx3box.qiyugonglue(name))
@@ -593,37 +642,18 @@ class MessageBuilder:
return await self.plain_msg(event, lambda: self.jx3api.pianzhi(qq))
async def juesheqiyu(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""):
""" 奇遇 角色名称 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.juesheqiyu(name, self.serverdefault(server)))
async def weizuoqiyu(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""):
""" 未做奇遇 角色名称 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.weizuoqiyu(name, self.serverdefault(server)))
async def qiyutongji(self, event: AstrMessageEvent,adventureName: str = "阴阳两界", server: str = ""):
""" 奇遇统计 奇遇名称 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.qiyutongji(adventureName,self.serverdefault(server)))
async def jinqiqiyu(self, event: AstrMessageEvent,server: str = ""):
""" 近期奇遇 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.jinqiqiyu(self.serverdefault(server)))
async def qiyuhuizong(self, event: AstrMessageEvent,num_or_server: str = "7", server: str = ""):
""" 奇遇汇总 天数 服务器"""
num = 7
target_server = server
if str(num_or_server).isdigit():
num = int(num_or_server)
else:
target_server = num_or_server
return await self.T2I_image_msg(event, lambda: self.jx3api.qiyuhuizong(self.serverdefault(target_server), num))
@@ -653,9 +683,7 @@ class MessageBuilder:
return await self.plain_msg(event, lambda: self.jx3api.jueshe(name, self.serverdefault(server)))
async def jueshemingpian(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""):
""" 名片 角色 服务器"""
return await self.plain_chain(event, lambda: self.jx3api.jueshemingpian(self.serverdefault(server), name))
async def jingnai(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""):
@@ -663,14 +691,10 @@ class MessageBuilder:
return await self.T2I_image_msg(event, lambda: self.jx3api.jingnai(name, self.serverdefault(server)))
async def shuoyoumingpian(self, event: AstrMessageEvent, name: str = "飞翔大野猪", server: str = ""):
""" 所有名片 角色 服务器"""
return await self.plain_chain(event, lambda: self.jx3api.shuoyoumingpian( self.serverdefault(server),name))
async def shuijimingpian(self, event: AstrMessageEvent,force: str = "万花", body: str = "萝莉", server: str = ""):
""" 随机名片 职业 体型 服务器"""
return await self.image_msg(event, lambda: self.jx3api.shuijimingpian(force,body, self.serverdefault(server)))
@@ -718,9 +742,7 @@ class MessageBuilder:
return await self.plain_msg(event, lambda: self.jx3api.bagua(name))
async def qiyugonglue(self, event: AstrMessageEvent,name: str):
""" 奇遇攻略 奇遇名称"""
return await self.T2I_image_msg(event, lambda: self.jx3api.qiyugonglue(name))
async def hong(self, event: AstrMessageEvent,name: str = "易筋经"):
+25 -10
View File
@@ -10,6 +10,7 @@ from astrbot.api import AstrBotConfig
from .core.sqlite import AsyncSQLiteDB
from .core.jx3api_data import JX3APIService
from .core.aijx3_data import AIJX3Service
from .core.jx3box_data import JX3BOXService
from .core.async_task import AsyncTask
from .core.bilei_data import BiLeidata
from .core.message import MessageBuilder
@@ -90,6 +91,9 @@ class Jx3ApiPlugin(Star):
if self.aijx3:
await self.aijx3.close()
if self.jx3box:
await self.jx3box.close()
if self.local_sql_db:
await self.local_sql_db.close()
@@ -149,8 +153,9 @@ class Jx3ApiPlugin(Star):
self.bilei = BiLeidata(self.local_sql_db)
self.jx3api = JX3APIService(self.conf, self.plugin_sql_db, self.local_sql_db)
self.aijx3 = AIJX3Service(self.conf, self.plugin_sql_db, self.local_sql_db)
self.jx3box = JX3BOXService(self.conf, self.plugin_sql_db, self.local_sql_db)
self.jx3at = AsyncTask(cast(Context, self.context), self.conf, self.jx3api, self.local_sql_db)
self.jx3cmd = MessageBuilder(self.server, self.jx3api, self.aijx3, self.bilei, self.jx3at, self.icons)
self.jx3cmd = MessageBuilder(self.server, self.jx3api, self.aijx3, self.jx3box, self.bilei, self.jx3at, self.icons)
async def init_bilei_data(self):
@@ -245,6 +250,16 @@ class Jx3ApiPlugin(Star):
"帮战": self. jx3cmd.bangzhanjilu,
"沙盘": self. jx3cmd.shapan,
"诛恶": self. jx3cmd.zhueevent,
"名片": self. jx3cmd.jueshemingpian,
"全名片": self. jx3cmd.shuoyoumingpian,
"随机秀": self. jx3cmd.shuijimingpian,
"奇遇": self. jx3cmd.juesheqiyu,
"查询": self. jx3cmd.juesheqiyu,
"未出": self. jx3cmd.weizuoqiyu,
"汇总": self. jx3cmd.qiyuhuizong,
"近期": self. jx3cmd.jinqiqiyu,
"统计": self. jx3cmd.qiyutongji,
"攻略": self. jx3cmd.qiyugonglue,
"科举": self. jx3cmd.keju,
@@ -268,7 +283,7 @@ class Jx3ApiPlugin(Star):
"资历": self. jx3cmd.zili,
"解密": self. jx3cmd.jiemi,
"攻略": self. jx3cmd.qiyugonglue,
"": self. jx3cmd.hong,
"配装": self. jx3cmd.peizhuang,
"百战": self. jx3cmd.baizhan,
@@ -282,21 +297,21 @@ class Jx3ApiPlugin(Star):
"骗子": self. jx3cmd.pianzhi,
"奇遇": self. jx3cmd.juesheqiyu,
"未做奇遇": self. jx3cmd.weizuoqiyu,
"奇遇统计": self. jx3cmd.qiyutongji,
"近期奇遇": self. jx3cmd.jinqiqiyu,
"奇遇汇总": self. jx3cmd.qiyuhuizong,
"招募": self. jx3cmd.tuanduizhaomu,
"拜师": self. jx3cmd.baishi,
"收徒": self. jx3cmd.shoutu,
"角色": self. jx3cmd.jueshe,
"名片": self. jx3cmd.jueshemingpian,
"精耐": self. jx3cmd.jingnai,
"所有名片": self. jx3cmd.shuoyoumingpian,
"随机名片": self. jx3cmd.shuijimingpian,