""" Pydantic 配置模型模块 该模块使用 Pydantic 定义了与 `config.toml` 文件结构完全对应的配置模型。 这使得配置的加载、校验和访问都变得类型安全和健壮。 """ from typing import List, Optional from pydantic import BaseModel, Field class NapCatWSModel(BaseModel): """ 对应 `config.toml` 中的 `[napcat_ws]` 配置块。 """ uri: str token: str = "" reconnect_interval: int = 5 class BotModel(BaseModel): """ 对应 `config.toml` 中的 `[bot]` 配置块。 """ command: List[str] = Field(default_factory=lambda: ["/"]) ignore_self_message: bool = True permission_denied_message: str = "权限不足,需要 {permission_name} 权限" class ReverseWSModel(BaseModel): """ 对应 `config.toml` 中的 `[reverse_ws]` 配置块。 """ enabled: bool = False host: str = "0.0.0.0" port: int = 3002 token: Optional[str] = None class RedisModel(BaseModel): """ 对应 `config.toml` 中的 `[redis]` 配置块。 """ host: str port: int db: int password: str class MySQLModel(BaseModel): """ 对应 `config.toml` 中的 `[mysql]` 配置块。 """ host: str port: int user: str password: str db: str charset: str = "utf8mb4" class DockerModel(BaseModel): """ 对应 `config.toml` 中的 `[docker]` 配置块。 """ base_url: Optional[str] = None sandbox_image: str = "python-sandbox:latest" timeout: int = 10 concurrency_limit: int = 5 tls_verify: bool = False ca_cert_path: Optional[str] = None client_cert_path: Optional[str] = None client_key_path: Optional[str] = None class ImageManagerModel(BaseModel): """ 对应 `config.toml` 中的 `[image_manager]` 配置块。 """ image_height: int = 1920 image_width: int = 1080 class ThreadingModel(BaseModel): """ 对应 `config.toml` 中的 `[threading]` 配置块。 """ max_workers: int = Field(default=10, ge=1, le=100) client_max_workers: int = Field(default=5, ge=1, le=50) thread_name_prefix: str = "NeoBot-Thread" class BilibiliModel(BaseModel): """ 对应 `config.toml` 中的 `[bilibili]` 配置块。 """ sessdata: Optional[str] = None bili_jct: Optional[str] = None buvid3: Optional[str] = None dedeuserid: Optional[str] = None class LocalFileServerModel(BaseModel): """ 对应 `config.toml` 中的 `[local_file_server]` 配置块。 """ enabled: bool = True host: str = "0.0.0.0" port: int = 3003 class DiscordModel(BaseModel): """ 对应 `config.toml` 中的 `[discord]` 配置块。 """ enabled: bool = False token: str = "" proxy: Optional[str] = None proxy_type: str = "http" class CrossPlatformMapping(BaseModel): """ 跨平台映射配置 """ qq_group_id: int name: str class CrossPlatformModel(BaseModel): """ 对应 `config.toml` 中的 `[cross_platform]` 配置块。 """ enabled: bool = False mappings: Optional[dict[int, CrossPlatformMapping]] = None class LoggingModel(BaseModel): """ 对应 `config.toml` 中的 `[logging]` 配置块。 """ level: str = "DEBUG" file_level: str = "DEBUG" console_level: str = "INFO" class ConfigModel(BaseModel): """ 顶层配置模型,整合了所有子配置块。 """ napcat_ws: NapCatWSModel bot: BotModel redis: RedisModel mysql: MySQLModel docker: DockerModel image_manager: ImageManagerModel reverse_ws: ReverseWSModel threading: ThreadingModel = Field(default_factory=ThreadingModel) bilibili: BilibiliModel = Field(default_factory=BilibiliModel) local_file_server: LocalFileServerModel = Field(default_factory=LocalFileServerModel) discord: DiscordModel = Field(default_factory=DiscordModel) cross_platform: CrossPlatformModel = Field(default_factory=CrossPlatformModel) logging: LoggingModel = Field(default_factory=LoggingModel)