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

5.0 KiB
Raw Blame History

🧪 Инструкции по тестированию бота

🎯 Что было исправлено:

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 клиент не инициализирован
❌ Ошибка при получении групп: ...
❌ Ошибка при отправке сообщения: ...

📊 Проверка БД

# Заходим в контейнер
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 готова к использованию
  • Ожидается тестирование от пользователя