- 旧平铺模块(data/data_utils/database_op/image_builder*/get_bf6_data/ gametools_bf6/bf6_data/img_utils)拆分为 handlers(绑定/查询)、 services(fetchers/processing/query)、utils(渲染/参数)分层; 新增 repository.py / config.py / paths.py - 字体/图片/模板资源迁入 res/,新增 BF2042 卡面素材(bg/object_icon 等) - browser_ext/:BF2042 扩展捕获桥(WS 直连兜底通道)源码入库 - 新增 hexi/web/src/plugins/bf_bot 前端管理页 - 新增 tests:test_bf_bot_helpers / repository / tracker_api Co-Authored-By: Claude Code <noreply@anthropic.com>
63 lines
2.5 KiB
Python
63 lines
2.5 KiB
Python
"""BF查询 —— 入口(MTSS:handlers → services → repository + utils)。
|
||
|
||
只做五件事:元数据 / require / 导入子模块(命令 + 配置 + Web)/ 建表 / 扩展桥启停钩子。
|
||
业务命令在 handlers/,编排在 services/,数据读写走 repository.py。
|
||
"""
|
||
|
||
from nonebot import get_driver, require
|
||
from nonebot.log import logger
|
||
from nonebot.plugin import PluginMetadata
|
||
|
||
require("nonebot_plugin_alconna")
|
||
|
||
__plugin_meta__ = PluginMetadata(
|
||
name="BF查询",
|
||
description="战地3,4,1,5,2042,6",
|
||
usage="""
|
||
bf3: /bf3 [EAID] (查询BF3数据)
|
||
bf4: /bf4 [EAID] (查询BF4数据)
|
||
bf1: /bf1 [EAID] (查询BF1数据)
|
||
bfv: /bfv [EAID] (查询BFV数据)
|
||
bf2042: /bf2042 [EAID] (查询BF2042生涯数据)
|
||
bf2042: /bf2042 武器|载具|装备 [EAID] (BF2042 榜单)
|
||
bf2042: /bf2042 模式 [EAID] (BF2042 各模式明细)
|
||
bf6: /bf6 [EAID] (查询BF6数据)
|
||
绑定: /绑定 EAID (绑定你的QQ与EAID)
|
||
解绑: /解绑 (解除你的QQ与当前绑定的EAID)
|
||
修改绑定: /修改绑定 EAID (修改你的QQ与当前绑定的EAID)
|
||
以上查询命令省略 EAID 时使用已绑定账号;命令需要 @机器人。
|
||
""".strip(),
|
||
type="application",
|
||
)
|
||
|
||
# 导入子模块:handlers 注册命令,config 注册配置,web 提供 /api/bf_bot
|
||
from . import config as _config # noqa: E402
|
||
from . import handlers as _handlers # noqa: E402,F401
|
||
from . import web as _web # noqa: E402,F401
|
||
from .repository import init_database # noqa: E402
|
||
|
||
# 建表(幂等):库文件不随仓库分发,新环境/热重载都要在这里补齐,否则查询报 no such table
|
||
if not init_database():
|
||
logger.error("用户数据库初始化失败,绑定/标签功能将不可用")
|
||
|
||
_config.register_config()
|
||
|
||
# BF2042 浏览器扩展桥:WS 服务端随 bot 启停(127.0.0.1;见 services/fetchers/tracker_bridge.py)
|
||
from .services.fetchers import tracker_bridge as _tracker_bridge # noqa: E402
|
||
|
||
_driver = get_driver()
|
||
_driver.on_startup(_tracker_bridge.start_bridge_server)
|
||
_driver.on_shutdown(_tracker_bridge.stop_bridge_server)
|
||
|
||
# 注册到统一 Web 管理台(/hub):hub 启动时挂载 /api/bf_bot
|
||
# 前端页面 hexi/web/src/plugins/bf_bot/(绑定列表 + 删除)
|
||
from hexi.web_hub.web_plugin_registry import register_web_plugin # noqa: E402
|
||
|
||
register_web_plugin(
|
||
"bf_bot",
|
||
"BF查询",
|
||
"gamepad",
|
||
lambda: _web.build_admin_app(),
|
||
module_name=__name__,
|
||
)
|