- Создан полнофункциональный Telegram бот для поиска фильмов и торрентов - Бот дублирует всю функциональность веб-интерфейса - Реализован поиск фильмов через TMDB API с постерами - Добавлен поиск торрентов на всех трекерах (RuTracker, Kinozal, RuTor, NoNameClub) - Автоматическое добавление торрентов в qBittorrent - Интерактивные кнопки для выбора фильмов и торрентов - Обработка ошибок и пользовательских состояний - Docker контейнеризация с правильной сетевой конфигурацией - Увеличен таймаут HTTP запросов до 60 секунд - Добавлена документация и скрипты запуска Команды бота: - /start, /help - справка - /find - начать поиск фильма Файлы: - telegram_bot.py - основной код бота - run_telegram_bot.py - скрипт запуска - Dockerfile.telegram - Docker образ для бота - docker-compose.yml - обновлен с сервисом бота - requirements.txt - добавлена зависимость python-telegram-bot - README.md - обновлена документация - PROJECT_SUMMARY.md - полная сводка проекта
76 lines
2.6 KiB
Python
76 lines
2.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Скрипт для тестирования Telegram бота локально
|
|
"""
|
|
|
|
import asyncio
|
|
import httpx
|
|
import logging
|
|
from telegram_bot import MovieSearchBot
|
|
|
|
# Настройка логирования
|
|
logging.basicConfig(
|
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
|
level=logging.INFO
|
|
)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
async def test_api_connection():
|
|
"""Тестирование подключения к API"""
|
|
try:
|
|
# Тестируем подключение к основному API
|
|
async with httpx.AsyncClient() as client:
|
|
response = await client.get("http://localhost:8089/api/search/terminator")
|
|
if response.status_code == 200:
|
|
logger.info("✅ Main API connection successful")
|
|
return True
|
|
else:
|
|
logger.error(f"❌ Main API error: {response.status_code}")
|
|
return False
|
|
except Exception as e:
|
|
logger.error(f"❌ API connection failed: {e}")
|
|
return False
|
|
|
|
async def test_tmdb_connection():
|
|
"""Тестирование подключения к TMDB"""
|
|
try:
|
|
async with httpx.AsyncClient() as client:
|
|
response = await client.get(
|
|
"https://api.themoviedb.org/3/search/movie",
|
|
params={
|
|
"api_key": "6d58225585fb77af5945a964de41849f",
|
|
"query": "terminator",
|
|
"language": "ru-RU"
|
|
}
|
|
)
|
|
if response.status_code == 200:
|
|
logger.info("✅ TMDB API connection successful")
|
|
return True
|
|
else:
|
|
logger.error(f"❌ TMDB API error: {response.status_code}")
|
|
return False
|
|
except Exception as e:
|
|
logger.error(f"❌ TMDB connection failed: {e}")
|
|
return False
|
|
|
|
async def main():
|
|
"""Главная функция тестирования"""
|
|
logger.info("🧪 Testing Telegram Bot components...")
|
|
|
|
# Тестируем подключения
|
|
api_ok = await test_api_connection()
|
|
tmdb_ok = await test_tmdb_connection()
|
|
|
|
if api_ok and tmdb_ok:
|
|
logger.info("✅ All tests passed! Bot should work correctly.")
|
|
logger.info("🚀 Starting Telegram Bot...")
|
|
|
|
# Запускаем бота
|
|
bot = MovieSearchBot()
|
|
await bot.run()
|
|
else:
|
|
logger.error("❌ Some tests failed. Please check your setup.")
|
|
logger.error("Make sure the main application is running on port 8089")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|