增加奇遇攻略

This commit is contained in:
2026-01-20 12:38:52 +08:00
parent cf86459da0
commit 26c9fca6e1
4 changed files with 91 additions and 5 deletions
+47
View File
@@ -2,6 +2,7 @@
# pyright: reportArgumentType=false
# pyright: reportAttributeAccessIssue=false
# pyright: reportIndexIssue=false
# pyright: reportOptionalMemberAccess=false
from datetime import datetime
from typing import Dict, Any, Optional, List, Union
@@ -1023,3 +1024,49 @@ class JX3Service:
return_data["code"] = 200
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[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"拼接URL{url}")
# 3. 获取奇遇攻略
try:
# 获取achievement_id
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"拼接URL{url1}")
# 获取奇遇攻略
data2 = await self._api.get(url1, out_key="data")
except Exception as e:
logger.exception("获取奇遇攻略数据失败")
return_data["msg"] = "获取奇遇攻略数据失败"
# 4. 处理数据
try:
return_data["data"] = data2["post"]["title"]
content = data2["post"]["content"]
except Exception as e:
logger.exception("处理返回数据失败")
return_data["msg"] = "处理返回数据失败"
return_data["temp"] = content
return_data["code"] = 200
return return_data
+11
View File
@@ -239,5 +239,16 @@
"limit": "10",
"token": ""
}
},
"jx3box_qiyugonglue":{
"url":"https://node.jx3box.com/serendipities",
"method":"GET",
"description":"魔盒根据名称查询对应奇遇dwID",
"params":{
"name": "阴阳",
"per": "2",
"client": "std",
"page": "1"
}
}
}
+24 -2
View File
@@ -1,3 +1,5 @@
# pyright: reportOptionalMemberAccess=false
import json
import shutil
import pathlib
@@ -258,9 +260,9 @@ class Jx3ApiPlugin(Star):
yield event.plain_result("猪脑过载,请稍后再试")
@jx3.command("区服奇遇")
@jx3.command("奇遇统计")
async def jx3_qufuqiyu(self, event: AstrMessageEvent,adventureName: str = "阴阳两界", server: str = ""):
"""剑三 区服奇遇 奇遇名称 服务器"""
"""剑三 奇遇统计 奇遇名称 服务器"""
try:
data= await self.jx3fun.qiyu(adventureName,self.serverdefault(server))
if data["code"] == 200:
@@ -274,6 +276,26 @@ class Jx3ApiPlugin(Star):
yield event.plain_result("猪脑过载,请稍后再试")
@jx3.command("奇遇攻略")
async def jx3_qiyugonglue(self, event: AstrMessageEvent,name: str):
"""剑三 奇遇攻略 奇遇名称"""
try:
data= await self.jx3fun.qiyugonglue(name)
if data["code"] == 200:
url = await self.html_render(data["temp"], {}, options={})
chain = [
Comp.Plain(f"{data['data']} \n"),
Comp.Image.fromURL(f"{url}")
]
yield event.chain_result(chain)
else:
yield event.plain_result(data["msg"])
return
except Exception as e:
logger.error(f"功能函数执行错误: {e}")
yield event.plain_result("猪脑过载,请稍后再试")
@jx3.command("金价")
async def jx3_jinjia(self, event: AstrMessageEvent,server: str = "", limit:str = "15"):
"""剑三 金价 服务器"""
+8 -2
View File
@@ -194,9 +194,15 @@
</div>
<div class="command">
<div class="cmd-name">区服奇遇</div>
<div class="cmd-name">奇遇统计</div>
<div class="cmd-desc">查询服务器某个奇遇的触发情况</div>
<div class="cmd-usage">剑三 区服奇遇 奇遇名称 [服务器]</div>
<div class="cmd-usage">剑三 奇遇统计 奇遇名称 [服务器]</div>
</div>
<div class="command">
<div class="cmd-name">奇遇攻略</div>
<div class="cmd-desc">查询服务器某个奇遇的触发情况</div>
<div class="cmd-usage">剑三 奇遇攻略 奇遇名称</div>
</div>
</div>
</div>