# 🔐 Telethon UserBot Authorization Guide ## Проблема При запуске UserBot контейнера видите ошибку: ``` ❌ UserBot не авторизован. Требуется повторный вход. 📲 Необходимо авторизироваться вручную через интерфейс. ``` Это нормально! Telethon требует двухфакторной авторизации при первом запуске. --- ## ✅ Решение: Авторизация на локальной машине ### Шаг 1: Инициализировать сессию локально ```bash # Перейти в директорию проекта cd /home/trevor/dev/TG_autoposter # Запустить скрипт инициализации python3 init_telethon_session.py ``` ### Шаг 2: Следовать указаниям скрипта Скрипт попросит: ``` 📝 Enter the SMS code: [введите код из SMS] ``` 1. Вы получите SMS с кодом подтверждения на номер `+821056936103` 2. Введите полученный код 3. Если включена 2FA, введите пароль двухфакторной аутентификации ### Шаг 3: Проверить авторизацию ```bash # Проверить, что сессия корректна python3 init_telethon_session.py --verify ``` Должно вывести: ``` ✅ Session is valid! User: Your Name (@username) ID: 123456789 ``` ### Шаг 4: Перезагрузить контейнер ```bash # Перезагрузить UserBot контейнер docker-compose restart userbot # Проверить логи docker-compose logs userbot -f ``` Теперь должны увидеть: ``` ✅ UserBot инициализирован: Your Name (@username) 🔄 UserBot готов к обработке задач ``` --- ## 📁 Файлы сессии После авторизации появятся файлы: ``` app/sessions/ ├── userbot_session.session (основной файл сессии) └── telethon_string_session.txt (резервная копия) ``` **⚠️ Важно**: Никогда не выкладывайте эти файлы в публичные репозитории! ### Добавить в .gitignore ```bash # Убедитесь, что файлы сессии в .gitignore: echo "app/sessions/" >> .gitignore echo "sessions/" >> .gitignore ``` --- ## 🐳 Использование в Docker ### Вариант 1: Копировать сессию в контейнер ```bash # После авторизации, скопировать файлы в контейнер docker cp app/sessions/ tg_autoposter_userbot:/app/ # Перезагрузить docker-compose restart userbot ``` ### Вариант 2: Монтировать том Отредактировать `docker-compose.yml`: ```yaml services: userbot: # ... остальная конфигурация ... volumes: - ./app/sessions:/app/app/sessions - ./app:/app/app ``` Затем: ```bash docker-compose up -d userbot ``` ### Вариант 3: Авторизовать внутри контейнера ```bash # Запустить контейнер в интерактивном режиме docker-compose run --rm userbot python3 init_telethon_session.py # Введите SMS код и пароль 2FA при запросе ``` --- ## ⚠️ Решение проблем ### Проблема: "Invalid API credentials" ``` ❌ Invalid API credentials (400): SESSION_PASSWORD_NEEDED ``` **Решение**: Проверьте `TELETHON_API_ID` и `TELETHON_API_HASH` в `.env` - Получите их на https://my.telegram.org - Убедитесь что используете правильное сочетание ### Проблема: "Flood Wait" ошибка ``` ❌ Flood Wait X seconds ``` **Решение**: Подождите X секунд перед попыткой снова ### Проблема: "PHONE_NUMBER_UNOCCUPIED" ``` ❌ PHONE_NUMBER_UNOCCUPIED ``` **Решение**: Номер телефона не связан с аккаунтом Telegram. Проверьте номер в `.env` ### Проблема: "Session not found" ``` ❌ Session file not found ``` **Решение**: Запустите скрипт инициализации снова --- ## 🔄 Автоматизация при развёртывании Для CI/CD пайплайна можно создать скрипт: ```bash #!/bin/bash # deploy.sh # Проверить наличие сессии if [ ! -f "app/sessions/userbot_session.session" ]; then echo "⚠️ Telethon session not found!" echo "📋 Run: python3 init_telethon_session.py" exit 1 fi # Запустить контейнеры docker-compose up -d echo "✅ Deployment complete!" ``` --- ## 📊 Проверка статуса ### Проверить авторизацию в контейнере ```bash # Запустить проверку в контейнере docker-compose exec userbot python3 init_telethon_session.py --verify ``` ### Просмотреть логи инициализации ```bash # Логи UserBot docker-compose logs userbot -f # Логи основного бота (использует UserBot) docker-compose logs bot -f ``` ### Проверить файлы сессии ```bash # Список файлов ls -la app/sessions/ # Размер файла (должен быть > 100 bytes) stat app/sessions/userbot_session.session ``` --- ## 🎯 Следующие шаги После успешной авторизации: 1. ✅ UserBot контейнер будет работать без ошибок 2. ✅ Нажмите "🤖 UserBot" в меню бота 3. ✅ Используйте "📥 Собрать группы" для сбора информации 4. ✅ Используйте "👥 Собрать участников" для парсинга членов группы --- ## 💡 Дополнительно ### Просмотр информации о сессии ```bash python3 -c " import json from telethon.sessions import SQLiteSession session = SQLiteSession('app/sessions/userbot_session') print(f'Session ID: {session.id}') print(f'Auth Key Available: {bool(session.auth_key)}') " ``` ### Удалить старую сессию ```bash rm -rf app/sessions/ mkdir -p app/sessions # Затем повторить инициализацию python3 init_telethon_session.py ``` --- ## 🆘 Техническая поддержка Если возникают проблемы: 1. Проверьте файл `.env`: ```bash grep -E "TELETHON|TELEGRAM_BOT" .env ``` 2. Проверьте логи скрипта: ```bash python3 init_telethon_session.py 2>&1 | tee init.log ``` 3. Проверьте интернет-соединение и доступ к Telegram 4. Убедитесь что используется правильный номер телефона --- **Статус**: ✅ Руководство готово **Последнее обновление**: 2025-12-21