Files
TG_autoposter/docs/TESTING.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

111 lines
5.0 KiB
Markdown
Raw Permalink 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.

# 🧪 Инструкции по тестированию бота
## 🎯 Что было исправлено:
### 1. ✅ Исправлены callback_data значения
- **Проблема**: Callback_data отправлялись как `"CallbackType.MANAGE_MESSAGES"` вместо `"manage_messages"`
- **Решение**: Изменили с `str(CallbackType.X)` на `CallbackType.X.value` везде в коде
- **Затронуто**: 13+ мест в файлах:
- `app/utils/keyboards.py`
- `app/handlers/callbacks.py`
- `app/handlers/message_manager.py`
### 2. ✅ Реализован Telethon UserBot для парсинга групп
- **Новый метод**: `get_user_groups()` в `TelethonClientManager`
- **Новая команда**: `/sync_groups` для синхронизации групп
- **Что делает**:
- Получает все группы и супергруппы из UserBot сессии
- Извлекает информацию: ID, название, slow_mode, количество участников
- Автоматически добавляет новые группы в БД
- Обновляет информацию существующих групп
## 📝 План тестирования:
### Тест 1: Проверка callback'ов (кнопок)
1. Отправить боту `/start`
2. Убедиться что получено главное меню с кнопками:
- 📨 Сообщения
- 👥 Группы
3. Кликнуть на каждую кнопку и проверить:
- Интерфейс переключается правильно
- Не видно ошибок в логах
- **Ожидается**: Logs покажут "🔘 Получена кнопка MANAGE_MESSAGES" (или другое имя)
### Тест 2: Синхронизация групп через Telethon
1. Убедиться что UserBot добавлен в группы (пригласить его туда)
2. Отправить боту `/sync_groups`
3. **Ожидается**:
- Сообщение с прогрессом: "⏳ Синхронизирую группы..."
- Финальное сообщение с результатами:
```
✅ Синхронизация завершена!
📊 Результаты:
Добавлено: N
• ✏️ Обновлено: M
• 📈 Всего в БД: ...
```
4. Проверить логи:
```
✅ Получено X групп от Telethon
✅ Добавлена группа: "Название группы" (ID: -100...)
```
### Тест 3: Создание и отправка сообщения
1. `/start` → Кликнуть "📨 Сообщения"
2. Кликнуть " Новое сообщение"
3. Введите название и текст сообщения
4. Выберите группы из списка
5. Кликнуть "Отправить"
6. **Проверить**:
- Сообщение появилось в выбранных группах
- Логи показывают успешную отправку
- Учитывается slow_mode каждой группы
## 🐛 Что смотреть в логах:
### Успешные логи:
```
✅ Telethon клиент инициализирован: ...
✅ Получено X групп от Telethon
✅ Добавлена группа: "Название" (ID: -100...)
🔘 Получена кнопка MANAGE_MESSAGES от пользователя 556399210
📤 Сообщение отправлено в группу -100...
```
### Ошибки (требуют внимания):
```
❌ Telethon клиент не инициализирован
❌ Ошибка при получении групп: ...
❌ Ошибка при отправке сообщения: ...
```
## 📊 Проверка БД
```bash
# Заходим в контейнер
docker-compose exec postgres psql -U telegram -d tg_autoposter
# Проверяем группы
SELECT id, chat_id, title, slow_mode_delay FROM groups;
# Проверяем сообщения
SELECT id, title, is_active FROM messages;
# Проверяем связи (какие сообщения в каких группах)
SELECT * FROM message_groups;
```
## ✨ Ожидаемые результаты:
1. **Callback обработчики работают** → Кнопки переключают интерфейс
2. **UserBot парсит группы** → `/sync_groups` находит и сохраняет группы
3. **Сообщения отправляются** → Текст появляется в выбранных группах с учетом slow_mode
---
**Статус на 2025-12-21:**
- ✅ Исправлены callback_data значения (Enum.value)
- ✅ Реализовано парсинг групп через Telethon
- ✅ Команда `/sync_groups` готова к использованию
- ⏳ Ожидается тестирование от пользователя