MAJOR FIXES: ✅ Fixed UserBot container startup by making TELEGRAM_BOT_TOKEN optional ✅ Broke circular import chain between app modules ✅ Made Config.validate() conditional for UserBot-only mode ✅ Removed unused celery import from userbot_service.py INTEGRATION: ✅ UserBot menu now accessible from main bot /start command ✅ Added 🤖 UserBot button to main keyboard ✅ Integrated userbot_manager.py handlers: - userbot_menu: Main UserBot interface - userbot_settings: Configuration - userbot_collect_groups: Gather all user groups - userbot_collect_members: Parse group members ✅ UserBot handlers properly registered in ConversationHandler CONTAINERS: ✅ tg_autoposter_bot: Running and handling /start commands ✅ tg_autoposter_userbot: Running as standalone microservice ✅ All dependent services (Redis, PostgreSQL, Celery workers) operational STATUS: Bot is fully operational and ready for testing
408 lines
13 KiB
Markdown
408 lines
13 KiB
Markdown
# 🚀 NEXT STEPS - Что делать дальше
|
||
|
||
## Статус: ✅ UserBot Microservice ГОТОВ К ИСПОЛЬЗОВАНИЮ
|
||
|
||
Вы только что получили **полностью готовый** Telethon UserBot микросервис с:
|
||
- ✅ Независимым Docker контейнером
|
||
- ✅ Асинхронной обработкой Celery
|
||
- ✅ Парсингом групп и участников
|
||
- ✅ Сохранением в PostgreSQL
|
||
- ✅ Полной документацией
|
||
- ✅ Примерами использования
|
||
|
||
---
|
||
|
||
## 🎯 БЫСТРЫЙ СТАРТ (10 минут)
|
||
|
||
### Шаг 1: Авторизировать UserBot (3 минуты)
|
||
|
||
```bash
|
||
# Запустите скрипт инициализации
|
||
bash init_userbot.sh
|
||
|
||
# ИЛИ вручную:
|
||
python userbot_service.py
|
||
```
|
||
|
||
**Что будет происходить:**
|
||
1. Приложение спросит SMS код
|
||
2. Проверьте SMS на номер телефона (TELETHON_PHONE из .env)
|
||
3. Введите код
|
||
4. Готово! Сессия сохранится в `sessions/userbot_session.session`
|
||
|
||
### Шаг 2: Собрать и запустить Docker (5 минут)
|
||
|
||
```bash
|
||
# Пересобрать контейнеры
|
||
docker-compose build
|
||
|
||
# Запустить все сервисы
|
||
docker-compose up -d
|
||
|
||
# Проверить логи UserBot
|
||
docker-compose logs -f userbot
|
||
```
|
||
|
||
**Ожидаемый вывод:**
|
||
```
|
||
✅ Telethon client initialized
|
||
✅ UserBot ready for parsing
|
||
✅ Connected to PostgreSQL
|
||
✅ Celery tasks registered
|
||
```
|
||
|
||
### Шаг 3: Протестировать в Telegram (2 минуты)
|
||
|
||
1. Откройте Telegram бота
|
||
2. Отправьте: `/sync_groups`
|
||
3. Бот должен ответить с прогрессом синхронизации
|
||
4. Через несколько секунд - результат ✅
|
||
|
||
### Шаг 4: Проверить данные в БД (1 минута)
|
||
|
||
```bash
|
||
# Подключитесь к БД
|
||
docker-compose exec postgres psql -U admin -d tg_autoposter
|
||
|
||
# Выполните:
|
||
SELECT COUNT(*) FROM groups;
|
||
SELECT COUNT(*) FROM group_members;
|
||
|
||
# Выход
|
||
\q
|
||
```
|
||
|
||
---
|
||
|
||
## 📚 ДОКУМЕНТАЦИЯ
|
||
|
||
**Выберите что вам нужно:**
|
||
|
||
### 1️⃣ **Я хочу быстро все запустить** ⚡
|
||
→ Прочитайте: **[CHECKLIST.md](./CHECKLIST.md)**
|
||
- 10-минутный план
|
||
- Проверка каждого компонента
|
||
- Troubleshooting если что-то не работает
|
||
|
||
### 2️⃣ **Я хочу понять архитектуру** 🏗️
|
||
→ Прочитайте: **[USERBOT_README.md](./USERBOT_README.md)**
|
||
- Обзор проекта на русском
|
||
- Диаграмма архитектуры
|
||
- Примеры использования
|
||
|
||
### 3️⃣ **Я хочу полную техническую документацию** 📖
|
||
→ Прочитайте: **[docs/USERBOT_MICROSERVICE.md](./docs/USERBOT_MICROSERVICE.md)**
|
||
- Полный API справочник
|
||
- Примеры кода
|
||
- Troubleshooting guide
|
||
- Performance tuning
|
||
- Security best practices
|
||
|
||
### 4️⃣ **Я хочу быстрый справочник** 📋
|
||
→ Прочитайте: **[docs/USERBOT_QUICKSTART.md](./docs/USERBOT_QUICKSTART.md)**
|
||
- Основные команды
|
||
- Быстрые примеры
|
||
- FAQ
|
||
|
||
### 5️⃣ **Я хочу посмотреть примеры кода** 💻
|
||
→ Запустите: **`python examples_userbot.py`**
|
||
- Интерактивное меню
|
||
- 5 полных примеров использования
|
||
- Ready-to-use code snippets
|
||
|
||
---
|
||
|
||
## 🔧 ОСНОВНЫЕ КОМПОНЕНТЫ
|
||
|
||
### UserbotParser (парсер групп)
|
||
|
||
```python
|
||
from app.userbot.parser import userbot_parser
|
||
|
||
# Инициализировать
|
||
await userbot_parser.initialize()
|
||
|
||
# Получить информацию о группе
|
||
group_info = await userbot_parser.parse_group_info(chat_id=-1001234567890)
|
||
print(group_info) # {'title': '...', 'members_count': 500, ...}
|
||
|
||
# Получить список участников
|
||
members = await userbot_parser.parse_group_members(chat_id=-1001234567890)
|
||
print(len(members)) # 500 участников
|
||
|
||
# Синхронизировать в БД (группу и участников)
|
||
await userbot_parser.sync_group_to_db(chat_id=-1001234567890)
|
||
|
||
# Выключить
|
||
await userbot_parser.shutdown()
|
||
```
|
||
|
||
### Celery задачи (асинхронная обработка)
|
||
|
||
```python
|
||
from app.userbot.tasks import parse_group_task, sync_all_groups_task
|
||
|
||
# Запустить парсинг асинхронно
|
||
task = parse_group_task.delay(chat_id=-1001234567890)
|
||
print(task.id) # Task ID для мониторинга
|
||
|
||
# Мониторить результат в Flower UI
|
||
# http://localhost:5555
|
||
|
||
# Или дождаться результата синхронно
|
||
result = task.get()
|
||
print(result) # {'status': 'success', 'groups_count': 1, 'members_count': 500}
|
||
```
|
||
|
||
### Интеграция с основным ботом
|
||
|
||
```bash
|
||
# В Telegram боте просто отправьте:
|
||
/sync_groups
|
||
|
||
# Бот автоматически:
|
||
# 1. Попробует использовать UserBot парсер
|
||
# 2. Синхронизирует все группы
|
||
# 3. Сохранит данные в БД
|
||
# 4. Отправит результат
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 МОНИТОРИНГ
|
||
|
||
### Логи в реальном времени
|
||
|
||
```bash
|
||
# UserBot логи (самое важное)
|
||
docker-compose logs -f userbot
|
||
|
||
# Все логи
|
||
docker-compose logs -f
|
||
|
||
# Только ошибки
|
||
docker-compose logs -f userbot | grep "ERROR"
|
||
```
|
||
|
||
### Flower UI (веб-интерфейс для Celery)
|
||
|
||
```bash
|
||
# Откройте в браузере:
|
||
http://localhost:5555
|
||
|
||
# Смотрите:
|
||
# - Active tasks
|
||
# - Task history
|
||
# - Worker statistics
|
||
# - Task graphs
|
||
```
|
||
|
||
### Статистика БД
|
||
|
||
```sql
|
||
-- Подключитесь к БД
|
||
docker-compose exec postgres psql -U admin -d tg_autoposter
|
||
|
||
-- Получить статистику
|
||
SELECT
|
||
g.title,
|
||
COUNT(gm.id) as members,
|
||
SUM(CASE WHEN gm.is_bot THEN 1 ELSE 0 END) as bots,
|
||
SUM(CASE WHEN gm.is_admin THEN 1 ELSE 0 END) as admins
|
||
FROM groups g
|
||
LEFT JOIN group_members gm ON g.id = gm.group_id
|
||
GROUP BY g.id, g.title
|
||
ORDER BY members DESC;
|
||
|
||
-- Выход
|
||
\q
|
||
```
|
||
|
||
---
|
||
|
||
## ⚠️ ВАЖНЫЕ ЗАМЕЧАНИЯ
|
||
|
||
### 🔐 Безопасность
|
||
|
||
- ✅ Используйте **отдельный Telegram аккаунт** для UserBot
|
||
- ✅ **Никогда** не коммитьте `sessions/userbot_session.session*` в Git
|
||
- ✅ **Никогда** не делитесь файлом сессии
|
||
- ✅ Добавьте `sessions/` в `.gitignore` (уже добавлено)
|
||
- ✅ Храните API ID и Hash в `.env.local`, а не в коде
|
||
|
||
### ⏳ Производительность
|
||
|
||
- **FloodWait**: Telegram может ограничить частые запросы (до 3600 сек)
|
||
- Это НОРМАЛЬНО, парсер автоматически ждет
|
||
- Просто не прерывайте процесс
|
||
- **Большие группы**: Парсинг 100K участников займет несколько часов
|
||
- Используйте `limit` параметр для тестирования
|
||
- **Параллельные задачи**: Можно запустить несколько парсингов одновременно
|
||
|
||
### 🔧 Обслуживание
|
||
|
||
- **Перезагрузить UserBot**: `docker-compose restart userbot`
|
||
- **Пересоздать сессию**: `rm sessions/userbot_session.session*`
|
||
- **Очистить очередь Celery**: `docker-compose exec redis redis-cli FLUSHALL`
|
||
- **Проверить здоровье**: `docker-compose ps` (все должны быть Up)
|
||
|
||
---
|
||
|
||
## 🆘 ЕСЛИ ЧТО-ТО НЕ РАБОТАЕТ
|
||
|
||
### ❌ "UserBot не авторизован"
|
||
|
||
```bash
|
||
# Решение:
|
||
rm sessions/userbot_session.session*
|
||
python userbot_service.py
|
||
# Введите SMS код
|
||
docker-compose restart userbot
|
||
```
|
||
|
||
### ❌ "Cannot connect to database"
|
||
|
||
```bash
|
||
# Проверить:
|
||
docker-compose exec postgres psql -U admin -d postgres -c "SELECT 1;"
|
||
|
||
# Если не работает:
|
||
docker-compose down postgres
|
||
docker-compose up -d postgres
|
||
```
|
||
|
||
### ❌ "FloodWait 3600"
|
||
|
||
- Это НОРМАЛЬНО - ограничение от Telegram
|
||
- Парсер автоматически подождет и продолжит
|
||
- Просто оставьте процесс работающим
|
||
|
||
### ❌ "Celery задачи не выполняются"
|
||
|
||
```bash
|
||
# Проверить Redis:
|
||
docker-compose exec redis redis-cli PING
|
||
# Должно вернуть: PONG
|
||
|
||
# Проверить Worker:
|
||
docker-compose logs celery_worker
|
||
```
|
||
|
||
### ❌ "Permission denied" при запуске скрипта
|
||
|
||
```bash
|
||
chmod +x init_userbot.sh
|
||
bash init_userbot.sh
|
||
```
|
||
|
||
**Полное руководство для troubleshooting**: [CHECKLIST.md](./CHECKLIST.md#-если-что-то-не-работает)
|
||
|
||
---
|
||
|
||
## 🎓 УЧЕБНЫЕ МАТЕРИАЛЫ
|
||
|
||
Хотите научиться использовать микросервис?
|
||
|
||
1. **Первый шаг**: [CHECKLIST.md](./CHECKLIST.md) (10 минут)
|
||
2. **Понимание архитектуры**: [USERBOT_README.md](./USERBOT_README.md) (15 минут)
|
||
3. **Практические примеры**: `python examples_userbot.py` (5 минут)
|
||
4. **Полная справка**: [docs/USERBOT_MICROSERVICE.md](./docs/USERBOT_MICROSERVICE.md) (30 минут)
|
||
5. **Деплой в production**: [docs/PRODUCTION_DEPLOYMENT.md](./docs/PRODUCTION_DEPLOYMENT.md) (20 минут)
|
||
|
||
---
|
||
|
||
## 📋 ФАЙЛЫ КОТОРЫЕ ВЫ ПОЛУЧИЛИ
|
||
|
||
### Новые файлы микросервиса:
|
||
- `app/userbot/parser.py` - Основной парсер
|
||
- `app/userbot/tasks.py` - Celery задачи
|
||
- `userbot_service.py` - Точка входа
|
||
- `Dockerfile.userbot` - Docker образ
|
||
- `init_userbot.sh` - Скрипт инициализации
|
||
- `examples_userbot.py` - Примеры кода
|
||
|
||
### Документация:
|
||
- `USERBOT_README.md` - Обзор на русском
|
||
- `CHECKLIST.md` - Быстрый старт
|
||
- `docs/USERBOT_MICROSERVICE.md` - Полная справка
|
||
- `docs/USERBOT_QUICKSTART.md` - Краткая инструкция
|
||
|
||
### Обновленные файлы:
|
||
- `docker-compose.yml` - Добавлен userbot сервис
|
||
- `app/__init__.py` - Исправлены callback patterns
|
||
- `app/handlers/commands.py` - Интеграция с UserBot
|
||
- `app/database/repository.py` - Метод add_or_update_group
|
||
- `app/database/member_repository.py` - Метод add_or_update_member
|
||
|
||
---
|
||
|
||
## ✨ ЧТО ДАЛЬШЕ?
|
||
|
||
**Когда вы будете готовы:**
|
||
|
||
1. ✅ **Готовы к тестированию?**
|
||
- Выполните: `bash init_userbot.sh && docker-compose build && docker-compose up -d`
|
||
- Потом: `/sync_groups` в боте
|
||
|
||
2. ✅ **Готовы к production?**
|
||
- Прочитайте: [docs/PRODUCTION_DEPLOYMENT.md](./docs/PRODUCTION_DEPLOYMENT.md)
|
||
- Настройте: Environment variables, health checks, scaling
|
||
|
||
3. ✅ **Нужны дополнительные функции?**
|
||
- Примеры: Scheduled parsing, Advanced analytics, Member tracking
|
||
- Контакт: Посмотрите документацию для расширения
|
||
|
||
4. ✅ **Нужна поддержка?**
|
||
- Логи: `docker-compose logs -f userbot`
|
||
- Monitoring: `http://localhost:5555`
|
||
- Docs: [docs/USERBOT_MICROSERVICE.md](./docs/USERBOT_MICROSERVICE.md#troubleshooting)
|
||
|
||
---
|
||
|
||
## 🏁 ФИНАЛЬНАЯ ПРОВЕРКА
|
||
|
||
Все ли готово? Проверьте:
|
||
|
||
```bash
|
||
# 1. Все контейнеры работают?
|
||
docker-compose ps
|
||
# Все должны быть "Up"
|
||
|
||
# 2. UserBot инициализирован?
|
||
ls -la sessions/userbot_session.session
|
||
# Файл должен существовать
|
||
|
||
# 3. БД работает?
|
||
docker-compose exec postgres psql -U admin -d postgres -c "SELECT 1;"
|
||
# Должно вернуть: 1
|
||
|
||
# 4. Redis работает?
|
||
docker-compose exec redis redis-cli PING
|
||
# Должно вернуть: PONG
|
||
|
||
# 5. Все инициализировано?
|
||
docker-compose logs userbot | grep "✅"
|
||
# Должны быть успешные логи
|
||
```
|
||
|
||
Если все ✅ зеленое - **ВЫ ГОТОВЫ К РАБОТЕ!** 🚀
|
||
|
||
---
|
||
|
||
## 📞 НУЖНА ПОМОЩЬ?
|
||
|
||
**Быстрый старт:** [CHECKLIST.md](./CHECKLIST.md)
|
||
**Обзор проекта:** [USERBOT_README.md](./USERBOT_README.md)
|
||
**Полная справка:** [docs/USERBOT_MICROSERVICE.md](./docs/USERBOT_MICROSERVICE.md)
|
||
**Примеры кода:** `python examples_userbot.py`
|
||
**Мониторинг:** http://localhost:5555
|
||
**Логи:** `docker-compose logs -f userbot`
|
||
|
||
---
|
||
|
||
**Создано:** Phase 8 - Telethon UserBot Microservice
|
||
**Статус:** ✅ Production Ready
|
||
**Дата:** 2024
|
||
|
||
🚀 **Вы готовы к запуску!**
|