Files
TG_autoposter/TELETHON_AUTHORIZATION_GUIDE.md
Andrew K. Choi 5a00e161e6 🔐 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.
2025-12-21 12:12:22 +09:00

284 lines
7.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🔐 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