baton/backend/config.py

31 lines
1.1 KiB
Python
Raw Permalink Normal View History

2026-03-20 20:44:00 +02:00
from __future__ import annotations
import os
from dotenv import load_dotenv
load_dotenv()
def _require(name: str) -> str:
value = os.getenv(name)
if not value:
raise RuntimeError(f"Required environment variable {name!r} is not set")
return value
BOT_TOKEN: str = _require("BOT_TOKEN")
CHAT_ID: str = _require("CHAT_ID")
DB_PATH: str = os.getenv("DB_PATH", "baton.db")
WEBHOOK_SECRET: str = _require("WEBHOOK_SECRET")
WEBHOOK_URL: str = _require("WEBHOOK_URL")
2026-03-20 21:01:48 +02:00
WEBHOOK_ENABLED: bool = os.getenv("WEBHOOK_ENABLED", "true").lower() == "true"
2026-03-20 20:44:00 +02:00
FRONTEND_ORIGIN: str = os.getenv("FRONTEND_ORIGIN", "http://localhost:3000")
APP_URL: str | None = os.getenv("APP_URL") # Публичный URL приложения для keep-alive self-ping
2026-03-20 23:39:28 +02:00
ADMIN_TOKEN: str = _require("ADMIN_TOKEN")
2026-03-21 09:34:21 +02:00
ADMIN_CHAT_ID: str = _require("ADMIN_CHAT_ID")
2026-03-21 09:19:50 +02:00
VAPID_PRIVATE_KEY: str = os.getenv("VAPID_PRIVATE_KEY", "")
VAPID_PUBLIC_KEY: str = os.getenv("VAPID_PUBLIC_KEY", "")
VAPID_CLAIMS_EMAIL: str = os.getenv("VAPID_CLAIMS_EMAIL", "")
2026-03-21 12:42:13 +02:00
JWT_SECRET: str = os.getenv("JWT_SECRET", "")
JWT_TOKEN_EXPIRE_SECONDS: int = int(os.getenv("JWT_TOKEN_EXPIRE_SECONDS", "2592000")) # 30 days