11
This commit is contained in:
+255
-66
@@ -23,23 +23,24 @@ EVENT_NAMES = {
|
||||
1001: "奇遇触发",
|
||||
1002: "马驹刷新",
|
||||
1003: "马驹捕获",
|
||||
1004: "扶摇预告",
|
||||
1005: "扶摇开启",
|
||||
1006: "扶摇点名",
|
||||
1008: "的卢每日",
|
||||
1007: "烟花报时",
|
||||
1008: "的卢预告",
|
||||
1009: "的卢刷新",
|
||||
1010: "的卢捕获",
|
||||
1011: "的卢拍卖",
|
||||
1012: "副本掉落 / 私货",
|
||||
1012: "玄晶报时",
|
||||
1013: "阵营拍卖",
|
||||
1014: "诛恶事件",
|
||||
1015: "追魂点名",
|
||||
1017: "阵营祭祀",
|
||||
1018: "关隘首领",
|
||||
1016: "阵营祭天预告",
|
||||
1017: "阵营祭天终点",
|
||||
1101: "领地宣战·开始",
|
||||
1102: "领地宣战·结束",
|
||||
1103: "帮会宣战·开始",
|
||||
1104: "帮会宣战·结束",
|
||||
1105: "帮会约战·完胜",
|
||||
1108: "帮会野外宣战·开始",
|
||||
1109: "帮会野外宣战·结束",
|
||||
1111: "抢占粮仓",
|
||||
1112: "大旗重置",
|
||||
1113: "大旗被夺",
|
||||
@@ -52,16 +53,237 @@ EVENT_NAMES = {
|
||||
1120: "小攻防分红",
|
||||
1121: "大攻防分红",
|
||||
1122: "大攻防分红(含指挥)",
|
||||
1201: "微博更新",
|
||||
2001: "开服状态",
|
||||
2002: "官方新闻",
|
||||
2003: "版本更新",
|
||||
2004: "八卦速报",
|
||||
2005: "关隘首领",
|
||||
2006: "云从预告",
|
||||
2006: "云丛预告",
|
||||
}
|
||||
EVENT_ACTIONS = tuple(EVENT_NAMES)
|
||||
|
||||
SERVER_FIELDS = (
|
||||
("大区", "zone", "text"),
|
||||
("服务器", "server", "text"),
|
||||
)
|
||||
EVENT_FIELDS = {
|
||||
1001: SERVER_FIELDS + (
|
||||
("角色", "name", "text"),
|
||||
("奇遇", "event", "text"),
|
||||
("等级", "level", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1002: SERVER_FIELDS + (
|
||||
("地图", "map_name", "text"),
|
||||
("刷新时间", "time", "time"),
|
||||
),
|
||||
1003: SERVER_FIELDS + (
|
||||
("名称", "name", "text"),
|
||||
("地图", "map_name", "text"),
|
||||
("马驹", "horse", "text"),
|
||||
("等级", "level", "text"),
|
||||
("捕获时间", "time", "time"),
|
||||
),
|
||||
1004: SERVER_FIELDS + (("预告时间", "time", "time"),),
|
||||
1005: SERVER_FIELDS + (("开启时间", "time", "time"),),
|
||||
1006: SERVER_FIELDS + (
|
||||
("点名角色", "name", "list"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1007: SERVER_FIELDS + (
|
||||
("燃放者", "sender", "text"),
|
||||
("接收者", "receiver", "text"),
|
||||
("烟花", "firework", "text"),
|
||||
("地图", "map_name", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1008: SERVER_FIELDS + (
|
||||
("马驹", "name", "text"),
|
||||
("地图", "map_name", "text"),
|
||||
("预告时间", "time", "time"),
|
||||
),
|
||||
1009: SERVER_FIELDS + (
|
||||
("马驹", "name", "text"),
|
||||
("地图", "map_name", "text"),
|
||||
("刷新时间", "refresh_time", "time"),
|
||||
),
|
||||
1010: SERVER_FIELDS + (
|
||||
("马驹", "name", "text"),
|
||||
("地图", "map_name", "text"),
|
||||
("捕获角色", "capture_role_name", "text"),
|
||||
("角色阵营", "capture_camp_name", "text"),
|
||||
("捕获时间", "capture_time", "time"),
|
||||
),
|
||||
1011: SERVER_FIELDS + (
|
||||
("马驹", "name", "text"),
|
||||
("竞拍角色", "auction_role_name", "text"),
|
||||
("角色阵营", "auction_camp_name", "text"),
|
||||
("成交金额", "auction_amount", "text"),
|
||||
("拍卖时间", "auction_time", "time"),
|
||||
),
|
||||
1012: SERVER_FIELDS + (
|
||||
("角色", "role_name", "text"),
|
||||
("副本", "map_name", "text"),
|
||||
("物品", "item_name", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1013: SERVER_FIELDS + (
|
||||
("竞拍角色", "role_name", "text"),
|
||||
("阵营", "camp_name", "text"),
|
||||
("物品", "item_name", "text"),
|
||||
("成交金额", "item_amount", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1014: SERVER_FIELDS + (
|
||||
("地图", "map_name", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1015: SERVER_FIELDS + (
|
||||
("角色所在服", "role_server", "text"),
|
||||
("点名角色", "role_name", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1016: SERVER_FIELDS + (("预告时间", "time", "time"),),
|
||||
1017: SERVER_FIELDS + (
|
||||
("阵营", "camp_name", "text"),
|
||||
("帮会", "tong_name", "text"),
|
||||
("角色", "role_name", "text"),
|
||||
("据点", "castle_name", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1101: SERVER_FIELDS + (
|
||||
("战场类型", "battlefield_type", "text"),
|
||||
("宣战帮会", "declaring_tong_name", "text"),
|
||||
("应战帮会", "accepting_tong_name", "text"),
|
||||
("领地帮会", "battlefield_tong_name", "text"),
|
||||
("开始时间", "start_time", "time"),
|
||||
),
|
||||
1102: SERVER_FIELDS + (
|
||||
("战场类型", "battlefield_type", "text"),
|
||||
("宣战帮会", "declaring_tong_name", "text"),
|
||||
("应战帮会", "accepting_tong_name", "text"),
|
||||
("领地帮会", "battlefield_tong_name", "text"),
|
||||
("获胜帮会", "victory_tong_name", "text"),
|
||||
("获胜积分", "victory_score", "text"),
|
||||
("结束时间", "end_time", "time"),
|
||||
),
|
||||
1108: SERVER_FIELDS + (
|
||||
("战场类型", "battlefield_type", "text"),
|
||||
("宣战帮会", "declaring_tong_name", "text"),
|
||||
("应战帮会", "accepting_tong_name", "text"),
|
||||
("持续时长(小时)", "duration_hours", "text"),
|
||||
("开始时间", "start_time", "time"),
|
||||
),
|
||||
1109: SERVER_FIELDS + (
|
||||
("战场类型", "battlefield_type", "text"),
|
||||
("宣战帮会", "declaring_tong_name", "text"),
|
||||
("应战帮会", "accepting_tong_name", "text"),
|
||||
("结束时间", "end_time", "time"),
|
||||
),
|
||||
1111: SERVER_FIELDS + (
|
||||
("据点", "castle_name", "text"),
|
||||
("阵营", "camp_name", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1112: SERVER_FIELDS + (
|
||||
("据点", "castle_name", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1113: SERVER_FIELDS + (
|
||||
("阵营", "camp_name", "text"),
|
||||
("地图", "map_name", "text"),
|
||||
("据点", "castle_name", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1114: SERVER_FIELDS + (
|
||||
("阵营", "camp_name", "text"),
|
||||
("帮会", "tong_name", "text"),
|
||||
("据点", "castle_name", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1115: SERVER_FIELDS + (
|
||||
("阵营", "camp_name", "text"),
|
||||
("据点", "castle_name", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1116: SERVER_FIELDS + (
|
||||
("阵营", "camp_name", "text"),
|
||||
("贡献帮会", "tong_name", "list"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1117: SERVER_FIELDS + (
|
||||
("阵营", "camp_name", "text"),
|
||||
("贡献帮会", "tong_name", "list"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1118: SERVER_FIELDS + (
|
||||
("阵营", "camp_name", "text"),
|
||||
("贡献帮会", "tong_name", "list"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1119: SERVER_FIELDS + (
|
||||
("阵营", "camp_name", "text"),
|
||||
("竞拍角色", "role_name", "text"),
|
||||
("物品", "item_name", "text"),
|
||||
("成交金额", "item_amount", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1120: SERVER_FIELDS + (
|
||||
("阵营", "camp_name", "text"),
|
||||
("分红帮会", "tong_name", "list"),
|
||||
("分红金额", "split_amount", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1121: SERVER_FIELDS + (
|
||||
("阵营", "camp_name", "text"),
|
||||
("分红帮会", "tong_name", "list"),
|
||||
("分红金额", "split_amount", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
1122: SERVER_FIELDS + (
|
||||
("阵营", "camp_name", "text"),
|
||||
("指挥帮会", "chief_tong_name", "text"),
|
||||
("分红帮会", "tong_name", "list"),
|
||||
("分红金额", "split_amount", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
2001: SERVER_FIELDS + (
|
||||
("状态", "status", "status"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
2002: (
|
||||
("类型", "type", "text"),
|
||||
("标题", "title", "text"),
|
||||
("日期", "date", "text"),
|
||||
("链接", "url", "text"),
|
||||
),
|
||||
2003: (
|
||||
("当前版本", "now_version", "text"),
|
||||
("最新版本", "new_version", "text"),
|
||||
("更新包数量", "package_num", "text"),
|
||||
("更新大小", "package_size", "text"),
|
||||
),
|
||||
2004: (
|
||||
("分类", "tags", "text"),
|
||||
("服务器", "server", "text"),
|
||||
("发布者", "name", "text"),
|
||||
("标题", "title", "text"),
|
||||
("日期", "date", "text"),
|
||||
("链接", "url", "text"),
|
||||
),
|
||||
2005: (
|
||||
("服务器", "server", "text"),
|
||||
("关卡", "stage", "text"),
|
||||
("开始时间", "start", "time"),
|
||||
),
|
||||
2006: (
|
||||
("事件", "name", "text"),
|
||||
("地点", "site", "text"),
|
||||
("说明", "desc", "text"),
|
||||
("时间", "time", "time"),
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
class EventPushService:
|
||||
"""JX3API WebSocket 事件接收、会话订阅与消息分发。"""
|
||||
@@ -424,63 +646,30 @@ class EventPushService:
|
||||
return str(value or "未知")
|
||||
|
||||
def _format_event(self, action: int, detail: dict[str, Any]) -> str:
|
||||
if action == 2001:
|
||||
raw_status = detail.get("status")
|
||||
server_status = {0: "维护", 1: "开服", "0": "维护", "1": "开服"}.get(
|
||||
raw_status,
|
||||
str(raw_status or "未知"),
|
||||
)
|
||||
return (
|
||||
"【开服状态】\n"
|
||||
f"大区:{detail.get('zone', '未知')}\n"
|
||||
f"服务器:{detail.get('server', '未知')}\n"
|
||||
f"状态:{server_status}\n"
|
||||
f"时间:{self._format_timestamp(detail.get('time'))}"
|
||||
)
|
||||
if action == 2002:
|
||||
return (
|
||||
"【官方新闻】\n"
|
||||
f"类型:{detail.get('type', '未知')}\n"
|
||||
f"标题:{detail.get('title', '未知')}\n"
|
||||
f"日期:{detail.get('date', '未知')}\n"
|
||||
f"链接:{detail.get('url', '无')}"
|
||||
)
|
||||
if action == 2003:
|
||||
return (
|
||||
"【版本更新】\n"
|
||||
f"当前版本:{detail.get('now_version', '未知')}\n"
|
||||
f"最新版本:{detail.get('new_version', '未知')}\n"
|
||||
f"更新包数量:{detail.get('package_num', '未知')}\n"
|
||||
f"更新大小:{detail.get('package_size', '未知')}"
|
||||
)
|
||||
if action == 2004:
|
||||
return (
|
||||
"【八卦速报】\n"
|
||||
f"分类:{detail.get('tags', '未知')}\n"
|
||||
f"区服:{detail.get('zone', '未知')} / {detail.get('server', '未知')}\n"
|
||||
f"来源:{detail.get('tieba', '未知')}\n"
|
||||
f"标题:{detail.get('title', '未知')}\n"
|
||||
f"日期:{detail.get('date', '未知')}\n"
|
||||
f"链接:{detail.get('url', '无')}"
|
||||
)
|
||||
if action == 2005:
|
||||
return (
|
||||
"【关隘首领】\n"
|
||||
f"服务器:{detail.get('server', '未知')}\n"
|
||||
f"关卡:{detail.get('stage', '未知')}\n"
|
||||
f"开始时间:{self._format_timestamp(detail.get('start'))}"
|
||||
)
|
||||
if action == 2006:
|
||||
return (
|
||||
"【云从预告】\n"
|
||||
f"事件:{detail.get('name', '未知')}\n"
|
||||
f"地点:{detail.get('site', '未知')}\n"
|
||||
f"说明:{detail.get('desc', '无')}\n"
|
||||
f"时间:{self._format_timestamp(detail.get('time'))}"
|
||||
)
|
||||
fields = EVENT_FIELDS.get(action)
|
||||
if not fields:
|
||||
detail_text = json.dumps(detail, ensure_ascii=False, indent=2)
|
||||
return f"【事件推送 · {action}】\n{detail_text}"
|
||||
|
||||
detail_text = json.dumps(detail, ensure_ascii=False, indent=2)
|
||||
return f"【事件推送 · {action} {EVENT_NAMES[action]}】\n{detail_text}"
|
||||
lines = [f"【{EVENT_NAMES[action]}】"]
|
||||
for label, key, value_type in fields:
|
||||
lines.append(f"{label}:{self._format_field(detail.get(key), value_type)}")
|
||||
return "\n".join(lines)
|
||||
|
||||
def _format_field(self, value: Any, value_type: str) -> str:
|
||||
if value_type == "time":
|
||||
return self._format_timestamp(value)
|
||||
if value_type == "status":
|
||||
if value in (0, "0"):
|
||||
return "维护"
|
||||
if value in (1, "1"):
|
||||
return "开服"
|
||||
return str(value if value is not None and value != "" else "未知")
|
||||
if value_type == "list":
|
||||
if isinstance(value, (list, tuple)):
|
||||
values = [str(item).strip() for item in value if str(item).strip()]
|
||||
return "、".join(values) if values else "无"
|
||||
return str(value if value is not None and value != "" else "未知")
|
||||
|
||||
@staticmethod
|
||||
def _usage_text() -> str:
|
||||
@@ -503,4 +692,4 @@ class EventPushService:
|
||||
for action in EVENT_ACTIONS
|
||||
if action not in FREE_EVENT_ACTIONS
|
||||
)
|
||||
return f"免费事件:\n{free}\n\n事件版事件:\n{paid}"
|
||||
return f"免费事件:\n{free}\n\n令牌事件:\n{paid}"
|
||||
|
||||
Reference in New Issue
Block a user