Files
HeXi/hexi/plugins/nonebot_plugin_bf_bot/__init__.py
T

62 lines
2.5 KiB
Python
Raw Normal View History

"""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(),
2026-09-08 14:25:32 +08:00
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__,
)