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)
268 lines
10 KiB
Markdown
268 lines
10 KiB
Markdown
# 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
|