"""群聊人设卡 —— 基于群聊语料蒸馏成员形象,生成 galgame 风格人物卡 消息入口:on_message 监听全部消息事件,类型注解过滤出群聊,两级闸门(群开关 + 个人 opt-in)通过后,治理层处理落库。采集编排已下沉到 services/collector.py。 当前进度:数据层 + 采集层(消息路径)完成;总结路径(印象/画像)待实现。 """ from nonebot import get_driver, require require("nonebot_plugin_orm") from nonebot.adapters.onebot.v11 import GroupMessageEvent # noqa: F401 from nonebot.plugin import PluginMetadata # ── 禁用 nonebot_plugin_orm 的启动自动同步 ───────────────────────────── from nonebot import logger as _logger try: import nonebot_plugin_orm.migrate as _orm_migrate def _safe_sync(*_args, **_kwargs): _logger.debug("galgame_card | 已禁用 orm 自动同步(schema 演进由 ensure_schema 接管)") _orm_migrate.sync = _safe_sync except ImportError: _logger.warning("galgame_card | 无法禁用 orm 自动同步,请检查 nonebot_plugin_orm 是否安装") from . import models # noqa: F401 # 确保表结构注册 from . import repository, processor from . import handlers as _handlers # noqa: E402 from hexi.web_hub.web_config import register_plugin_config # noqa: E402 from hexi.web_hub.web_plugin_registry import register_web_plugin # noqa: E402 from . import web_hub # noqa: E402 def _apply_galgame_config(values: dict) -> None: import sys conf_mod = sys.modules.get("hexi.plugins.nonebot_plugin_galgame_card.config") if conf_mod is None: return conf = getattr(conf_mod, "config", None) if conf is None: return for key, value in values.items(): try: setattr(conf, key, value) except Exception: # noqa: BLE001 pass def _get_galgame_config_values() -> dict: import sys conf_mod = sys.modules.get("hexi.plugins.nonebot_plugin_galgame_card.config") conf = getattr(conf_mod, "config", None) if conf_mod else None if conf is None: return {} keys = ("image_vision_enabled",) return {k: getattr(conf, k, None) for k in keys} register_plugin_config( __name__, { "fields": [ {"key": "image_vision_enabled", "label": "图片识别启用", "type": "bool", "default": False}, ] }, apply=_apply_galgame_config, getter=_get_galgame_config_values, ) # 注册到统一 Web 管理台(/hub):hub 启动时挂载 /api/galgame_card register_web_plugin( "galgame_card", "群聊人设卡", "user", lambda: web_hub.build_admin_app(), module_name=__name__, ) __plugin_meta__ = PluginMetadata( name="群聊人设卡", description="基于群聊语料蒸馏成员形象,生成 galgame 风格人物卡", usage="开发中……", type="application", ) _driver = get_driver() @_driver.on_startup async def _ensure_schema(): """老库迁移(persona_group.group_name 列),幂等""" await repository.ensure_schema()