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.
284 lines
7.2 KiB
Markdown
284 lines
7.2 KiB
Markdown
# 🔐 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
|