🔐 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:
283
TELETHON_AUTHORIZATION_GUIDE.md
Normal file
283
TELETHON_AUTHORIZATION_GUIDE.md
Normal 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
|
||||
Reference in New Issue
Block a user