Features: - Multi-account support (session files) - AI comments via Ollama - Telegram bot moderation - Filter by sessions and groups - Docker support - Auto-join groups - Log notifications - DB migration script Bug fixes: - Fixed comment_to for proper post targeting - Fixed entity lookup with multiple ID formats - Fixed callback handlers for filtering - Added auto-join before entity lookup
Batch Bot - Telegram Comment Bot
Автоматический бот для генерации и публикации комментариев в Telegram от имени нескольких пользователей с использованием локальной LLM (Ollama).
🏗 Архитектура
┌─────────────────────────────────────────────────────────────┐
│ Telegram Bot (Controller) │
│ @BotFather bot для управления и модерации │
└─────────────────────────────────────────────────────────────┤
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Session Workers │
│ Воркеры для каждого пользователя (user sessions) │
└─────────────────────────────────────────────────────────────┤
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ user_1.session│ │ user_2.session│ │ user_3.session│
└────────────┘ └────────────┘ └────────────┘
📋 Возможности
- ✅ Мультиаккаунт — работа с несколькими сессиями одновременно
- ✅ AI генерация — комментарии через Ollama (локальная LLM)
- ✅ Модерация — inline-кнопки для одобрения/отклонения
- ✅ Редактирование — возможность изменить текст перед отправкой
- ✅ Статистика — учёт сгенерированных/отправленных комментариев
- ✅ Фильтрация — просмотр комментариев по сессиям и группам
- ✅ Docker — полная контейнеризация
- ✅ Уведомления — уведомления о новых постах в лог-группу
🚀 Быстрый старт
1. Настройка
# Скопируйте .env.example в .env
cp .env.example .env
# Отредактируйте .env
nano .env
Обязательные параметры:
| Параметр | Описание |
|---|---|
BOT_TOKEN |
Токен бота от @BotFather |
TELEGRAM_API_ID |
API ID аккаунта |
TELEGRAM_API_HASH |
API Hash аккаунта |
LOG_GROUP_ID |
ID чата для модерации (с -100) |
ADMIN_IDS |
Telegram ID администраторов |
OLLAMA_URL |
URL внешнего Ollama |
2. Создание сессий
# Установка зависимостей
pip install -r requirements.txt
# Запуск авторизации
python auth.py
Введите API credentials, номер телефона и код из Telegram.
Для нескольких аккаунтов:
- Запустите
python auth.pyнесколько раз - Или скопируйте
.sessionфайлы вsessions/
3. Миграция БД (если обновляетесь)
python migrate_db.py
4. Запуск Docker
# Сборка и запуск
docker-compose build
docker-compose up -d
# Логи
docker-compose logs -f
# Остановка
docker-compose down
Сервисы:
controller— бот для модерацииworker— отправка комментариев
📖 Использование
Команды бота
| Команда | Описание |
|---|---|
/start |
Главное меню |
/stats |
Статистика |
/pending |
Ожидающие комментарии (по группам) |
/sessions |
Сессии (по сессиям) |
/groups |
Управление группами |
/add_group ID |
Добавить группу |
/help |
Справка |
Фильтрация комментариев
По сессиям:
- Нажмите "👥 Сессии"
- Выберите сессию
- Просмотрите комментарии этой сессии
По группам:
- Нажмите "📝 Ожидающие"
- Выберите группу
- Просмотрите комментарии этой группы
Добавление группы
Через команду:
/add_group 1416283017
Через меню:
- Отправьте
/groups - Нажмите "➕ Добавить группу"
- Отправьте ID группы
Управление группами:
/groups— показать список- Нажмите на группу для управления (пауза/удаление)
Модерация комментариев
- Бот получает новый пост из группы
- Генерирует комментарий через Ollama
- Отправляет в
LOG_GROUP_IDна модерацию - Администратор нажимает:
- ✅ Одобрить — опубликовать комментарий
- ❌ Отклонить — удалить комментарий
- 🔄 Регенерировать — новый вариант
- ✏️ Редактировать — изменить текст
🔧 Конфигурация
Переменные окружения
| Параметр | По умолчанию | Описание |
|---|---|---|
BOT_TOKEN |
- | Токен Telegram бота |
TELEGRAM_API_ID |
- | API ID для воркеров |
TELEGRAM_API_HASH |
- | API Hash для воркеров |
LOG_GROUP_ID |
- | ID чата для модерации |
ADMIN_IDS |
- | ID администраторов |
OLLAMA_URL |
http://host.docker.internal:11434 |
URL Ollama |
OLLAMA_MODEL |
qwen3:30b-a3b |
Модель для генерации |
INITIAL_SCAN_LIMIT |
20 |
Кол-во сообщений для сканирования |
COMMENT_DELAY_MIN |
1 |
Мин. задержка перед отправкой (сек) |
COMMENT_DELAY_MAX |
5 |
Макс. задержка перед отправкой (сек) |
📁 Структура проекта
batch-bot/
├── .env.example # Пример конфигурации
├── .gitignore
├── docker-compose.yml # Docker конфигурация
├── Dockerfile # Образ для controller/worker
├── requirements.txt # Python зависимости
├── auth.py # Скрипт авторизации
├── migrate_db.py # Скрипт миграции БД
├── prompt.txt # Шаблон для LLM
├── bot/
│ ├── config.py # Конфигурация
│ ├── controller.py # Бот для модерации
│ ├── worker.py # Воркер для отправки
│ ├── db.py # База данных
│ ├── keyboard.py # Inline-клавиатуры
│ ├── ollama.py # Ollama API
│ └── session_manager.py # Управление сессиями
├── sessions/ # .session файлы (том Docker)
├── logs/ # Логи (том Docker)
└── data/ # БД и данные (том Docker)
🐳 Docker
Запуск
# Сборка
docker-compose build
# Запуск
docker-compose up -d
# Логи
docker-compose logs -f controller
docker-compose logs -f worker
# Остановка
docker-compose down
Тома
| Том | Описание |
|---|---|
./sessions:/app/sessions |
Файлы сессий |
./logs:/app/logs |
Логи |
./data:/app/data |
База данных |
Сетевые настройки
Linux:
OLLAMA_URL=http://172.17.0.1:11434
macOS/Windows:
OLLAMA_URL=http://host.docker.internal:11434
🔐 Безопасность
.envи*.sessionфайлы добавлены в.gitignore- Не коммитьте сессии в репозиторий
- Используйте разные аккаунты для воркеров
- Ограничьте доступ через
ADMIN_IDS
📊 База данных
Таблицы:
| Таблица | Описание |
|---|---|
comments |
Комментарии (текст, статус, сессия) |
sessions |
Информация о сессиях |
stats |
Статистика по дням |
target_groups |
Целевые группы для мониторинга |
⚠️ Важные замечания
- Telegram ToS — использование нескольких аккаунтов может нарушать условия Telegram
- Задержки — настройте
COMMENT_DELAY_MIN/MAXдля естественности - Лимиты — не отправляйте слишком много комментариев с одного аккаунта
- Ollama — должен быть доступен по сети для воркера
🐛 Решение проблем
Бот не подключается:
- Проверьте
BOT_TOKENв.env - Убедитесь, что бот добавлен в
LOG_GROUP_IDкак администратор
Сессия не авторизуется:
- Запустите
python auth.pyзаново - Проверьте
TELEGRAM_API_IDиTELEGRAM_API_HASH
Ollama не отвечает:
- Проверьте URL в
.env - Убедитесь, что модель загружена:
ollama list
"Нет групп в БД":
- Добавьте группу через бота:
/add_group ID
Комментарии не отправляются:
- Проверьте что аккаунт вступил в группу комментариев
- Worker автоматически вступает при отправке
"Could not find the input entity":
- Аккаунт должен быть участником группы
- Worker автоматически вступает при сканировании
📝 Лицензия
MIT
📞 Контакты
- Telegram: @your_username
- Email: your@email.com
Description
Languages
Python
99.6%
Dockerfile
0.4%