"""Danding_QqPush 插件初始化模块"""
from nonebot import get_driver
from nonebot.log import logger
from nonebot.plugin import PluginMetadata

from .config import Config
from .api import create_routes
from .sender import sender


__plugin_meta__ = PluginMetadata(
    name="danding_qqpush",
    description="通过外部 HTTP API 向 QQ 群定向推送通知",
    usage="""
    API 接口：
    POST /danding/qqpush/{token}
    
    请求参数：
    {
        "group_id": 123456789,
        "qq": 987654321,
        "text": "系统告警#数据库连接失败#请立即处理"
    }
    
    说明：
    - text 中的 # 表示换行
    - 消息会自动渲染为图片并发送到指定群
    """,
    config=Config,
)


# 加载配置
plugin_config = Config.model_validate(get_driver().config.model_dump())


def register_routes():
    """注册 FastAPI 路由"""
    driver = get_driver()
    
    # 创建并注册路由
    routes = create_routes(plugin_config.Token, plugin_config)
    driver.server_app.include_router(routes)
    
    masked = plugin_config.Token[:4] + "***" if len(plugin_config.Token) > 4 else "***"
    logger.info(f"[Danding_QqPush] API 路由已注册: /danding/qqpush/{masked}")


# 插件加载时注册路由
try:
    register_routes()
    logger.info("[Danding_QqPush] 插件加载成功")
except Exception as e:
    logger.error(f"[Danding_QqPush] 插件加载失败: {str(e)}")


# Bot 连接时自动初始化 sender
driver = get_driver()
@driver.on_bot_connect
async def _(bot):
    """Bot 连接时自动设置 sender"""
    try:
        sender.set_bot(bot)
        logger.info(f"[Danding_QqPush] Bot 已连接: {bot.self_id}")
    except Exception as e:
        logger.error(f"[Danding_QqPush] Bot 连接初始化失败: {e}")
