from pydantic_settings import BaseSettings from functools import lru_cache from typing import Optional class Settings(BaseSettings): telegram_bot_token: str = "" telegram_proxy_url: Optional[str] = None telegram_proxy_type: str = "socks5" allowed_usernames: str = "" bot_name: str = "Валера" default_tool: str = "qwen" qwen_command: str = "qwen" opencode_command: str = "opencode" tool_timeout: int = 120 memory_messages_count: int = 10 chroma_persist_dir: str = "./chroma_db" scheduler_enabled: bool = True idea_interval_hours: int = 4 stt_enabled: bool = True stt_model: str = "vosk" gigachat_credentials: Optional[str] = None yandex_api_key: Optional[str] = None yandex_folder_id: Optional[str] = None database_url: str = "sqlite+aiosqlite:///./valera.db" # XRay settings xray_ssh_host: str = "mt.mirv.top" xray_ssh_user: str = "root" xray_ssh_password: str = "" xray_add_user_script: str = "/root/bin/add_xray_user.sh" class Config: env_file = ".env" extra = "allow" @lru_cache() def get_settings() -> Settings: return Settings()