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)
This commit is contained in:
267
README.md
Normal file
267
README.md
Normal file
@@ -0,0 +1,267 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user