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 ""
|