Files
chatbottren/config.py

60 lines
2.2 KiB
Python
Raw Permalink Normal View History

2026-02-16 10:45:01 +05:00
"""Конфигурация из переменных окружения."""
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 ""