import aiohttp from aiogram import types import config import logging import random import json logger = logging.getLogger(__name__) CAPTIONS = [ "Hot stuff 🔥", "Sexy content 😏" ] async def handle_nude_cmd(message: types.Message): args = message.text.split(maxsplit=1) if len(args) > 1 and args[1].strip() == "-h": help_msg = ( "🔥 Справка по команде /nude:\n\n" "Получает случайные изображения взрослых женщин из открытых источников.\n" "• Использует Pornhub API для поиска контента\n" "• По умолчанию ищет популярные видео с высоким рейтингом\n" "• Отправляет превью видео как изображение\n\n" "Пример: /nude\n" "По умолчанию: Популярный контент для взрослых" ) await message.reply(help_msg, parse_mode="HTML") return # Используем Pornhub API для поиска видео url = "https://www.pornhub.com/webmasters/search" params = { "category": "straight", "ordering": "mostviewed", "period": "week", "thumbsize": "medium" } headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" } try: async with aiohttp.ClientSession() as session: async with session.get(url, params=params, headers=headers) as resp: if resp.status != 200: logger.error(f"Pornhub API Error: {resp.status}") await message.reply("Не удалось получить контент от сервера :(") return # Pornhub API возвращает HTML, нужно парсить text = await resp.text() # Ищем URL превью в HTML import re thumb_pattern = r']+src="([^"]+)"[^>]+class="thumb"' matches = re.findall(thumb_pattern, text) if not matches: await message.reply("Не удалось найти контент :(") return # Берем случайное превью thumb_url = random.choice(matches) # Убедимся что URL полный if not thumb_url.startswith('http'): thumb_url = f"https://thumb.pornhub.com{thumb_url}" caption = random.choice(CAPTIONS) # Отправляем как фото try: input_file = types.URLInputFile(thumb_url) await message.answer_photo(photo=input_file, caption=caption) except Exception as e: logger.error(f"Error sending photo: {e}") await message.answer(f"{caption}\n{thumb_url}") except Exception as e: logger.exception("Error in nude command") await message.reply("Произошла ошибка при обращении к API :(")