Files
chatbottren/config.py

60 lines
2.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Конфигурация из переменных окружения."""
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 ""