227 lines
8.2 KiB
Markdown
227 lines
8.2 KiB
Markdown
|
|
# 🤖 Telegram Bot для поиска и загрузки фильмов
|
|||
|
|
|
|||
|
|
## 📋 Описание
|
|||
|
|
|
|||
|
|
Telegram бот полностью дублирует функциональность веб-интерфейса для поиска и загрузки фильмов через торренты. Бот интегрирован с существующими API endpoints и предоставляет удобный интерфейс для работы в Telegram.
|
|||
|
|
|
|||
|
|
## 🎯 Функциональность
|
|||
|
|
|
|||
|
|
### Основные команды:
|
|||
|
|
- `/start` - Запуск бота и приветствие
|
|||
|
|
- `/help` - Справка по использованию
|
|||
|
|
- `/find` - Начать поиск фильма
|
|||
|
|
|
|||
|
|
### Процесс работы:
|
|||
|
|
1. **Поиск фильма** - пользователь вводит название фильма
|
|||
|
|
2. **Выбор фильма** - из результатов поиска выбирается нужный фильм с постером
|
|||
|
|
3. **Поиск торрентов** - система ищет доступные торренты на всех трекерах
|
|||
|
|
4. **Выбор торрента** - пользователь выбирает нужный торрент из списка
|
|||
|
|
5. **Автоматическое добавление** - торрент автоматически добавляется в qBittorrent
|
|||
|
|
|
|||
|
|
## 🚀 Установка и запуск
|
|||
|
|
|
|||
|
|
### 1. Локальный запуск (для тестирования)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Установка зависимостей
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
|
|||
|
|
# Запуск основного приложения (в отдельном терминале)
|
|||
|
|
python app.py
|
|||
|
|
|
|||
|
|
# Запуск Telegram бота
|
|||
|
|
python run_telegram_bot.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. Запуск через Docker
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Запуск всех сервисов включая Telegram бота
|
|||
|
|
docker compose up -d --build
|
|||
|
|
|
|||
|
|
# Проверка статуса
|
|||
|
|
docker ps
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Проверка работы
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Тестирование бота
|
|||
|
|
python test_telegram_bot.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## ⚙️ Конфигурация
|
|||
|
|
|
|||
|
|
### Переменные окружения:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Telegram Bot Token (уже настроен)
|
|||
|
|
TELEGRAM_BOT_TOKEN=7662650066:AAFgsfYJNYgpcSHaSe6fspsjqmhMkOBT1s4
|
|||
|
|
|
|||
|
|
# TMDB API
|
|||
|
|
TMDB_API_KEY=6d58225585fb77af5945a964de41849f
|
|||
|
|
|
|||
|
|
# Torrent APIs
|
|||
|
|
TORRENT_SEARCH_URL=http://localhost:8443
|
|||
|
|
TORRENT_ADD_URL=http://localhost:8088
|
|||
|
|
|
|||
|
|
# qBittorrent
|
|||
|
|
QBITTORRENT_HOST=localhost
|
|||
|
|
QBITTORRENT_PORT=8080
|
|||
|
|
QBITTORRENT_USERNAME=admin
|
|||
|
|
QBITTORRENT_PASSWORD=vrubel07
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎬 Использование
|
|||
|
|
|
|||
|
|
### 1. Начало работы
|
|||
|
|
- Найдите бота в Telegram: `@your_bot_username`
|
|||
|
|
- Отправьте команду `/start`
|
|||
|
|
- Следуйте инструкциям бота
|
|||
|
|
|
|||
|
|
### 2. Поиск фильма
|
|||
|
|
- Отправьте команду `/find` или просто введите название фильма
|
|||
|
|
- Выберите нужный фильм из списка результатов
|
|||
|
|
- Просмотрите информацию о фильме с постером
|
|||
|
|
|
|||
|
|
### 3. Поиск торрентов
|
|||
|
|
- Нажмите кнопку "🔍 Найти торренты"
|
|||
|
|
- Дождитесь результатов поиска
|
|||
|
|
- Выберите нужный торрент из списка
|
|||
|
|
|
|||
|
|
### 4. Скачивание
|
|||
|
|
- Нажмите на нужный торрент
|
|||
|
|
- Торрент автоматически добавится в qBittorrent
|
|||
|
|
- Получите уведомление о начале загрузки
|
|||
|
|
|
|||
|
|
## 🔧 Технические детали
|
|||
|
|
|
|||
|
|
### Архитектура:
|
|||
|
|
- **Telegram Bot API** - для взаимодействия с пользователями
|
|||
|
|
- **FastAPI** - основной веб-сервис с API endpoints
|
|||
|
|
- **TMDB API** - поиск информации о фильмах
|
|||
|
|
- **TorAPI** - поиск торрентов на трекерах
|
|||
|
|
- **qBittorrent** - клиент для загрузки торрентов
|
|||
|
|
|
|||
|
|
### Файлы проекта:
|
|||
|
|
- `telegram_bot.py` - основной код бота
|
|||
|
|
- `run_telegram_bot.py` - скрипт запуска
|
|||
|
|
- `test_telegram_bot.py` - тестирование
|
|||
|
|
- `Dockerfile.telegram` - Docker образ для бота
|
|||
|
|
- `docker-compose.yml` - конфигурация Docker Compose
|
|||
|
|
|
|||
|
|
### Состояния пользователя:
|
|||
|
|
- `waiting_movie_title` - ожидание названия фильма
|
|||
|
|
- `movie_selected` - фильм выбран, ожидание действий
|
|||
|
|
- `None` - свободное состояние
|
|||
|
|
|
|||
|
|
## 🛠️ Устранение неполадок
|
|||
|
|
|
|||
|
|
### Проблема: Бот не отвечает
|
|||
|
|
**Решение:**
|
|||
|
|
1. Проверьте, что основное приложение запущено на порту 8089
|
|||
|
|
2. Убедитесь, что все Docker контейнеры работают
|
|||
|
|
3. Проверьте логи: `docker logs telegram-bot`
|
|||
|
|
|
|||
|
|
### Проблема: Не работает поиск фильмов
|
|||
|
|
**Решение:**
|
|||
|
|
1. Проверьте подключение к TMDB API
|
|||
|
|
2. Убедитесь, что API ключ правильный
|
|||
|
|
3. Проверьте интернет-соединение
|
|||
|
|
|
|||
|
|
### Проблема: Не работает поиск торрентов
|
|||
|
|
**Решение:**
|
|||
|
|
1. Проверьте, что TorAPI контейнеры запущены
|
|||
|
|
2. Убедитесь, что основное приложение доступно
|
|||
|
|
3. Проверьте логи: `docker logs movie-search`
|
|||
|
|
|
|||
|
|
### Проблема: Торренты не добавляются в qBittorrent
|
|||
|
|
**Решение:**
|
|||
|
|
1. Проверьте, что qBittorrent запущен
|
|||
|
|
2. Убедитесь, что учетные данные правильные
|
|||
|
|
3. Проверьте доступность qBittorrent API
|
|||
|
|
|
|||
|
|
## 📊 Мониторинг
|
|||
|
|
|
|||
|
|
### Проверка статуса:
|
|||
|
|
```bash
|
|||
|
|
# Все контейнеры
|
|||
|
|
docker ps
|
|||
|
|
|
|||
|
|
# Логи бота
|
|||
|
|
docker logs telegram-bot --tail 50
|
|||
|
|
|
|||
|
|
# Логи основного приложения
|
|||
|
|
docker logs movie-search --tail 50
|
|||
|
|
|
|||
|
|
# Статус qBittorrent
|
|||
|
|
sudo systemctl status qbittorrent
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Тестирование API:
|
|||
|
|
```bash
|
|||
|
|
# Тест основного API
|
|||
|
|
curl http://localhost:8089/api/search/terminator
|
|||
|
|
|
|||
|
|
# Тест TMDB
|
|||
|
|
curl "https://api.themoviedb.org/3/search/movie?api_key=6d58225585fb77af5945a964de41849f&query=terminator"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔒 Безопасность
|
|||
|
|
|
|||
|
|
### Рекомендации:
|
|||
|
|
1. Не публикуйте токен бота в открытом доступе
|
|||
|
|
2. Используйте переменные окружения для конфиденциальных данных
|
|||
|
|
3. Регулярно обновляйте зависимости
|
|||
|
|
4. Мониторьте использование бота
|
|||
|
|
|
|||
|
|
## 📈 Производительность
|
|||
|
|
|
|||
|
|
### Оптимизация:
|
|||
|
|
1. Ограничьте количество одновременных пользователей
|
|||
|
|
2. Используйте кэширование для часто запрашиваемых данных
|
|||
|
|
3. Мониторьте использование ресурсов
|
|||
|
|
4. Настройте лимиты для API запросов
|
|||
|
|
|
|||
|
|
## 🆘 Поддержка
|
|||
|
|
|
|||
|
|
При возникновении проблем:
|
|||
|
|
1. Проверьте логи всех сервисов
|
|||
|
|
2. Убедитесь, что все порты доступны
|
|||
|
|
3. Проверьте настройки сети
|
|||
|
|
4. Создайте issue в репозитории проекта
|
|||
|
|
|
|||
|
|
## ✅ Статус
|
|||
|
|
|
|||
|
|
**🟢 TELEGRAM BOT ПОЛНОСТЬЮ ФУНКЦИОНАЛЕН**
|
|||
|
|
|
|||
|
|
- ✅ Поиск фильмов работает
|
|||
|
|
- ✅ Отображение постеров работает
|
|||
|
|
- ✅ Поиск торрентов работает
|
|||
|
|
- ✅ Добавление в qBittorrent работает
|
|||
|
|
- ✅ Интерактивные кнопки работают
|
|||
|
|
- ✅ Обработка ошибок работает
|
|||
|
|
- ✅ Docker контейнеризация работает
|
|||
|
|
|
|||
|
|
## 🚀 Быстрый старт
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. Запуск всех сервисов
|
|||
|
|
docker compose up -d --build
|
|||
|
|
|
|||
|
|
# 2. Проверка статуса
|
|||
|
|
docker ps
|
|||
|
|
|
|||
|
|
# 3. Тестирование
|
|||
|
|
python test_telegram_bot.py
|
|||
|
|
|
|||
|
|
# 4. Использование
|
|||
|
|
# Найдите бота в Telegram и отправьте /start
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Версия**: 1.0
|
|||
|
|
**Дата**: 2025-01-06
|
|||
|
|
**Автор**: AI Assistant
|