60 lines
2.2 KiB
Python
60 lines
2.2 KiB
Python
|
|
"""Конфигурация из переменных окружения."""
|
|||
|
|
import os
|
|||
|
|
from pathlib import Path
|
|||
|
|
|
|||
|
|
from dotenv import load_dotenv
|
|||
|
|
|
|||
|
|
load_dotenv(Path(__file__).resolve().parent / ".env")
|
|||
|
|
|
|||
|
|
# Gitea
|
|||
|
|
GITEA_URL = os.getenv("GITEA_URL", "").rstrip("/")
|
|||
|
|
GITEA_TOKEN = os.getenv("GITEA_TOKEN") or os.getenv("TOKEN")
|
|||
|
|
REPO_OWNER = os.getenv("REPO_OWNER", "")
|
|||
|
|
REPO_NAME = os.getenv("REPO_NAME", "")
|
|||
|
|
|
|||
|
|
# LLM (Ollama / OpenAI-compatible)
|
|||
|
|
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "ollama")
|
|||
|
|
OPENAI_BASE_URL = os.getenv("OPENAI_BASE_URL", "")
|
|||
|
|
OPENAI_MODEL = os.getenv("OPENAI_MODEL", "qwen3")
|
|||
|
|
|
|||
|
|
# Telegram
|
|||
|
|
TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN", "")
|
|||
|
|
TELEGRAM_TO_GITEA_USERNAME = os.getenv("TELEGRAM_TO_GITEA_USERNAME", "")
|
|||
|
|
|
|||
|
|
# Whisper (голосовые)
|
|||
|
|
WHISPER_MODEL = os.getenv("WHISPER_MODEL", "small")
|
|||
|
|
|
|||
|
|
|
|||
|
|
def validate() -> None:
|
|||
|
|
"""Проверка обязательных переменных при старте."""
|
|||
|
|
missing = []
|
|||
|
|
if not GITEA_URL:
|
|||
|
|
missing.append("GITEA_URL")
|
|||
|
|
if not GITEA_TOKEN:
|
|||
|
|
missing.append("GITEA_TOKEN")
|
|||
|
|
if not REPO_OWNER:
|
|||
|
|
missing.append("REPO_OWNER")
|
|||
|
|
if not REPO_NAME:
|
|||
|
|
missing.append("REPO_NAME")
|
|||
|
|
if not TELEGRAM_BOT_TOKEN:
|
|||
|
|
missing.append("TELEGRAM_BOT_TOKEN")
|
|||
|
|
if missing:
|
|||
|
|
raise RuntimeError(f"Не заданы: {', '.join(missing)}. Проверьте .env")
|
|||
|
|
|
|||
|
|
|
|||
|
|
def get_gitea_username(telegram_username: str | None, telegram_id: int | None) -> str:
|
|||
|
|
"""Gitea username для текущего пользователя Telegram (для «на меня»)."""
|
|||
|
|
if TELEGRAM_TO_GITEA_USERNAME:
|
|||
|
|
# Один username для всех или JSON — пока только одна строка
|
|||
|
|
try:
|
|||
|
|
import json
|
|||
|
|
m = json.loads(TELEGRAM_TO_GITEA_USERNAME)
|
|||
|
|
if isinstance(m, dict) and telegram_username and telegram_username in m:
|
|||
|
|
return m[telegram_username]
|
|||
|
|
if isinstance(m, dict) and telegram_id is not None and str(telegram_id) in m:
|
|||
|
|
return m[str(telegram_id)]
|
|||
|
|
except (json.JSONDecodeError, TypeError):
|
|||
|
|
pass
|
|||
|
|
return TELEGRAM_TO_GITEA_USERNAME
|
|||
|
|
return telegram_username or ""
|