NEW FILES: ✅ init_telethon_session.py - Interactive Python script for session initialization ✅ init_telethon_session.sh - Bash wrapper for Docker-based authorization ✅ TELETHON_AUTHORIZATION_GUIDE.md - Comprehensive authorization guide ✅ USERBOT_AUTHORIZATION_README.md - Quick start guide for users FEATURES: ✅ Interactive authorization flow with SMS code verification ✅ 2FA password support ✅ Session persistence to app/sessions/ ✅ Docker container integration ✅ Verification of existing sessions ✅ Clear error messages and troubleshooting USAGE: $ ./init_telethon_session.sh Or: $ python3 init_telethon_session.py This solves the UserBot authorization issue where Telethon requires interactive SMS code verification on first setup.
7.2 KiB
🔐 Telethon UserBot Authorization Guide
Проблема
При запуске UserBot контейнера видите ошибку:
❌ UserBot не авторизован. Требуется повторный вход.
📲 Необходимо авторизироваться вручную через интерфейс.
Это нормально! Telethon требует двухфакторной авторизации при первом запуске.
✅ Решение: Авторизация на локальной машине
Шаг 1: Инициализировать сессию локально
# Перейти в директорию проекта
cd /home/trevor/dev/TG_autoposter
# Запустить скрипт инициализации
python3 init_telethon_session.py
Шаг 2: Следовать указаниям скрипта
Скрипт попросит:
📝 Enter the SMS code: [введите код из SMS]
- Вы получите SMS с кодом подтверждения на номер
+821056936103 - Введите полученный код
- Если включена 2FA, введите пароль двухфакторной аутентификации
Шаг 3: Проверить авторизацию
# Проверить, что сессия корректна
python3 init_telethon_session.py --verify
Должно вывести:
✅ Session is valid!
User: Your Name (@username)
ID: 123456789
Шаг 4: Перезагрузить контейнер
# Перезагрузить 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
# Убедитесь, что файлы сессии в .gitignore:
echo "app/sessions/" >> .gitignore
echo "sessions/" >> .gitignore
🐳 Использование в Docker
Вариант 1: Копировать сессию в контейнер
# После авторизации, скопировать файлы в контейнер
docker cp app/sessions/ tg_autoposter_userbot:/app/
# Перезагрузить
docker-compose restart userbot
Вариант 2: Монтировать том
Отредактировать docker-compose.yml:
services:
userbot:
# ... остальная конфигурация ...
volumes:
- ./app/sessions:/app/app/sessions
- ./app:/app/app
Затем:
docker-compose up -d userbot
Вариант 3: Авторизовать внутри контейнера
# Запустить контейнер в интерактивном режиме
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 пайплайна можно создать скрипт:
#!/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!"
📊 Проверка статуса
Проверить авторизацию в контейнере
# Запустить проверку в контейнере
docker-compose exec userbot python3 init_telethon_session.py --verify
Просмотреть логи инициализации
# Логи UserBot
docker-compose logs userbot -f
# Логи основного бота (использует UserBot)
docker-compose logs bot -f
Проверить файлы сессии
# Список файлов
ls -la app/sessions/
# Размер файла (должен быть > 100 bytes)
stat app/sessions/userbot_session.session
🎯 Следующие шаги
После успешной авторизации:
- ✅ UserBot контейнер будет работать без ошибок
- ✅ Нажмите "🤖 UserBot" в меню бота
- ✅ Используйте "📥 Собрать группы" для сбора информации
- ✅ Используйте "👥 Собрать участников" для парсинга членов группы
💡 Дополнительно
Просмотр информации о сессии
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)}')
"
Удалить старую сессию
rm -rf app/sessions/
mkdir -p app/sessions
# Затем повторить инициализацию
python3 init_telethon_session.py
🆘 Техническая поддержка
Если возникают проблемы:
-
Проверьте файл
.env:grep -E "TELETHON|TELEGRAM_BOT" .env -
Проверьте логи скрипта:
python3 init_telethon_session.py 2>&1 | tee init.log -
Проверьте интернет-соединение и доступ к Telegram
-
Убедитесь что используется правильный номер телефона
Статус: ✅ Руководство готово
Последнее обновление: 2025-12-21