This commit is contained in:
2026-07-29 18:09:29 +08:00
parent 8d522dae0f
commit 1655d1ef50
13 changed files with 933 additions and 915 deletions
+17 -14
View File
@@ -9,20 +9,23 @@
插件内置 `功能` 指令,会以图片形式展示完整指令列表、参数说明和是否需要令牌。当前帮助页按 13 个功能分组维护,约 88 条指令。 插件内置 `功能` 指令,会以图片形式展示完整指令列表、参数说明和是否需要令牌。当前帮助页按 13 个功能分组维护,约 88 条指令。
主要功能包括: 主要功能包括:
【活动情报】
- 日常功能:日常、月历、名望、诛恶。 活动日历: 日常 [延后天数] | 日常预测
- 官方功能:公告、维护、技改、区服、开服、状态。 声望社:楚天社 | 云从社 | 披风会 | 穹野卫
- 角色功能:角色、资历、名片、所有名片、奇遇、未做奇遇、战绩、精耐。 关隘首领:关隘
- 职业功能:小药、宏、配装、阵眼、奇穴、技能。 赤兔:赤兔 | 本周赤兔
- 休闲功能:烟花、拜师、收徒、随机名片、攻略、奇遇统计、近期奇遇、奇遇汇总。 阵营事件:阵营奉献 [阵营]
- 阵营功能:沙盘、阵营拍卖、阵营事件、关隘首领、帮战记录、统战 YY。 烟花记录::烟花 区服 角色
- 副本功能:百战、招募、掉落、解密。 马场查询:刷马 | 马场
- 活动功能:扶摇、本日赤兔、本周赤兔、刷马、的卢。 【名剑相关】
- 交易功能:金价、物价、交易行、贴吧物价。 名剑战绩:战绩 服务器 角色 [模式]
- 杂项功能:科举、花价、装饰、器物、八卦、骗子、骚话。 名剑排行:名剑排行 [模式] [数量]
- 排行功能:名剑统计名剑排行、资历排行、试炼排行和各类风云录榜单。 名剑统计名剑统计 [模式]
- 推送功能:开服推送、新闻推送、刷马推送、赤兔推送。 【排行榜单】
- 避雷功能:避雷查看、添加、删除、修改、查询。 排行统计:名士五十强 服务器 | 老江湖五十强 服务器 | 兵甲藏家五十强 服务器 | 名师五十强 服务器 | 阵营英雄五十强 服务器 | 薪火相传五十强 服务器 |
庐园广记一百强 服务器 | 浩气神兵宝甲五十强 服务器 | 恶人神兵宝甲五十强 服务器 | 浩气爱心帮会五十强 服务器 | 恶人爱心帮会五十强 服务器 |
赛季恶人五十强 服务器 | 赛季浩气五十强 服务器 | 上周恶人五十强 服务器 | 上周浩气五十强 服务器 | 本周恶人五十强 服务器 | 本周浩气五十强 服务器
试炼排行:试炼排行 服务器 心法
## 安装与依赖 ## 安装与依赖
+20
View File
@@ -1,5 +1,7 @@
from pathlib import Path from pathlib import Path
from datetime import datetime,date from datetime import datetime,date
from zoneinfo import ZoneInfo
import aiofiles import aiofiles
import base64 import base64
import os import os
@@ -142,3 +144,21 @@ def load_as_base64(icons_dir: str) -> dict[str, str]:
icons[display_name] = f"data:{mime};base64,{data}" icons[display_name] = f"data:{mime};base64,{data}"
return icons return icons
def format_time(ts):
try:
return datetime.fromtimestamp(int(ts),
tz=ZoneInfo("Asia/Shanghai")
).strftime("%Y-%m-%d %H:%M:%S")
except (TypeError, ValueError, OSError):
return ""
def format_remaining(ts):
try:
seconds = max(0, int(ts) - int(datetime.now().timestamp()))
hours, seconds = divmod(seconds, 3600)
minutes, seconds = divmod(seconds, 60)
return f"{hours}{minutes:02d}{seconds:02d}"
except (TypeError, ValueError):
return ""
+389 -687
View File
File diff suppressed because it is too large Load Diff
+134 -123
View File
@@ -283,9 +283,136 @@ class MessageBuilder:
return await self.T2I_image_msg(event, lambda: self.jx3api.richang("list",15)) return await self.T2I_image_msg(event, lambda: self.jx3api.richang("list",15))
async def xingxiashijian(self, event: AstrMessageEvent,name: str = "穹野卫"): async def qiongyewei(self, event: AstrMessageEvent):
""" 名望""" """ 穹野卫"""
return await self.T2I_image_msg(event, lambda: self.jx3api.xingxiashijian(name)) return await self.T2I_image_msg(event, lambda: self.jx3api.xingxiashijian("穹野卫"))
async def pifenghui(self, event: AstrMessageEvent):
""" 披风会"""
return await self.T2I_image_msg(event, lambda: self.jx3api.xingxiashijian("披风会"))
async def yunchongshe(self, event: AstrMessageEvent):
""" 云从社"""
return await self.T2I_image_msg(event, lambda: self.jx3api.xingxiashijian("云从社"))
async def chutianshe(self, event: AstrMessageEvent):
""" 楚天社 """
return await self.T2I_image_msg(event, lambda: self.jx3api.xingxiashijian("楚天社"))
async def guanaishouling(self, event: AstrMessageEvent):
""" 关隘首领"""
return await self.T2I_image_msg(event, self.jx3api.guanaishouling)
async def benrichitu(self, event: AstrMessageEvent):
""" 本日赤兔"""
return await self.plain_msg(event, self.jx3api.benrichitu)
async def benzhouchitu(self, event: AstrMessageEvent):
""" 本周赤兔"""
return await self.plain_msg(event, self.jx3api.benzhouchitu)
async def zhenyingevent(self, event: AstrMessageEvent, name:str = ""):
""" 阵营事件 阵营"""
return await self.T2I_image_msg(event, lambda: self.jx3api.zhenyingevent(name,50))
async def yanhuachaxun(self, event: AstrMessageEvent,server: str = "",name: str = "" ):
""" 烟花 服务器 角色"""
return await self.T2I_image_msg(event, lambda: self.jx3api.yanhuachaxun( self.serverdefault(server),name))
async def shuma(self, event: AstrMessageEvent,server: str ):
""" 刷马 服务器"""
return await self.plain_msg(event, lambda: self.jx3api.shuma(server))
async def machang(self, event: AstrMessageEvent,server: str ):
""" 马场 服务器"""
return await self.plain_msg(event, lambda: self.jx3api.machang(server,1))
async def zhanji(self, event: AstrMessageEvent, server: str ,name: str , mode:str = "33"):
""" 战绩 服务器 角色 模式"""
return await self.T2I_image_msg(event, lambda: self.jx3api.zhanji(name, server,mode))
async def mingjianpaihang(self, event: AstrMessageEvent, mode:str = "33",limit: int = 50):
""" 名剑排行 模式 数量 """
return await self.T2I_image_msg(event, lambda: self.jx3api.mingjianpaihang(limit,mode))
async def mingjiantongji(self, event: AstrMessageEvent,mode: str = "33"):
""" 名剑统计 模式"""
return await self.T2I_image_msg(event, lambda: self.jx3api.mingjiantongji(mode))
async def mingshiwushiqiang(self, event: AstrMessageEvent, server: str):
""" 名士五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("名士五十强", server))
async def laojianghuwushiqiang(self, event: AstrMessageEvent, server: str):
""" 老江湖五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("老江湖五十强", server))
async def bingjiacangjiawushiqiang(self, event: AstrMessageEvent, server: str):
""" 兵甲藏家五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("兵甲藏家五十强", server))
async def mingshiwushiqiang_mentor(self, event: AstrMessageEvent, server: str):
""" 名师五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("名师五十强", server))
async def zhengyingyingxiongwushiqiang(self, event: AstrMessageEvent, server: str):
""" 阵营英雄五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("阵营英雄五十强", server))
async def xinhuoxiangchuanwushiqiang(self, event: AstrMessageEvent, server: str):
""" 薪火相传五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("薪火相传五十强", server))
async def luyuanguangjiyibaiqiang(self, event: AstrMessageEvent, server: str):
""" 庐园广记一百强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("庐园广记一百强", server))
async def haoqishenbingbaojiawushiqiang(self, event: AstrMessageEvent, server: str):
""" 浩气神兵宝甲五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("浩气神兵宝甲五十强", server))
async def erenshenbingbaojiawushiqiang(self, event: AstrMessageEvent, server: str ):
""" 恶人神兵宝甲五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("恶人神兵宝甲五十强", server))
async def haoqiaixinbanghuiwushiqiang(self, event: AstrMessageEvent, server: str ):
""" 浩气爱心帮会五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("浩气爱心帮会五十强", server))
async def erenaixinbanghuiwushiqiang(self, event: AstrMessageEvent, server: str ):
""" 恶人爱心帮会五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("恶人爱心帮会五十强", server))
async def saijierenwushiqiang(self, event: AstrMessageEvent, server: str):
""" 赛季恶人五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("赛季恶人五十强", server))
async def saijihaoqiwushiqiang(self, event: AstrMessageEvent, server: str ):
""" 赛季浩气五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("赛季浩气五十强", server))
async def shangzhouerenwushiqiang(self, event: AstrMessageEvent, server: str ):
""" 上周恶人五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("上周恶人五十强", server))
async def shangzhouhaoqiwushiqiang(self, event: AstrMessageEvent, server: str ):
""" 上周浩气五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("上周浩气五十强", server))
async def benzhouerenwushiqiang(self, event: AstrMessageEvent, server: str ):
""" 本周恶人五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("本周恶人五十强", server))
async def benzhouhaoqiwushiqiang(self, event: AstrMessageEvent, server: str ):
""" 本周浩气五十强 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical("本周浩气五十强", server))
async def shilianpaixing(self, event: AstrMessageEvent, server: str , name: str):
""" 试炼排行 服务器 心法 """
return await self.T2I_image_msg(event, lambda: self.jx3api.shilianpaixing(name, server))
async def keju(self, event: AstrMessageEvent,subject: str, limit: int = 5): async def keju(self, event: AstrMessageEvent,subject: str, limit: int = 5):
@@ -366,9 +493,7 @@ class MessageBuilder:
""" 资历排行 """ """ 资历排行 """
return await self.T2I_image_msg(event, lambda: self.jx3api.zilipaixing("", "")) return await self.T2I_image_msg(event, lambda: self.jx3api.zilipaixing("", ""))
async def shilianpaixing(self, event: AstrMessageEvent, name: str, server: str = ""):
""" 试炼排行 心法 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.shilianpaixing(name, self.serverdefault(server)))
async def shaohua(self, event: AstrMessageEvent,): async def shaohua(self, event: AstrMessageEvent,):
@@ -406,29 +531,17 @@ class MessageBuilder:
return await self.T2I_image_msg(event, self.jx3api.zhueevent) return await self.T2I_image_msg(event, self.jx3api.zhueevent)
async def benrichitu(self, event: AstrMessageEvent):
""" 本日赤兔"""
return await self.plain_msg(event, self.jx3api.benrichitu)
async def benzhouchitu(self, event: AstrMessageEvent):
""" 本周赤兔"""
return await self.plain_msg(event, self.jx3api.benzhouchitu)
async def zhengyingpaimai(self, event: AstrMessageEvent,name: str = "玄晶", server: str = ""): 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)) return await self.T2I_image_msg(event, lambda: self.jx3api.zhengyingpaimai( self.serverdefault(server), name))
async def zhenyingevent(self, event: AstrMessageEvent):
""" 阵营事件"""
return await self.T2I_image_msg(event, self.jx3api.zhenyingevent)
async def guanaishouling(self, event: AstrMessageEvent):
""" 关隘首领"""
return await self.T2I_image_msg(event, self.jx3api.guanaishouling)
async def bangzhanjilu(self, event: AstrMessageEvent, server: str = ""): async def bangzhanjilu(self, event: AstrMessageEvent, server: str = ""):
@@ -446,9 +559,7 @@ class MessageBuilder:
return await self.T2I_image_msg(event, lambda: self.jx3api.dilujilu( self.serverdefault(server))) return await self.T2I_image_msg(event, lambda: self.jx3api.dilujilu( self.serverdefault(server)))
async def yanhuachaxun(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = ""):
""" 烟花 角色 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.yanhuachaxun( self.serverdefault(server),name))
async def pianzhi(self, event: AstrMessageEvent,qq: str): async def pianzhi(self, event: AstrMessageEvent,qq: str):
@@ -489,20 +600,8 @@ class MessageBuilder:
return await self.T2I_image_msg(event, lambda: self.jx3api.qiyuhuizong(self.serverdefault(target_server), num)) return await self.T2I_image_msg(event, lambda: self.jx3api.qiyuhuizong(self.serverdefault(target_server), num))
async def zhanji(self, event: AstrMessageEvent,name: str = "飞翔大野猪", server: str = "", mode:str = "33"):
""" 战绩 角色 服务器 类型"""
return await self.T2I_image_msg(event, lambda: self.jx3api.zhanji(name, self.serverdefault(server),mode))
async def mingjianpaihang(self, event: AstrMessageEvent,limit: str = "50", mode:str = "33"):
""" 排行 数量 类型"""
return await self.T2I_image_msg(event, lambda: self.jx3api.mingjianpaihang(limit,mode))
async def mingjiantongji(self, event: AstrMessageEvent,mode: str = "33"):
""" 名剑统计 模式"""
return await self.T2I_image_msg(event, lambda: self.jx3api.mingjiantongji(mode))
async def tuanduizhaomu(self, event: AstrMessageEvent,keyword: str = "25人普通会战弓月城", server: str = ""): async def tuanduizhaomu(self, event: AstrMessageEvent,keyword: str = "25人普通会战弓月城", server: str = ""):
""" 招募 副本 服务器""" """ 招募 副本 服务器"""
@@ -519,94 +618,8 @@ class MessageBuilder:
return await self.T2I_image_msg(event, lambda: self.jx3api.shitu(1, keyword, self.serverdefault(server))) return await self.T2I_image_msg(event, lambda: self.jx3api.shitu(1, keyword, self.serverdefault(server)))
async def rank_statistical(self, event: AstrMessageEvent, rank_name: str, server: str = ""):
""" 各类榜单 榜单名称 服务器"""
return await self.T2I_image_msg(event, lambda: self.jx3api.rank_statistical(rank_name, self.serverdefault(server)))
async def mingshiwushiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 名士五十强 服务器"""
return await self. rank_statistical(event, "名士五十强", server)
async def laojianghuwushiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 老江湖五十强 服务器"""
return await self. rank_statistical(event, "老江湖五十强", server)
async def bingjiacangjiawushiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 兵甲藏家五十强 服务器"""
return await self. rank_statistical(event, "兵甲藏家五十强", server)
async def mingshiwushiqiang_mentor(self, event: AstrMessageEvent, server: str = ""):
""" 名师五十强 服务器"""
return await self. rank_statistical(event, "名师五十强", server)
async def zhengyingyingxiongwushiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 阵营英雄五十强 服务器"""
return await self. rank_statistical(event, "阵营英雄五十强", server)
async def xinhuoxiangchuanwushiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 薪火相传五十强 服务器"""
return await self. rank_statistical(event, "薪火相传五十强", server)
async def luyuanguangjiyibaiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 庐园广记一百强 服务器"""
return await self. rank_statistical(event, "庐园广记一百强", server)
async def haoqishenbingbaojiawushiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 浩气神兵宝甲五十强 服务器"""
return await self. rank_statistical(event, "浩气神兵宝甲五十强", server)
async def erenshenbingbaojiawushiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 恶人神兵宝甲五十强 服务器"""
return await self. rank_statistical(event, "恶人神兵宝甲五十强", server)
async def haoqiaixinbanghuiwushiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 浩气爱心帮会五十强 服务器"""
return await self. rank_statistical(event, "浩气爱心帮会五十强", server)
async def erenaixinbanghuiwushiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 恶人爱心帮会五十强 服务器"""
return await self. rank_statistical(event, "恶人爱心帮会五十强", server)
async def saijierenwushiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 赛季恶人五十强 服务器"""
return await self. rank_statistical(event, "赛季恶人五十强", server)
async def saijihaoqiwushiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 赛季浩气五十强 服务器"""
return await self. rank_statistical(event, "赛季浩气五十强", server)
async def shangzhouerenwushiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 上周恶人五十强 服务器"""
return await self. rank_statistical(event, "上周恶人五十强", server)
async def shangzhouhaoqiwushiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 上周浩气五十强 服务器"""
return await self. rank_statistical(event, "上周浩气五十强", server)
async def benzhouerenwushiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 本周恶人五十强 服务器"""
return await self. rank_statistical(event, "本周恶人五十强", server)
async def benzhouhaoqiwushiqiang(self, event: AstrMessageEvent, server: str = ""):
""" 本周浩气五十强 服务器"""
return await self. rank_statistical(event, "本周浩气五十强", server)
async def jueshe(self, event: AstrMessageEvent,name: str, server: str = ""): async def jueshe(self, event: AstrMessageEvent,name: str, server: str = ""):
@@ -634,9 +647,7 @@ class MessageBuilder:
return await self.image_msg(event, lambda: self.jx3api.shuijimingpian(force,body, self.serverdefault(server))) return await self.image_msg(event, lambda: self.jx3api.shuijimingpian(force,body, self.serverdefault(server)))
async def shuma(self, event: AstrMessageEvent,server: str = ""):
""" 刷马 服务器"""
return await self.plain_msg(event, lambda: self.jx3api.shuma( self.serverdefault(server)))
async def jinjia(self, event: AstrMessageEvent,server: str = "", limit:str = "15"): async def jinjia(self, event: AstrMessageEvent,server: str = "", limit:str = "15"):
+59 -46
View File
@@ -198,56 +198,21 @@ class Jx3ApiPlugin(Star):
self.command_map = { self.command_map = {
"功能": self. jx3cmd.helps, "功能": self. jx3cmd.helps,
"日常": self. jx3cmd.richang, "日常": self. jx3cmd.richang,
"月历": self. jx3cmd.richangyuche, "日常预测": self. jx3cmd.richangyuche,
"名望": self. jx3cmd.xingxiashijian, "穹野卫": self. jx3cmd.qiongyewei,
"科举": self. jx3cmd.keju, "披风会": self. jx3cmd.pifenghui,
"花价": self. jx3cmd.huajia, "云从社": self. jx3cmd.yunchongshe,
"装饰": self. jx3cmd.zhuangshi, "楚天社": self. jx3cmd.chutianshe,
"器物": self. jx3cmd.qiwu, "关隘": self. jx3cmd.guanaishouling,
"公告": self. jx3cmd.xinwen, "赤兔": self. jx3cmd.benrichitu,
"维护": self. jx3cmd.weihu,
"区服": self. jx3cmd.qufu,
"开服": self. jx3cmd.kaifu,
"状态": self. jx3cmd.zhuangtai,
"技改": self. jx3cmd.jigai,
"小药": self. jx3cmd.xiaoyao,
"阵眼": self. jx3cmd.zhenyan,
"奇穴": self. jx3cmd.qixue,
"技能": self. jx3cmd.jineng,
"资历排行": self. jx3cmd.zilipaixing,
"全服资历排行": self. jx3cmd.zilipaihang,
"试炼排行": self. jx3cmd.shilianpaixing,
"骚话": self. jx3cmd.shaohua,
"资历": self. jx3cmd.zili,
"解密": self. jx3cmd.jiemi,
"沙盘": self. jx3cmd.shapan,
"攻略": self. jx3cmd.qiyugonglue,
"": self. jx3cmd.hong,
"配装": self. jx3cmd.peizhuang,
"百战": self. jx3cmd.baizhan,
"扶摇": self. jx3cmd.fuyaojjiutian,
"诛恶": self. jx3cmd.zhueevent,
"本日赤兔": self. jx3cmd.benrichitu,
"本周赤兔": self. jx3cmd.benzhouchitu, "本周赤兔": self. jx3cmd.benzhouchitu,
"拍卖": self. jx3cmd.zhengyingpaimai, "阵营奉献": self. jx3cmd.zhenyingevent,
"阵营事件": self. jx3cmd.zhenyingevent,
"关隘首领": self. jx3cmd.guanaishouling,
"帮战记录": self. jx3cmd.bangzhanjilu,
"统战": self. jx3cmd.tongzhanyy,
"的卢": self. jx3cmd.dilujilu,
"烟花": self. jx3cmd.yanhuachaxun, "烟花": self. jx3cmd.yanhuachaxun,
"骗子": self. jx3cmd.pianzhi, "刷马": self. jx3cmd.shuma,
"奇遇": self. jx3cmd.juesheqiyu, "马场": self. jx3cmd.machang,
"未做奇遇": self. jx3cmd.weizuoqiyu,
"奇遇统计": self. jx3cmd.qiyutongji,
"近期奇遇": self. jx3cmd.jinqiqiyu,
"奇遇汇总": self. jx3cmd.qiyuhuizong,
"战绩": self. jx3cmd.zhanji, "战绩": self. jx3cmd.zhanji,
"名剑排行": self. jx3cmd.mingjianpaihang, "名剑排行": self. jx3cmd.mingjianpaihang,
"名剑统计": self. jx3cmd.mingjiantongji, "名剑统计": self. jx3cmd.mingjiantongji,
"招募": self. jx3cmd.tuanduizhaomu,
"拜师": self. jx3cmd.baishi,
"收徒": self. jx3cmd.shoutu,
"名士五十强": self. jx3cmd.mingshiwushiqiang, "名士五十强": self. jx3cmd.mingshiwushiqiang,
"老江湖五十强": self. jx3cmd.laojianghuwushiqiang, "老江湖五十强": self. jx3cmd.laojianghuwushiqiang,
"兵甲藏家五十强": self. jx3cmd.bingjiacangjiawushiqiang, "兵甲藏家五十强": self. jx3cmd.bingjiacangjiawushiqiang,
@@ -265,12 +230,60 @@ class Jx3ApiPlugin(Star):
"上周浩气五十强": self. jx3cmd.shangzhouhaoqiwushiqiang, "上周浩气五十强": self. jx3cmd.shangzhouhaoqiwushiqiang,
"本周恶人五十强": self. jx3cmd.benzhouerenwushiqiang, "本周恶人五十强": self. jx3cmd.benzhouerenwushiqiang,
"本周浩气五十强": self. jx3cmd.benzhouhaoqiwushiqiang, "本周浩气五十强": self. jx3cmd.benzhouhaoqiwushiqiang,
"试炼排行": self. jx3cmd.shilianpaixing,
"科举": self. jx3cmd.keju,
"花价": self. jx3cmd.huajia,
"装饰": self. jx3cmd.zhuangshi,
"器物": self. jx3cmd.qiwu,
"公告": self. jx3cmd.xinwen,
"维护": self. jx3cmd.weihu,
"区服": self. jx3cmd.qufu,
"开服": self. jx3cmd.kaifu,
"状态": self. jx3cmd.zhuangtai,
"技改": self. jx3cmd.jigai,
"小药": self. jx3cmd.xiaoyao,
"阵眼": self. jx3cmd.zhenyan,
"奇穴": self. jx3cmd.qixue,
"技能": self. jx3cmd.jineng,
"资历排行": self. jx3cmd.zilipaixing,
"全服资历排行": self. jx3cmd.zilipaihang,
"骚话": self. jx3cmd.shaohua,
"资历": self. jx3cmd.zili,
"解密": self. jx3cmd.jiemi,
"沙盘": self. jx3cmd.shapan,
"攻略": self. jx3cmd.qiyugonglue,
"": self. jx3cmd.hong,
"配装": self. jx3cmd.peizhuang,
"百战": self. jx3cmd.baizhan,
"扶摇": self. jx3cmd.fuyaojjiutian,
"诛恶": self. jx3cmd.zhueevent,
"拍卖": self. jx3cmd.zhengyingpaimai,
"帮战记录": self. jx3cmd.bangzhanjilu,
"统战": self. jx3cmd.tongzhanyy,
"的卢": self. jx3cmd.dilujilu,
"骗子": 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.jueshe,
"名片": self. jx3cmd.jueshemingpian, "名片": self. jx3cmd.jueshemingpian,
"精耐": self. jx3cmd.jingnai, "精耐": self. jx3cmd.jingnai,
"所有名片": self. jx3cmd.shuoyoumingpian, "所有名片": self. jx3cmd.shuoyoumingpian,
"随机名片": self. jx3cmd.shuijimingpian, "随机名片": self. jx3cmd.shuijimingpian,
"刷马": self. jx3cmd.shuma,
"金价": self. jx3cmd.jinjia, "金价": self. jx3cmd.jinjia,
"物价": self. jx3cmd.wujia, "物价": self. jx3cmd.wujia,
"八卦": self. jx3cmd.bagua, "八卦": self. jx3cmd.bagua,
+7 -7
View File
@@ -95,8 +95,8 @@
<thead> <thead>
<tr> <tr>
<th>门派</th> <th>门派</th>
<th>当前赛季数量</th> <th>本周数量</th>
<th>赛季数量</th> <th>数量</th>
</tr> </tr>
</thead> </thead>
@@ -105,14 +105,14 @@
<tr> <tr>
<td> <td>
<div class="school"> <div class="school">
{% if icons.sect.get(m.name) %} {% if icons.sect.get(m.forceName) %}
<img class="school-icon" src="{{ icons.sect[m.name] }}" alt="{{ m.name }}"> <img class="school-icon" src="{{ icons.sect[m.forceName] }}" alt="{{ m.forceName }}">
{% endif %} {% endif %}
<span>{{ m.name }}</span> <span>{{ m.forceName }}</span>
</div> </div>
</td> </td>
<td class="num-col">{{ m.this }}</td> <td class="num-col">{{ m.thisWeek }}</td>
<td class="num-col">{{ m.last }}</td> <td class="num-col">{{ m.lastWeek }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
+8 -8
View File
@@ -137,17 +137,17 @@
<td class="rank-col">{{ loop.index }}</td> <td class="rank-col">{{ loop.index }}</td>
<td> <td>
<div class="force"> <div class="force">
{% if icons.sect.get(item.force_name) %} {% if icons.sect.get(item.forceName) %}
<img class="force-icon" src="{{ icons.sect[item.force_name] }}" alt="{{ item.force_name }}"> <img class="force-icon" src="{{ icons.sect[item.forceName] }}" alt="{{ item.forceName }}">
{% endif %} {% endif %}
<span>{{ item.force_name }}</span> <span>{{ item.forceName }}</span>
</div> </div>
</td> </td>
<td class="role-col">{{ item.role_name }}</td> <td class="role-col">{{ item.name }}</td>
<td class="level-col">{{ item.role_level }}</td> <td class="level-col">{{ item.level }}</td>
<td class="camp-col">{{ item.camp_name }}</td> <td class="camp-col">{{ item.campName }}</td>
<td class="tong-col">{{ item.tong_name }}</td> <td class="tong-col">{{ item.tongName }}</td>
<td class="score-col">{{ item.total_score }}</td> <td class="score-col">{{ item.totalScore }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
@@ -126,11 +126,11 @@
{% for item in items %} {% for item in items %}
<tr> <tr>
<td class="rank-col">{{ loop.index }}</td> <td class="rank-col">{{ loop.index }}</td>
<td class="tong-col">{{ item.tong_name }}</td> <td class="tong-col">{{ item.tongName }}</td>
<td class="master-col">{{ item.master_name }}</td> <td class="master-col">{{ item.masterName }}</td>
<td class="castle-col">{{ item.castle_name }}</td> <td class="castle-col">{{ item.castleName }}</td>
<td class="people-col">{{ item.now_count }}/{{ item.max_count }}</td> <td class="people-col">{{ item.memberCount }}/{{ item.maxMemberCount }}</td>
<td class="score-col">{{ item.total_score }}</td> <td class="score-col">{{ item.titlePoint }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
+139
View File
@@ -0,0 +1,139 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>帮会榜单</title>
<style>
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
background: #f1f2f6;
margin: 0;
padding: 20px;
color: #2c2c33;
}
.container {
max-width: 1040px;
margin: 0 auto;
}
h1 {
font-size: 32px;
margin: 0 0 8px 0;
color: #222;
font-weight: 800;
text-align: center;
}
.meta {
margin-bottom: 24px;
color: #7a7f99;
font-size: 16px;
text-align: center;
}
table {
width: 100%;
border-collapse: collapse;
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
text-align: left;
}
thead {
background: #d93939;
color: white;
font-size: 17px;
}
th, td {
padding: 12px 10px;
border-bottom: 1px solid #eee;
font-size: 15px;
vertical-align: middle;
}
tbody tr:nth-child(even) {
background: #fafafa;
}
.rank-col,
.people-col,
.score-col {
white-space: nowrap;
text-align: center;
}
.rank-col {
width: 56px;
color: #d93939;
font-weight: 800;
}
.tong-col {
min-width: 220px;
font-weight: 800;
color: #333;
word-break: break-word;
}
.master-col {
min-width: 150px;
color: #333;
word-break: break-word;
}
.castle-col {
min-width: 110px;
color: #60657a;
word-break: break-word;
}
.people-col {
color: #333;
font-variant-numeric: tabular-nums;
}
.score-col {
color: #d93939;
font-weight: 800;
font-variant-numeric: tabular-nums;
}
</style>
</head>
<body>
<div class="container">
<h1>{{ rank_name }}</h1>
<div class="meta">{{ server }} · 更新时间:{{ update_time }}</div>
<table>
<thead>
<tr>
<th>排名</th>
<th>帮会名称</th>
<th>帮主</th>
<th>人数</th>
<th>排行积分</th>
</tr>
</thead>
<tbody>
{% for item in items %}
<tr>
<td class="rank-col">{{ loop.index }}</td>
<td class="tong-col">{{ item.tongName }}</td>
<td class="master-col">{{ item.masterName }}</td>
<td class="people-col">{{ item.maxLimit }}</td>
<td class="score-col">{{ item.totalScore }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
</html>
+137
View File
@@ -0,0 +1,137 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>帮会榜单</title>
<style>
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
background: #f1f2f6;
margin: 0;
padding: 20px;
color: #2c2c33;
}
.container {
max-width: 1040px;
margin: 0 auto;
}
h1 {
font-size: 32px;
margin: 0 0 8px 0;
color: #222;
font-weight: 800;
text-align: center;
}
.meta {
margin-bottom: 24px;
color: #7a7f99;
font-size: 16px;
text-align: center;
}
table {
width: 100%;
border-collapse: collapse;
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
text-align: left;
}
thead {
background: #d93939;
color: white;
font-size: 17px;
}
th, td {
padding: 12px 10px;
border-bottom: 1px solid #eee;
font-size: 15px;
vertical-align: middle;
}
tbody tr:nth-child(even) {
background: #fafafa;
}
.rank-col,
.people-col,
.score-col {
white-space: nowrap;
text-align: center;
}
.rank-col {
width: 56px;
color: #d93939;
font-weight: 800;
}
.tong-col {
min-width: 220px;
font-weight: 800;
color: #333;
word-break: break-word;
}
.master-col {
min-width: 150px;
color: #333;
word-break: break-word;
}
.castle-col {
min-width: 110px;
color: #60657a;
word-break: break-word;
}
.people-col {
color: #333;
font-variant-numeric: tabular-nums;
}
.score-col {
color: #d93939;
font-weight: 800;
font-variant-numeric: tabular-nums;
}
</style>
</head>
<body>
<div class="container">
<h1>{{ rank_name }}</h1>
<div class="meta">{{ server }} · 更新时间:{{ update_time }}</div>
<table>
<thead>
<tr>
<th>排名</th>
<th>帮会名称</th>
<th>帮主</th>
<th>排行积分</th>
</tr>
</thead>
<tbody>
{% for item in items %}
<tr>
<td class="rank-col">{{ loop.index }}</td>
<td class="tong-col">{{ item.tongName }}</td>
<td class="master-col">{{ item.masterName }}</td>
<td class="score-col">{{ item.key }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
</html>
+3 -3
View File
@@ -83,10 +83,10 @@
{% for m in list %} {% for m in list %}
<tr> <tr>
<td>{{ m.server }}</td> <td>{{ m.server }}</td>
<td>{{ m.name }}</td> <td>{{ m.firework }}</td>
<td>{{ m.map_name }}</td> <td>{{ m.mapName }}</td>
<td>{{ m.sender }}</td> <td>{{ m.sender }}</td>
<td>{{ m.receive }}</td> <td>{{ m.receiver }}</td>
<td>{{ m.time }}</td> <td>{{ m.time }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
+7 -14
View File
@@ -275,24 +275,17 @@ tbody tr:nth-child(odd) {
</div> </div>
<script> <script>
document.querySelectorAll(".start-time").forEach(function (cell) { document.querySelectorAll(".start-time").forEach(function (cell) {
var raw = cell.dataset.ts || cell.textContent.trim(); const ts = Number(cell.dataset.ts);
var ts = Number(raw);
if (!Number.isFinite(ts) || ts <= 0) { if (!Number.isFinite(ts) || ts <= 0) {
cell.textContent = raw || "-"; cell.textContent = "-";
return; return;
} }
var date = new Date(ts * 1000); cell.textContent = new Date(ts * 1000).toLocaleString("zh-CN", {
var pad = function (n) { return String(n).padStart(2, "0"); }; timeZone: "Asia/Shanghai",
cell.textContent = [ hour12: false
date.getFullYear(), });
pad(date.getMonth() + 1),
pad(date.getDate())
].join("-") + " " + [
pad(date.getHours()),
pad(date.getMinutes()),
pad(date.getSeconds())
].join(":");
}); });
</script> </script>
</body> </body>
+5 -5
View File
@@ -136,11 +136,11 @@
class="camp-haoqi" class="camp-haoqi"
{% endif %} {% endif %}
> >
<td class="camp-col">{{ item.camp_name }}</td> <td class="camp-col">{{ item.campName }}</td>
<td class="fenxian-col">{{ item.fenxian_name }}</td> <td class="fenxian-col">{{ item.fenxianName }}</td>
<td class="server-col">{{ item.friend_name }}</td> <td class="server-col">{{ item.friendName }}</td>
<td class="role-col">{{ item.role_name }}</td> <td class="role-col">{{ item.roleName }}</td>
<td class="time-col">{{ item.seize_time }}</td> <td class="time-col">{{ item.seizeTime }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>