✅ UserBot Integration Complete: Fixed container startup, integrated UserBot menu to main bot
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
This commit is contained in:
394
CHECKLIST.md
Normal file
394
CHECKLIST.md
Normal file
@@ -0,0 +1,394 @@
|
||||
# ✅ 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 ✅
|
||||
Reference in New Issue
Block a user