Files
TG_autoposter/CHECKLIST.md
Andrew K. Choi 48f8c6f0eb 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
2025-12-21 12:09:11 +09:00

395 lines
9.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ✅ 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 ✅