"""Danding_QqPush 插件初始化模块"""
from nonebot import get_driver, get_bots
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.dict())


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


def init_bot():
    """初始化 Bot 实例"""
    try:
        bots = get_bots()
        if bots:
            # 获取第一个可用的 Bot
            bot = list(bots.values())[0]
            sender.set_bot(bot)
            logger.info(f"[Danding_QqPush] Bot 已连接: {bot.self_id}")
        else:
            logger.warning("[Danding_QqPush] 未找到可用的 Bot 实例")
    except Exception as e:
        logger.warning(f"[Danding_QqPush] 初始化 Bot 失败: {str(e)}")


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