Files
NeoBot/core/config_models.py
镀铬酸钾 393227fdd2 Dev (#77)
* fix(discord): 修复 WebSocket 连接检测并增强跨平台文件处理

修复 Discord WebSocket 连接检测逻辑,使用正确的属性检查连接状态
为跨平台消息处理添加文件类型支持,并增加详细的调试日志
优化附件处理逻辑,确保所有文件类型都能正确识别和转发

* feat(跨平台): 优化消息处理并添加纯文本提取功能

添加 extract_text_only 函数过滤非文本标记
修改翻译逻辑仅处理纯文本内容
完善附件处理和消息内容拼接
修复仅包含表情时的消息处理问题

* refactor(discord-cross): 使用模块专用日志记录器替换全局日志记录器

将各模块中的全局日志记录器替换为模块专用日志记录器,以提供更清晰的日志来源标识
同时在适配器中添加会话状态检查和重连机制,提升消息发送的可靠性

* feat(翻译): 改进翻译功能,同时显示原文和译文

修改翻译功能,不再替换原文而是同时显示原文和翻译内容,方便用户对照
更新 DeepSeek API 配置为官方地址和模型
优化 Discord 适配器的重连逻辑,直接关闭 WebSocket 触发重连
修复 Discord 频道 ID 转换逻辑,简化处理流程

* feat(cross-platform): 添加跨平台功能支持及配置优化

- 新增跨平台配置模型和全局配置支持
- 优化 Discord 适配器的连接管理和错误处理
- 添加 watchdog 和 discord.py 依赖
- 创建 DeepSeek API 配置文档
- 移除重复的同步帮助图片代码
- 改进跨平台插件配置加载逻辑

* fix(jrcd): 修正群组ID检查条件

删除不再使用的示例插件文件
2026-03-23 16:52:15 +08:00

164 lines
4.0 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 = ""
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)