Files
batch-bot/README.md
bilal a18ad30961 Initial commit: Batch Bot - Telegram Comment Bot
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)
2026-02-24 04:40:07 +03:00

268 lines
10 KiB
Markdown
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.
# Batch Bot - Telegram Comment Bot
Автоматический бот для генерации и публикации комментариев в Telegram от имени нескольких пользователей.
## 🏗 Архитектура
```
┌─────────────────────────────────────────────────────────────┐
│ Telegram Bot (Controller) │
│ @BotFather bot для управления и модерации │
└─────────────────────────────────────────────────────────────┤
┌─────────────────────────────────────────────────────────────┐
│ Session Workers │
│ Воркеры для каждого пользователя (user sessions) │
└─────────────────────────────────────────────────────────────┤
┌───────────────┼───────────────┐
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ user_1.session│ │ user_2.session│ │ user_3.session│
└────────────┘ └────────────┘ └────────────┘
```
## 📋 Возможности
-**Мультиаккаунт** — работа с несколькими сессиями одновременно
-**AI генерация** — комментарии через Ollama (локальная LLM)
-**Модерация** — inline-кнопки для одобрения/отклонения
-**Редактирование** — возможность изменить текст перед отправкой
-**Статистика** — учёт сгенерированных/отправленных комментариев
-**Безопасность** — разделение контроллера и воркеров
-**Docker** — полная контейнеризация
## 🚀 Быстрый старт
### 1. Настройка
```bash
# Скопируйте .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. Создание сессий
```bash
# Установка зависимостей
pip install -r requirements.txt
# Запуск авторизации
python auth.py
```
Введите номер телефона и код из Telegram.
**Для нескольких аккаунтов:**
- Запустите `python auth.py` несколько раз
- Или скопируйте `.session` файлы в `sessions/`
### 3. Запуск Docker
```bash
# Сборка и запуск
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
```
**Через меню:**
1. Отправьте `/groups`
2. Нажмите " Добавить группу"
3. Отправьте ID группы
**Управление группами:**
- `/groups` — показать список
- Нажмите на группу для управления (пауза/удаление)
### Модерация комментариев
1. Бот получает новый пост из группы
2. Генерирует комментарий через Ollama
3. Отправляет в `LOG_GROUP_ID` на модерацию
4. Администратор нажимает:
- **✅ Одобрить** — опубликовать комментарий
- **❌ Отклонить** — удалить комментарий
- **🔄 Регенерировать** — новый вариант
- **✏️ Редактировать** — изменить текст
## 🔧 Конфигурация
### Переменные окружения
| Параметр | По умолчанию | Описание |
|----------|--------------|----------|
| `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 # Скрипт авторизации
├── 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
### Запуск
```bash
# Сборка
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` | Целевые группы для мониторинга |
## ⚠️ Важные замечания
1. **Telegram ToS** — использование нескольких аккаунтов может нарушать условия Telegram
2. **Задержки** — настройте `COMMENT_DELAY_MIN/MAX` для естественности
3. **Лимиты** — не отправляйте слишком много комментариев с одного аккаунта
4. **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 автоматически вступает при отправке
## 📝 Лицензия
MIT
## 📞 Контакты
- Telegram: @your_username
- Email: your@email.com