50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
import os
|
|
from typing import Optional
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
# Telegram Bot
|
|
BOT_TOKEN: str
|
|
ADMIN_ID: int = 0
|
|
|
|
# AI Service
|
|
GEMINI_API_KEY: str
|
|
|
|
# Database
|
|
MONGO_HOST: str = "mongodb://localhost:27017"
|
|
DB_NAME: str = "my_bot_db"
|
|
|
|
# S3 Storage (Minio)
|
|
MINIO_ENDPOINT: str = "http://localhost:9000"
|
|
MINIO_ACCESS_KEY: str = "minioadmin"
|
|
MINIO_SECRET_KEY: str = "minioadmin"
|
|
MINIO_BUCKET: str = "ai-char"
|
|
|
|
# External API
|
|
EXTERNAL_API_SECRET: Optional[str] = None
|
|
|
|
# Daily Scheduler
|
|
SCHEDULER_CHARACTER_ID: Optional[str] = None # Character ID used for daily generation
|
|
|
|
# Meta Platform (Instagram Graph API)
|
|
META_ACCESS_TOKEN: Optional[str] = None # Long-lived page/Instagram access token
|
|
META_INSTAGRAM_ACCOUNT_ID: Optional[str] = None # Instagram Business Account ID
|
|
|
|
# AI Proxy Security
|
|
PROXY_SECRET_SALT: str = "AbVJUkwTPcUWJWhPzmjXb5p4SYyKmYC5m1uVW7Dhi7o"
|
|
|
|
# JWT Security
|
|
SECRET_KEY: str = "CHANGE_ME_TO_A_SUPER_SECRET_KEY"
|
|
ALGORITHM: str = "HS256"
|
|
ACCESS_TOKEN_EXPIRE_MINUTES: int = 30 * 24 * 60 # 30 days
|
|
|
|
model_config = SettingsConfigDict(
|
|
env_file=os.getenv("ENV_FILE", ".env"),
|
|
env_file_encoding="utf-8",
|
|
extra="ignore"
|
|
)
|
|
|
|
|
|
settings = Settings()
|