findFilms/app/test_telegram_bot.py

77 lines
2.6 KiB
Python
Raw Normal View History

Подключили Telegram бот с полной функциональностью - Создан полнофункциональный 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 - полная сводка проекта
2025-10-09 12:39:19 +03:00
#!/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())