"""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__, )