"""Danding_QqPush 插件配置模块"""
import os

from pydantic import BaseModel, model_validator


class Config(BaseModel):
    """插件配置"""
    
    Token: str = "danding-8HkL9xQ2"
    """API 访问 Token，用于鉴权（必须在 .env 中配置 DANDING_QQPUSH_TOKEN）"""
    
    # 图片生成配置
    ImageWidth: int = 800
    """生成的图片宽度（像素）"""
    
    ImageFontSize: int = 24
    """字体大小（像素）"""
    
    ImagePadding: int = 30
    """图片内边距（像素）"""
    
    ImageLineSpacing: float = 1.4
    """行距倍数"""
    
    ImageBgColor: tuple = (252, 252, 252)
    """图片背景颜色 (R, G, B)"""
    
    ImageTextColor: tuple = (0, 0, 0)
    """文本颜色 (R, G, B)"""
    
    # 文本处理配置
    MaxTextLength: int = 2000
    """最大文本长度（字符数），超过将截断"""
    
    # 字体路径配置
    FontPaths: list = ("/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc",
        "/usr/share/fonts/wqy-microhei/wqy-microhei.ttc",
        "/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc",
        "C:/Windows/Fonts/msyh.ttc",
        "C:/Windows/Fonts/simhei.ttf",)
    """字体文件路径列表"""

    @model_validator(mode="before")
    @classmethod
    def load_token_aliases(cls, values):
        """兼容 NoneBot 配置和环境变量中的 QQPush Token 命名。"""
        if not isinstance(values, dict):
            return values

        token = (
            values.get("Token")
            or values.get("token")
            or values.get("DANDING_QQPUSH_TOKEN")
            or values.get("danding_qqpush_token")
            or os.getenv("DANDING_QQPUSH_TOKEN")
        )
        if token:
            values["Token"] = token
        return values
