Files
NeoBot/core/config_models.py
K2Cr2O1 f868553342 feat: 添加Discord适配器与跨平台消息互通功能
新增Discord适配器支持,实现Discord与QQ之间的消息互通
添加通用数据模型用于跨平台消息转换
扩展配置系统以支持Discord和日志配置
重构日志系统以使用配置中的日志级别
在反向WebSocket管理器中注册Bot实例
更新主程序以支持Discord客户端启动
添加测试脚本验证核心功能
2026-03-15 13:36:17 +08:00

145 lines
3.5 KiB
Python

"""
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 = ""
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)
logging: LoggingModel = Field(default_factory=LoggingModel)