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
395 lines
9.7 KiB
Markdown
395 lines
9.7 KiB
Markdown
# ✅ Telethon UserBot Microservice - CHECKLIST
|
||
|
||
## 🚀 Быстрый старт за 10 минут
|
||
|
||
### 1. Подготовка (2 мин)
|
||
|
||
- [ ] Откройте `.env` файл
|
||
- [ ] Найдите в `.env`:
|
||
- `TELETHON_API_ID` - ваш Telegram API ID
|
||
- `TELETHON_API_HASH` - ваш Telegram API Hash
|
||
- `TELETHON_PHONE` - номер телефона отдельного Telegram аккаунта (для UserBot)
|
||
|
||
```bash
|
||
# Если чего-то не хватает в .env:
|
||
TELETHON_API_ID=12345678
|
||
TELETHON_API_HASH=abcdef1234567890abcdef
|
||
TELETHON_PHONE=+1234567890
|
||
USE_TELETHON=true
|
||
```
|
||
|
||
### 2. Авторизация UserBot (3 мин)
|
||
|
||
```bash
|
||
# Способ 1: Автоматический скрипт (рекомендуется)
|
||
bash init_userbot.sh
|
||
|
||
# Способ 2: Вручную запустить
|
||
python userbot_service.py
|
||
```
|
||
|
||
**Что будет происходить:**
|
||
1. Приложение подключится к Telegram API
|
||
2. Запросит SMS код на указанный номер телефона
|
||
3. Введите SMS код
|
||
4. Сессия сохранится в `sessions/userbot_session.session`
|
||
5. Готово! ✅
|
||
|
||
### 3. Сборка Docker (3 мин)
|
||
|
||
```bash
|
||
# Пересобрать все контейнеры
|
||
docker-compose build
|
||
|
||
# Запустить сервисы
|
||
docker-compose up -d
|
||
|
||
# Проверить что все работает
|
||
docker-compose logs -f userbot
|
||
```
|
||
|
||
**Ожидаемый вывод:**
|
||
```
|
||
✅ UserBot initialized successfully
|
||
✅ Telethon client connected
|
||
✅ Ready to parse groups
|
||
```
|
||
|
||
### 4. Тестирование в боте (2 мин)
|
||
|
||
1. Откройте Telegram бота
|
||
2. Отправьте команду: `/sync_groups`
|
||
3. Бот должен ответить: "Syncing groups with UserBot..."
|
||
4. Нажмите кнопку "Sync" (если появится)
|
||
5. Ждите обновления данных
|
||
|
||
**Ожидаемый результат:**
|
||
```
|
||
✅ Groups synced successfully
|
||
👥 Members updated
|
||
💾 Data saved to database
|
||
```
|
||
|
||
### 5. Проверка БД (1 мин)
|
||
|
||
```bash
|
||
# Подключитесь к БД
|
||
docker-compose exec postgres psql -U admin -d tg_autoposter
|
||
|
||
# В psql выполните:
|
||
SELECT COUNT(*) as groups_count FROM groups;
|
||
SELECT COUNT(*) as members_count FROM group_members;
|
||
\q
|
||
```
|
||
|
||
---
|
||
|
||
## 🔍 Проверка каждого компонента
|
||
|
||
### ✅ Telethon UserBot Microservice
|
||
|
||
```bash
|
||
# Логи микросервиса
|
||
docker-compose logs -f userbot
|
||
|
||
# Проверить что процесс запущен
|
||
docker ps | grep userbot
|
||
```
|
||
|
||
**Должны увидеть:**
|
||
- Container name: `tg_autoposter_userbot`
|
||
- Status: `Up X minutes`
|
||
- Логи без ошибок
|
||
|
||
### ✅ PostgreSQL Database
|
||
|
||
```bash
|
||
# Проверить БД контейнер
|
||
docker-compose logs postgres | tail -20
|
||
|
||
# Проверить таблицы
|
||
docker-compose exec postgres psql -U admin -d tg_autoposter -c \
|
||
"SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';"
|
||
```
|
||
|
||
**Должны увидеть таблицы:**
|
||
- `groups`
|
||
- `group_members`
|
||
- `users`
|
||
- `messages`
|
||
- И другие...
|
||
|
||
### ✅ Redis Queue
|
||
|
||
```bash
|
||
# Проверить Redis
|
||
docker-compose logs redis | tail -10
|
||
|
||
# Проверить что Redis работает
|
||
docker-compose exec redis redis-cli PING
|
||
```
|
||
|
||
**Ожидаемый ответ:** `PONG`
|
||
|
||
### ✅ Celery Workers
|
||
|
||
```bash
|
||
# Логи Celery воркеров
|
||
docker-compose logs -f celery_worker
|
||
|
||
# Должны видеть:
|
||
# - [tasks] Registered workers
|
||
# - [*] Connected to redis://redis:6379/0
|
||
```
|
||
|
||
### ✅ Flower UI (Мониторинг)
|
||
|
||
```bash
|
||
# Откройте в браузере:
|
||
http://localhost:5555
|
||
|
||
# Проверьте:
|
||
- Workers tab: должны быть доступные воркеры
|
||
- Tasks tab: история выполненных задач
|
||
```
|
||
|
||
### ✅ Основной Telegram Bot
|
||
|
||
```bash
|
||
# Логи бота
|
||
docker-compose logs -f bot
|
||
|
||
# Отправьте /start в боте
|
||
# Должны появиться кнопки главного меню
|
||
```
|
||
|
||
---
|
||
|
||
## 🆘 Если что-то не работает
|
||
|
||
### ❌ "UserBot не авторизован"
|
||
|
||
```bash
|
||
# Решение: удалить сессию и авторизироваться заново
|
||
rm sessions/userbot_session.session*
|
||
python userbot_service.py
|
||
# Введите SMS код
|
||
```
|
||
|
||
### ❌ "FloodWait 3600"
|
||
|
||
Это НОРМАЛЬНО! Telegram ограничивает частые запросы.
|
||
- Парсер автоматически ждет и продолжает
|
||
- Просто дождитесь завершения
|
||
|
||
### ❌ "Connection refused"
|
||
|
||
```bash
|
||
# Проверить все контейнеры работают
|
||
docker-compose ps
|
||
|
||
# Если какой-то не работает, перезагрузить:
|
||
docker-compose restart postgres redis celery_worker userbot bot
|
||
```
|
||
|
||
### ❌ "Permission denied" (при выполнении bash скрипта)
|
||
|
||
```bash
|
||
# Дать права на выполнение
|
||
chmod +x init_userbot.sh
|
||
bash init_userbot.sh
|
||
```
|
||
|
||
### ❌ "Cannot connect to database"
|
||
|
||
```bash
|
||
# Проверить PostgreSQL
|
||
docker-compose exec postgres psql -U admin -d postgres -c "SELECT 1;"
|
||
|
||
# Если не работает, переустановить:
|
||
docker-compose down postgres
|
||
docker volume rm tg_autoposter_postgres_data
|
||
docker-compose up -d postgres
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 Мониторинг
|
||
|
||
### Реал-тайм логи
|
||
|
||
```bash
|
||
# UserBot логи (особенно важно)
|
||
docker-compose logs -f userbot
|
||
|
||
# Celery задачи
|
||
docker-compose logs -f celery_worker
|
||
|
||
# Бот
|
||
docker-compose logs -f bot
|
||
|
||
# Все логи сразу
|
||
docker-compose logs -f
|
||
```
|
||
|
||
### Web UI Flower
|
||
|
||
```bash
|
||
# Откройте в браузере
|
||
http://localhost:5555
|
||
|
||
# Смотрите:
|
||
# - Active tasks (выполняющиеся задачи)
|
||
# - Tasks history (история)
|
||
# - Worker pool (состояние воркеров)
|
||
# - Graphs (графики использования)
|
||
```
|
||
|
||
### Database Query Monitoring
|
||
|
||
```bash
|
||
# Подключиться к БД
|
||
docker-compose exec postgres psql -U admin -d tg_autoposter
|
||
|
||
# Получить статистику групп и участников
|
||
SELECT
|
||
g.title,
|
||
COUNT(gm.id) as members_count,
|
||
SUM(CASE WHEN gm.is_bot THEN 1 ELSE 0 END) as bots_count,
|
||
SUM(CASE WHEN gm.is_admin THEN 1 ELSE 0 END) as admins_count
|
||
FROM groups g
|
||
LEFT JOIN group_members gm ON g.id = gm.group_id
|
||
GROUP BY g.id, g.title
|
||
ORDER BY members_count DESC;
|
||
|
||
# Выход из psql
|
||
\q
|
||
```
|
||
|
||
---
|
||
|
||
## 🧪 Примеры использования
|
||
|
||
### Вариант 1: Через Telegram бот
|
||
|
||
```
|
||
1. /start
|
||
2. Нажмите "Manage Groups"
|
||
3. Нажмите "Sync with UserBot"
|
||
4. Выберите группу для парсинга
|
||
5. Готово! ✅
|
||
```
|
||
|
||
### Вариант 2: Через Python код
|
||
|
||
```python
|
||
from app.userbot.parser import userbot_parser
|
||
|
||
# Инициализировать
|
||
await userbot_parser.initialize()
|
||
|
||
# Парсить
|
||
members = await userbot_parser.parse_group_members(chat_id=-1001234567890)
|
||
|
||
# Синхронизировать в БД
|
||
await userbot_parser.sync_group_to_db(chat_id=-1001234567890)
|
||
|
||
# Выключить
|
||
await userbot_parser.shutdown()
|
||
```
|
||
|
||
### Вариант 3: Через Celery задачи
|
||
|
||
```python
|
||
from app.userbot.tasks import parse_group_task
|
||
|
||
# Запустить асинхронно
|
||
task = parse_group_task.delay(chat_id=-1001234567890)
|
||
|
||
# Мониторить в Flower: http://localhost:5555
|
||
# Получить результат
|
||
result = task.get()
|
||
```
|
||
|
||
### Вариант 4: Интерактивный скрипт
|
||
|
||
```bash
|
||
python examples_userbot.py
|
||
|
||
# Выберите вариант из меню
|
||
# 1. Parse single group
|
||
# 2. Parse group members
|
||
# 3. Sync to database
|
||
# 4. Query from database
|
||
# 5. Search members
|
||
```
|
||
|
||
---
|
||
|
||
## 📈 Performance Optimization
|
||
|
||
Если парсинг идет медленно:
|
||
|
||
```bash
|
||
# Увеличить Celery воркеры в docker-compose.yml
|
||
celery_worker:
|
||
environment:
|
||
# ... других переменные ...
|
||
CELERYD_CONCURRENCY: 8 # было 4, увеличили до 8
|
||
```
|
||
|
||
Потом пересобрать:
|
||
```bash
|
||
docker-compose build celery_worker
|
||
docker-compose up -d celery_worker
|
||
```
|
||
|
||
---
|
||
|
||
## ✨ Результаты
|
||
|
||
После выполнения всех шагов вы получите:
|
||
|
||
✅ Работающий Telethon UserBot микросервис
|
||
✅ Парсинг групп и участников Telegram
|
||
✅ Данные сохранены в PostgreSQL
|
||
✅ Асинхронная обработка через Celery
|
||
✅ Мониторинг через Flower UI
|
||
✅ Логирование всех операций
|
||
✅ Интеграция с основным ботом
|
||
|
||
---
|
||
|
||
## 📞 Если нужна помощь
|
||
|
||
1. **Быстрый старт**: `docs/USERBOT_QUICKSTART.md`
|
||
2. **Полная документация**: `docs/USERBOT_MICROSERVICE.md`
|
||
3. **Примеры кода**: `examples_userbot.py`
|
||
4. **Logирование**: `docker-compose logs -f`
|
||
5. **Мониторинг**: http://localhost:5555 (Flower UI)
|
||
|
||
---
|
||
|
||
## 🎯 Финальная проверка
|
||
|
||
```bash
|
||
# Все компоненты должны быть в статусе Up
|
||
|
||
docker-compose ps
|
||
|
||
# NAME STATUS
|
||
# tg_autoposter_bot Up X minutes
|
||
# tg_autoposter_userbot Up X minutes ← это новое!
|
||
# tg_autoposter_celery_worker Up X minutes
|
||
# tg_autoposter_postgres Up X minutes (healthy)
|
||
# tg_autoposter_redis Up X minutes (healthy)
|
||
```
|
||
|
||
✅ **Все зеленое? Отлично! Вы готовы к использованию** 🚀
|
||
|
||
---
|
||
|
||
Создано: Phase 8 - Telethon UserBot Microservice
|
||
Версия: 1.0
|
||
Статус: Production Ready ✅
|