This commit is contained in:
2026-07-29 19:14:00 +08:00
parent 1655d1ef50
commit ad379a965a
7 changed files with 70 additions and 107 deletions
+3
View File
@@ -26,6 +26,9 @@
庐园广记一百强 服务器 | 浩气神兵宝甲五十强 服务器 | 恶人神兵宝甲五十强 服务器 | 浩气爱心帮会五十强 服务器 | 恶人爱心帮会五十强 服务器 | 庐园广记一百强 服务器 | 浩气神兵宝甲五十强 服务器 | 恶人神兵宝甲五十强 服务器 | 浩气爱心帮会五十强 服务器 | 恶人爱心帮会五十强 服务器 |
赛季恶人五十强 服务器 | 赛季浩气五十强 服务器 | 上周恶人五十强 服务器 | 上周浩气五十强 服务器 | 本周恶人五十强 服务器 | 本周浩气五十强 服务器 赛季恶人五十强 服务器 | 赛季浩气五十强 服务器 | 上周恶人五十强 服务器 | 上周浩气五十强 服务器 | 本周恶人五十强 服务器 | 本周浩气五十强 服务器
试炼排行:试炼排行 服务器 心法 试炼排行:试炼排行 服务器 心法
【物价交易】
阵营拍卖:阵营拍卖 服务器 [物品] [数量]
## 安装与依赖 ## 安装与依赖
+2 -2
View File
@@ -10,7 +10,7 @@ from astrbot.api import logger
from astrbot.api import AstrBotConfig from astrbot.api import AstrBotConfig
from .jx3_data import JX3Service from .jx3api_data import JX3APIService
from .sqlite import AsyncSQLiteDB from .sqlite import AsyncSQLiteDB
class AsyncTask: class AsyncTask:
@@ -18,7 +18,7 @@ class AsyncTask:
基于 APScheduler 的后台异步监控任务管理类 基于 APScheduler 的后台异步监控任务管理类
""" """
def __init__(self, context: Context, config: AstrBotConfig, jx3api: JX3Service, sqlite: AsyncSQLiteDB): def __init__(self, context: Context, config: AstrBotConfig, jx3api: JX3APIService, sqlite: AsyncSQLiteDB):
self.context = context self.context = context
self.conf = config self.conf = config
self.jx3fun = jx3api self.jx3fun = jx3api
+34 -76
View File
@@ -38,7 +38,7 @@ ACHIEVEMENT_CHOICES = [
ACHIEVEMENT_CHOICE_MAP = {index: (menu_id, title) for index, menu_id, title in ACHIEVEMENT_CHOICES} ACHIEVEMENT_CHOICE_MAP = {index: (menu_id, title) for index, menu_id, title in ACHIEVEMENT_CHOICES}
class JX3Service: class JX3APIService:
def __init__(self, config: AstrBotConfig, sqlite: AsyncSQLiteDB, cache_sqlite: Optional[AsyncSQLiteDB] = None): def __init__(self, config: AstrBotConfig, sqlite: AsyncSQLiteDB, cache_sqlite: Optional[AsyncSQLiteDB] = None):
# 实例化 API Client # 实例化 API Client
self._api: APIClient = APIClient() self._api: APIClient = APIClient()
@@ -529,6 +529,39 @@ class JX3Service:
) )
async def zhengyingpaimai(self, server: str, name: 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["time"])
return_data["data"]["list"] = data
return await self._request_api(
path="/auction/records",
params={"server": server, "name": name, "limit": limit, "token": self.token},
processor=processor,
template="zhengyingpaimai.html"
)
async def dilujilu(self, server: str) -> Dict[str, Any]:
"""的卢拍卖"""
# 数据处理
async def processor(data: Any, return_data: Dict[str, Any]) -> None:
for item in data:
item["refreshTime"] = format_time(item["refreshTime"])
item["captureTime"] = format_time(item["captureTime"])
item["auctionTime"] = format_time(item["auctionTime"])
return_data["data"]["list"] = data
return await self._request_api(
path="/steed/records",
params={"server": server, "token": self.token},
processor=processor,
template="dilujilu.html"
)
@@ -1446,44 +1479,7 @@ class JX3Service:
async def zhengyingpaimai(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_zhengyingpaimai", "GET", params=params
)
if not data:
return_data["msg"] = "获取接口信息失败"
return return_data
# 3. 处理返回数据
try:
for item in data:
item["time"] = datetime.fromtimestamp(item["time"]).strftime("%Y-%m-%d %H:%M:%S")
return_data["data"]["list"] = data
except Exception as e:
logger.error(f"处理返回数据失败: {e}")
return_data["msg"] = "处理返回数据失败"
return return_data
# 4. 加载模板
try:
return_data["temp"] = await load_template("zhengyingpaimai.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
return_data["code"] = 200
return return_data
@@ -1636,45 +1632,7 @@ class JX3Service:
return return_data return return_data
async def dilujilu(self, server: str) -> Dict[str, Any]:
"""的卢记录"""
return_data = self._init_return_data()
# 1. 构造请求参数
params = {"server": server, "token": self.token}
# 2. 调用基础请求
data: Optional[List[Dict[str, Any]]] = await self._base_request(
"jx3_dilujilu", "GET", params=params
)
if not data:
return_data["msg"] = "获取接口信息失败"
return return_data
# 3. 处理返回数据
try:
for item in data:
item["refresh_time"] = datetime.fromtimestamp(item["refresh_time"]).strftime("%Y-%m-%d %H:%M:%S")
item["capture_time"] = datetime.fromtimestamp(item["capture_time"]).strftime("%Y-%m-%d %H:%M:%S")
item["auction_time"] = datetime.fromtimestamp(item["auction_time"]).strftime("%Y-%m-%d %H:%M:%S")
return_data["data"]["list"] = data
except Exception as e:
logger.error(f"数据处理时出错: {e}")
return_data["msg"] = "处理接口返回信息时出错"
return return_data
# 4. 加载模板
try:
return_data["temp"] = await load_template("dilujilu.html")
except FileNotFoundError as e:
logger.error(f"加载模板失败: {e}")
return_data["msg"] = "系统错误:模板文件不存在"
return return_data
return_data["code"] = 200
return return_data
+9 -9
View File
@@ -6,7 +6,7 @@ from astrbot.core.utils.session_waiter import (
session_waiter, session_waiter,
) )
from .jx3_data import JX3Service from .jx3api_data import JX3APIService
from .async_task import AsyncTask from .async_task import AsyncTask
from .bilei_data import BiLeidata from .bilei_data import BiLeidata
@@ -36,7 +36,7 @@ class MessageBuilder:
"18:剑侠录总览" "18:剑侠录总览"
) )
def __init__(self, server: str, jx3api: JX3Service, bilei: BiLeidata, jx3at: AsyncTask, icons: dict[str, dict[str, str]]): def __init__(self, server: str, jx3api: JX3APIService, bilei: BiLeidata, jx3at: AsyncTask, icons: dict[str, dict[str, str]]):
self.server = server self.server = server
self.jx3api = jx3api self.jx3api = jx3api
self.bilei = bilei self.bilei = bilei
@@ -411,8 +411,13 @@ class MessageBuilder:
""" 试炼排行 服务器 心法 """ """ 试炼排行 服务器 心法 """
return await self.T2I_image_msg(event, lambda: self.jx3api.shilianpaixing(name, server)) return await self.T2I_image_msg(event, lambda: self.jx3api.shilianpaixing(name, server))
async def zhengyingpaimai(self, event: AstrMessageEvent,server: str , name: str = "", limit: int = 50 ):
""" 阵营拍卖 物品名称 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.zhengyingpaimai(server, name, limit))
async def dilujilu(self, event: AstrMessageEvent,server: str ):
""" 的卢 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.dilujilu(server))
async def keju(self, event: AstrMessageEvent,subject: str, limit: int = 5): async def keju(self, event: AstrMessageEvent,subject: str, limit: int = 5):
@@ -534,9 +539,6 @@ class MessageBuilder:
async def zhengyingpaimai(self, event: AstrMessageEvent,name: str = "玄晶", server: str = ""):
""" 阵营拍卖 物品名称 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.zhengyingpaimai( self.serverdefault(server), name))
@@ -554,9 +556,7 @@ class MessageBuilder:
return await self.plain_msg(event, lambda: self.jx3api.tongzhanyy(self.serverdefault(server))) return await self.plain_msg(event, lambda: self.jx3api.tongzhanyy(self.serverdefault(server)))
async def dilujilu(self, event: AstrMessageEvent,server: str = ""):
""" 的卢 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.dilujilu( self.serverdefault(server)))
+6 -4
View File
@@ -8,7 +8,7 @@ from astrbot.api import logger
from astrbot.api import AstrBotConfig from astrbot.api import AstrBotConfig
from .core.sqlite import AsyncSQLiteDB from .core.sqlite import AsyncSQLiteDB
from .core.jx3_data import JX3Service from .core.jx3api_data import JX3APIService
from .core.async_task import AsyncTask from .core.async_task import AsyncTask
from .core.bilei_data import BiLeidata from .core.bilei_data import BiLeidata
from .core.message import MessageBuilder from .core.message import MessageBuilder
@@ -143,7 +143,7 @@ class Jx3ApiPlugin(Star):
self.plugin_sql_db = AsyncSQLiteDB(str(self.plugin_data_path)) self.plugin_sql_db = AsyncSQLiteDB(str(self.plugin_data_path))
# 剑网三功能实例化 # 剑网三功能实例化
self.bilei = BiLeidata(self.local_sql_db) self.bilei = BiLeidata(self.local_sql_db)
self.jx3api = JX3Service(self.conf, self.plugin_sql_db, self.local_sql_db) self.jx3api = JX3APIService(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.jx3at = AsyncTask(cast(Context, self.context), self.conf, self.jx3api, self.local_sql_db)
self.jx3cmd = MessageBuilder(self.server, self.jx3api, self.bilei, self.jx3at, self.icons) self.jx3cmd = MessageBuilder(self.server, self.jx3api, self.bilei, self.jx3at, self.icons)
@@ -231,6 +231,8 @@ class Jx3ApiPlugin(Star):
"本周恶人五十强": self. jx3cmd.benzhouerenwushiqiang, "本周恶人五十强": self. jx3cmd.benzhouerenwushiqiang,
"本周浩气五十强": self. jx3cmd.benzhouhaoqiwushiqiang, "本周浩气五十强": self. jx3cmd.benzhouhaoqiwushiqiang,
"试炼排行": self. jx3cmd.shilianpaixing, "试炼排行": self. jx3cmd.shilianpaixing,
"阵营拍卖": self. jx3cmd.zhengyingpaimai,
"的卢": self. jx3cmd.dilujilu,
"科举": self. jx3cmd.keju, "科举": self. jx3cmd.keju,
@@ -261,11 +263,11 @@ class Jx3ApiPlugin(Star):
"扶摇": self. jx3cmd.fuyaojjiutian, "扶摇": self. jx3cmd.fuyaojjiutian,
"诛恶": self. jx3cmd.zhueevent, "诛恶": self. jx3cmd.zhueevent,
"拍卖": self. jx3cmd.zhengyingpaimai,
"帮战记录": self. jx3cmd.bangzhanjilu, "帮战记录": self. jx3cmd.bangzhanjilu,
"统战": self. jx3cmd.tongzhanyy, "统战": self. jx3cmd.tongzhanyy,
"的卢": self. jx3cmd.dilujilu,
"骗子": self. jx3cmd.pianzhi, "骗子": self. jx3cmd.pianzhi,
"奇遇": self. jx3cmd.juesheqiyu, "奇遇": self. jx3cmd.juesheqiyu,
+10 -10
View File
@@ -94,21 +94,21 @@
<tbody> <tbody>
{% for m in list %} {% for m in list %}
<tr <tr
{% if m.capture_camp_name == '浩气盟' %} {% if m.captureCampName == '浩气盟' %}
class="camp-haoqi" class="camp-haoqi"
{% elif m.capture_camp_name == '恶人谷' %} {% elif m.captureCampName == '恶人谷' %}
class="camp-eren" class="camp-eren"
{% endif %} {% endif %}
> >
<td>{{ m.server }}</td> <td>{{ m.server }}</td>
<td>{{ m.refresh_time }}</td> <td>{{ m.refreshTime }}</td>
<td>{{ m.capture_time }}</td> <td>{{ m.captureTime }}</td>
<td>{{ m.capture_role_name }}</td> <td>{{ m.captureRoleName }}</td>
<td>{{ m.capture_camp_name }}</td> <td>{{ m.captureCampName }}</td>
<td>{{ m.auction_time }}</td> <td>{{ m.auctionTime }}</td>
<td>{{ m.auction_amount }}</td> <td>{{ m.auctionAmount }}</td>
<td>{{ m.auction_role_name }}</td> <td>{{ m.auctionRoleName }}</td>
<td>{{ m.auction_camp_name }}</td> <td>{{ m.auctionCampName }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
+6 -6
View File
@@ -91,17 +91,17 @@
<tbody> <tbody>
{% for m in list %} {% for m in list %}
<tr <tr
{% if m.camp_name == '浩气盟' %} {% if m.campName == '浩气盟' %}
class="camp-haoqi" class="camp-haoqi"
{% elif m.camp_name == '恶人谷' %} {% elif m.campName == '恶人谷' %}
class="camp-eren" class="camp-eren"
{% endif %} {% endif %}
> >
<td>{{ m.server }}</td> <td>{{ m.server }}</td>
<td>{{ m.name }}</td> <td>{{ m.itemName }}</td>
<td>{{ m.role_name }}</td> <td>{{ m.roleName }}</td>
<td>{{ m.camp_name }}</td> <td>{{ m.campName }}</td>
<td>{{ m.amount }}</td> <td>{{ m.itemAmount }}</td>
<td>{{ m.time }}</td> <td>{{ m.time }}</td>
</tr> </tr>
{% endfor %} {% endfor %}