Files
HeXi/hexi/plugins/nonebot_plugin_galgame_card/__init__.py
T
sansenhoshi 131b92b319 结构调整
视频解析多图/多媒体结构 消息体适配
2026-09-08 14:25:32 +08:00

97 lines
3.1 KiB
Python

"""群聊人设卡 —— 基于群聊语料蒸馏成员形象,生成 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()