diff --git a/bot.py b/bot.py index 3dfda4e..9f3296c 100644 --- a/bot.py +++ b/bot.py @@ -161,6 +161,14 @@ def detect_video_source(url: str) -> str: return 'unknown' +def extract_urls_from_text(text: str) -> list[str]: + """Извлекает все URL из текста сообщения""" + # Регулярное выражение для поиска URL (http/https) + url_pattern = r'https?://[^\s<>"{}|\\^`\[\]]+' + urls = re.findall(url_pattern, text) + return urls + + def _safe_filename(title: str, chat_id: int) -> str: """Создает безопасное имя файла""" safe_title = re.sub(r'[<>:"/\\|?*]', '', title)[:100] @@ -642,16 +650,20 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE): if not update.message or not update.message.text: return - url = update.message.text.strip() + text = update.message.text.strip() chat_id = update.message.chat_id + chat_type = update.message.chat.type # 'private', 'group', 'supergroup' username = update.message.from_user.username if update.message.from_user else None first_name = update.message.from_user.first_name if update.message.from_user else None # Добавляем пользователя в статистику при первом взаимодействии add_user(chat_id, username, first_name) - # Проверяем, является ли сообщение URL - if not (url.startswith('http://') or url.startswith('https://')): + # Извлекаем все URL из текста + urls = extract_urls_from_text(text) + + # Если это личный чат и нет ссылок, отправляем инструкцию + if not urls and chat_type == 'private': await update.message.reply_text( "Пожалуйста, отправьте ссылку на видео.\n" "Поддерживаемые источники:\n" @@ -662,10 +674,19 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE): ) return + # Если нет ссылок в группе, просто игнорируем сообщение + if not urls: + return + + # Обрабатываем первую найденную ссылку + url = urls[0] + # Проверяем источник до начала обработки source = detect_video_source(url) if source == 'unknown': - await update.message.reply_text("Пардон, не умеем работать с этим источником 😅") + # В группах не отвечаем на неподдерживаемые источники, чтобы не спамить + if chat_type == 'private': + await update.message.reply_text("Пардон, не умеем работать с этим источником 😅") return # Отправляем сообщение о начале обработки @@ -698,13 +719,14 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE): except Exception as e: logger.warning(f"Не удалось удалить файл {video_path}: {e}") - # Удаляем сообщение со ссылкой и статусное сообщение + # Удаляем статусное сообщение и исходное сообщение со ссылкой try: await status_message.delete() await update.message.delete() - logger.info(f"Удалено сообщение пользователя с ссылкой (chat_id: {chat_id})") + logger.info(f"Удалено сообщение пользователя с ссылкой (chat_id: {chat_id}, тип чата: {chat_type})") except Exception as e: logger.warning(f"Не удалось удалить сообщение: {e}") + # Если не удалось удалить (нет прав), просто логируем except Exception as e: logger.error(f"Ошибка: {e}") diff --git a/instagram_cookies.txt b/instagram_cookies.txt index 1fdc375..45ed93b 100644 --- a/instagram_cookies.txt +++ b/instagram_cookies.txt @@ -39,13 +39,13 @@ rusoska.com FALSE / FALSE 1799795493 userToken a01e24c3-c94f-4a4e-b11b-751b72046 .mozilla.org TRUE / FALSE 1799925684 _ga_B9CY1C9VBC GS2.1.s1765365263$o1$g1$t1765365684$j60$l0$h0 .mozilla.org TRUE / FALSE 1799925263 _ga GA1.2.1451822324.1765365263 .mozilla.org TRUE / FALSE 1765451663 _gid GA1.2.878207985.1765365263 -.instagram.com TRUE / TRUE 1799935932 csrftoken CnChQ6nTz8cfm_U7q2ur9w +.instagram.com TRUE / TRUE 1799947196 csrftoken CnChQ6nTz8cfm_U7q2ur9w .instagram.com TRUE / TRUE 1799925292 datr LFY5aVDEvvzQRTypNm_NZ0d3 .instagram.com TRUE / TRUE 1796901312 ig_did B0879634-89D6-4098-9B3E-958B6BC00183 .instagram.com TRUE / TRUE 1765970112 dpr 2 .instagram.com TRUE / TRUE 1799925293 mid aTlWLAAEAAEBRoS_PfrA_i5UP0w1 .instagram.com TRUE / TRUE 1765980504 wd 1920x944 .instagram.com TRUE / TRUE 1796911697 sessionid 42059678244%3AD0GdfKmaFZWqXp%3A10%3AAYieDJrvoWIE9WW--tzjgv-3EyrgI9XT6seopSdHFw -.instagram.com TRUE / TRUE 1773151932 ds_user_id 42059678244 -.instagram.com TRUE / TRUE 0 rur "LDC\05442059678244\0541796911932:01feaf3a1d94de6f430d478c289ec8b241abf721f3d191e72eea94a60882687dc94b618a" +.instagram.com TRUE / TRUE 1773163196 ds_user_id 42059678244 +.instagram.com TRUE / TRUE 0 rur "LDC\05442059678244\0541796923196:01fea3f1fb8a6a9f2cc556e3847d913f9a142263fa428807624c02963fddee2a5d36b728" addons.mozilla.org FALSE / TRUE 0 taarId 4dffa50e49cca797bb48f2f4f11803c251746ad45af1fef3ba1ad37379a24fea