🔐 Add Telethon session initialization tools and authorization guide

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.
This commit is contained in:
2025-12-21 12:12:22 +09:00
parent c9f94b8544
commit 5a00e161e6
6 changed files with 812 additions and 0 deletions

View File

@@ -0,0 +1,283 @@
# 🔐 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