import os
from dotenv import load_dotenv

# Load appropriate .env file based on ENV_MODE
env_mode = os.getenv("ENV_MODE", "production")
env_file = ".env.testing" if env_mode == "testing" else ".env"
load_dotenv(env_file)


class Config:
    DISCORD_TOKEN: str = os.getenv("DISCORD_TOKEN", "")
    TEXT_CHANNEL_ID: int = int(os.getenv("TEXT_CHANNEL_ID", "0"))
    VOICES_DIR: str = os.getenv("VOICES_DIR", "./voices")
    DEFAULT_VOICE: str | None = os.getenv("DEFAULT_VOICE", None)

    @classmethod
    def validate(cls) -> list[str]:
        """Validate configuration and return list of errors."""
        errors = []
        if not cls.DISCORD_TOKEN:
            errors.append("DISCORD_TOKEN is not set")
        if cls.TEXT_CHANNEL_ID == 0:
            errors.append("TEXT_CHANNEL_ID is not set")
        if not os.path.exists(cls.VOICES_DIR):
            errors.append(f"Voices directory not found: {cls.VOICES_DIR}")
        return errors
