Initial commit: telegram bot base
This commit is contained in:
59
config.py
Normal file
59
config.py
Normal file
@@ -0,0 +1,59 @@
|
||||
"""Конфигурация из переменных окружения."""
|
||||
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 ""
|
||||
Reference in New Issue
Block a user