0.0.1 Features: - Multi-account support via session files - AI comments generation via Ollama (local LLM) - Telegram bot for moderation (approve/reject/regenerate) - Docker support (controller + worker) - Auto-join public groups - Comment regeneration on group re-add - Statistics tracking Tech stack: - Python 3.11 - Telethon 1.34 (Telegram user client) - Aiogram 3.4 (Telegram bot framework) - SQLite (Database) - Docker & Docker Compose - Ollama (Local LLM)
58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
import os
|
|
from pathlib import Path
|
|
from dotenv import load_dotenv
|
|
|
|
# Загрузка переменных окружения
|
|
load_dotenv()
|
|
|
|
# Пути
|
|
BASE_DIR = Path(__file__).parent.parent # Корень проекта (batch-bot/)
|
|
DATA_DIR = BASE_DIR / "data" # Примонтированная директория для данных
|
|
SESSIONS_DIR = BASE_DIR / "sessions"
|
|
LOGS_DIR = DATA_DIR / "logs"
|
|
DB_PATH = DATA_DIR / "comments.db"
|
|
|
|
# Telegram Bot (контроллер)
|
|
BOT_TOKEN = os.getenv("BOT_TOKEN")
|
|
|
|
# Telegram API (воркеры)
|
|
API_ID = int(os.getenv("TELEGRAM_API_ID", "0"))
|
|
API_HASH = os.getenv("TELEGRAM_API_HASH", "")
|
|
|
|
# Группы (добавляются через бота)
|
|
LOG_GROUP_ID = int(os.getenv("LOG_GROUP_ID", "0"))
|
|
|
|
# Ollama
|
|
OLLAMA_URL = os.getenv("OLLAMA_URL", "http://localhost:11434").rstrip("/")
|
|
OLLAMA_MODEL = os.getenv("OLLAMA_MODEL", "qwen3:30b-a3b")
|
|
PROMPT_FILE = os.getenv("PROMPT_FILE", "prompt.txt")
|
|
|
|
# Сканирование
|
|
INITIAL_SCAN_LIMIT = int(os.getenv("INITIAL_SCAN_LIMIT", "20"))
|
|
|
|
# Комментарии
|
|
MAX_REGENERATIONS = int(os.getenv("MAX_REGENERATIONS", "3"))
|
|
COMMENT_DELAY_MIN = int(os.getenv("COMMENT_DELAY_MIN", "1"))
|
|
COMMENT_DELAY_MAX = int(os.getenv("COMMENT_DELAY_MAX", "5"))
|
|
|
|
# Админы
|
|
ADMIN_IDS = [int(x.strip()) for x in os.getenv("ADMIN_IDS", "").split(",") if x.strip()]
|
|
|
|
# Проверка конфигурации
|
|
def validate_config():
|
|
errors = []
|
|
|
|
if not BOT_TOKEN:
|
|
errors.append("BOT_TOKEN не задан")
|
|
|
|
if not API_ID or not API_HASH:
|
|
errors.append("TELEGRAM_API_ID или TELEGRAM_API_HASH не заданы")
|
|
|
|
if not LOG_GROUP_ID:
|
|
errors.append("LOG_GROUP_ID не задан")
|
|
|
|
if not ADMIN_IDS:
|
|
errors.append("ADMIN_IDS не заданы")
|
|
|
|
return errors
|