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:
2026-02-24 04:40:07 +03:00
commit a18ad30961
20 changed files with 3431 additions and 0 deletions

267
README.md Normal file
View 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