From 859ac42a77b47621268f2ee2229c38da8591e1ef Mon Sep 17 00:00:00 2001 From: dddennnisss Date: Sat, 22 Aug 2026 15:24:42 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=BE=D1=82=D0=BE:=20=D0=BD=D0=B5=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=BD=D0=B0=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD?= =?UTF-8?q?=D0=B4=D0=B0=20=E2=80=94=20=D0=B3=D0=BB=D0=BE=D0=B1=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=BE=D0=B5=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8;=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82-=D1=80=D0=B5=D0=B6=D0=B8=D0=BC:=20?= =?UTF-8?q?=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B0=209=20=C2=AB=D0=9D=D0=B0?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__pycache__/handlers.cpython-313.pyc | Bin 26686 -> 27608 bytes photo_bot/handlers.py | 44 ++++++++++++------ utils/__pycache__/texts.cpython-313.pyc | Bin 50142 -> 49197 bytes utils/texts.py | 34 ++++---------- 4 files changed, 41 insertions(+), 37 deletions(-) diff --git a/photo_bot/__pycache__/handlers.cpython-313.pyc b/photo_bot/__pycache__/handlers.cpython-313.pyc index 5448c31a38e5b0a91b2b2f27792bcd939fc864fa..ac65d449104b06ce0e7ca1051f383dc361a7a980 100644 GIT binary patch delta 7745 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�k(VJ%Bc|S9&S-iHutN2|Lihc{`X- z!7y(t`)LbHvG!at^DgTwl5TdP5D@S1e!dGb_ow<-TGCAusop)Ag78#BE>htD_p0``jx%BoLKv zfz44e%YAJtedkIKf#Z}3W|?C|0w-VTm0FJLlrM8e3&(k&uLXL&a+z}~M7%*Xg!2GS z=>>xp;41P9 zMEE`dr0P7)2=!#_1dvj9@1L7on2q!b+4zHf{U!NG_6c(%_<+zpc4PlkvS>tsvQG?s S$dLX+IU~#cKt_gC>Hh+*H<~N} delta 6655 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 Z`44d@>$`nd8S=i$GBU#z85vUT{|%XKk~aVV diff --git a/photo_bot/handlers.py b/photo_bot/handlers.py index dc90c5e..551e435 100644 --- a/photo_bot/handlers.py +++ b/photo_bot/handlers.py @@ -30,7 +30,6 @@ from utils.texts import ( photo_cancel_text, photo_preview_ready, photo_welcome_with_status, - photo_invalid_cmd, photo_test_welcome, PHOTO_TEST_WELCOME_TEXT, PHOTO_TEST_PREVIEW_TEXT, @@ -224,6 +223,25 @@ async def photo_module_handler(msg: Message): cmd = raw_num break + # --- ТЕСТ-ПОД-РЕЖИМ: 9 = назад в меню фото (не выход из модуля) --- + if in_test_submode(user_id) and cmd == "9" and not is_attachment: + test_submode_users.discard(user_id) + log_menu_stats(user_id, "Photo Bot (TEST)", "Назад из тест-под-режима") + # Висящее тест-фото снимаем (тест-режим: оно никуда не публиковалось) + if user_id in pending_photos: + photo_data = pending_photos[user_id] + if os.path.exists(photo_data['path']): + os.remove(photo_data['path']) + if 'preview_path' in photo_data and os.path.exists(photo_data['preview_path']): + os.remove(photo_data['preview_path']) + del pending_photos[user_id] + status = await check_moderation_status(user_id) + await msg.answer( + photo_welcome_with_status(status, show_test=config.PHOTO_TEST_MODE), + parse_mode="html" + ) + return + # --- ВЫХОД (Кнопки 0 и 9 возвращают в общее меню с очисткой кэша) --- if cmd in ["0", "9", "/start", "меню"]: log_menu_stats(user_id, "Photo Bot", "Выход в главное меню") @@ -250,14 +268,14 @@ async def photo_module_handler(msg: Message): and status.get("moderation_status") == "pending" ) if still_pending: - if config.PHOTO_TEST_MODE and (cmd == "1" or in_test_submode(user_id)): - # Вход в тест-под-режим (кнопка 1) / повтор его сообщения + if config.PHOTO_TEST_MODE and cmd == "1": + # Кнопка 1 — вход в тест-под-режим (можно отправить фото в ИИ) test_submode_users.add(user_id) log_menu_stats(user_id, "Photo Bot (TEST)", "Тест-под-режим (фото на модерации)") - await msg.answer(photo_test_welcome(), parse_mode="html") + await msg.answer(PHOTO_TEST_WELCOME_TEXT, parse_mode="html") else: - # стандартная ошибка: кнопок, кроме 0 (и 1 в тест-режиме), нет - await msg.answer(photo_invalid_cmd(), parse_mode="html") + # Неверная команда → глобальное сообщение + await msg.answer(system_error_text(EMOJI_DIGITS), parse_mode="html") return # Статус изменился (одобрено/отклонено) — разблокируем was_in_test = in_test_submode(user_id) @@ -286,11 +304,6 @@ async def photo_module_handler(msg: Message): # Ошибка проверки — не блокируем, просто логируем logger.warning(f"Не удалось проверить статус модерации для {user_id}: {status.get('reason')}") - # --- ТЕСТ-ПОД-РЕЖИМ: нет висящего фото — на любой текст повторяем тест-приветствие --- - if not is_attachment and user_id not in pending_photos and in_test_submode(user_id): - await msg.answer(PHOTO_TEST_WELCOME_TEXT, parse_mode="html") - return - # --- ВХОД В ТЕСТ-ПОД-РЕЖИМ: кнопка 1 в меню фото-режима (тест включен) --- if (not is_attachment and user_id not in pending_photos and not in_test_submode(user_id) @@ -350,9 +363,9 @@ async def photo_module_handler(msg: Message): await msg.answer(PHOTO_TEST_WELCOME_TEXT, parse_mode="html") return - # --- Защита от мусорного ввода при висящем превью (тестовый мод) --- + # --- Неверная команда при висящем превью → глобальное сообщение --- else: - await msg.answer(PHOTO_TEST_PREVIEW_TEXT, parse_mode="html") + await msg.answer(system_error_text(EMOJI_DIGITS), parse_mode="html") return # --- ПОДТВЕРЖДЕНИЕ ОТПРАВКИ (Кнопка 1) --- @@ -421,6 +434,11 @@ async def photo_module_handler(msg: Message): await msg.answer(system_error_text(EMOJI_DIGITS), parse_mode="html") return + # --- НЕВЕРНАЯ КОМАНДА (висящего фото нет) → глобальное сообщение --- + if not is_attachment: + await msg.answer(system_error_text(EMOJI_DIGITS), parse_mode="html") + return + # --- ПРИЕМ НОВОГО ФОТО --- if is_attachment: file_id = getattr(msg.content, "file_id", None) diff --git a/utils/__pycache__/texts.cpython-313.pyc b/utils/__pycache__/texts.cpython-313.pyc index db617160e7461b3358da326cbc9a375d701272a3..f22aab0667263d3489f699e081fefaef07a7f703 100644 GIT binary patch delta 5470 zcmZ{n3s_XwwSZ?2vq$6=MG$->f%phxfT}zaBZ}gaswkWhu^vGb1PlV%1EL9Gz_*AB zE(AqHd?aerXgJ0iV~jOT>zAfCkleQU_;RhWNqSS8mRe2Hn>4v=Ek-%mmXBGp_P^HN z`<%VkUTe?wEncUqyaN92@9$&5zjyU*s~$g49}p_iUw!SLYiu{znBr2nXob($97#y7KS3)wu~BBY{ZyvO z>sj{7BI4$^v}uabGLw^wNj8&G-QTmTWlWbdU2~t7GhJcoy_QLiiL7IiYa-7faof~N z6MCMV@=TE1v#t&W}6 zn!439S*PtzyW5i(%u>%x`x?5vCkcS){*SsFbfN8$=n!Dh8c}cZ=zC*i6s433ZQp

6FJ0WlZhN= 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 F{tt!?m52ZU diff --git a/utils/texts.py b/utils/texts.py index 8a155bf..2c094e7 100644 --- a/utils/texts.py +++ b/utils/texts.py @@ -232,13 +232,6 @@ def _photo_unknown(emojis: dict) -> str: f"{emojis['0']} — В главное меню" ) -def _photo_invalid_cmd(emojis: dict) -> str: - return ( - f"⚠️ Неверный выбор пункта меню.\n" - f"Пожалуйста, используйте кнопки из сообщения выше.\n\n" - f"{emojis['0']} — В главное меню" - ) - def _photo_processing_face(emojis: dict) -> str: return "⏳ Ищу лицо на фото, пожалуйста, подождите..." @@ -276,20 +269,15 @@ def _photo_status_info(status: dict = None, emojis: dict = None) -> str | None: ) return None -def _photo_test_welcome(emojis: dict, photo_id: str = None) -> str: - """Тест-приветствие. photo_id — если у пользователя ещё есть фото - на модерации (тестовая проверка его не затрагивает).""" - text = ( +def _photo_test_welcome(emojis: dict) -> str: + """Тест-приветствие: фото уйдёт напрямую в ИИ, никуда не публикуется.""" + return ( f"🧪 Тестовый режим фото-проверки\n\n" f"📸 Пришлите фотографию — она уйдёт напрямую в ИИ.\n" - f"Бот покажет вердикт ИИ. Фото никуда не публикуется." + f"Бот покажет вердикт ИИ. Фото никуда не публикуется.\n\n" + f"{emojis['9']} — Назад\n" + f"{emojis['0']} — В главное меню" ) - if photo_id: - text += ( - f"\n⏳ У вас уже есть фото на модерации (№ {photo_id}).\n" - f"Ожидайте решения модератора. Тестовая проверка его не затрагивает.\n" - ) - return text + f"\n\n{emojis['0']} — В главное меню" def _photo_test_preview(emojis: dict) -> str: return ( @@ -297,6 +285,7 @@ def _photo_test_preview(emojis: dict) -> str: f"Кадр получен. Фото никуда не публикуется.\n\n" f"{emojis['1']} — отправлю фото напрямую в ИИ\n" f"{emojis['2']} — Загрузить другое фото\n" + f"{emojis['9']} — Назад\n" f"{emojis['0']} — В главное меню" ) @@ -414,9 +403,6 @@ PHOTO_MAIN_MENU_TEXT = _photo_welcome(EMOJI_DIGITS) PHOTO_TEST_ENTRY_TEXT = _photo_welcome(EMOJI_DIGITS, show_test=True) PHOTO_UNKNOWN_CMD_TEXT = _photo_unknown(EMOJI_DIGITS) -def photo_invalid_cmd() -> str: - return _photo_invalid_cmd(EMOJI_DIGITS) - def photo_error_handling() -> str: return system_error_text(EMOJI_DIGITS, show_back=False) @@ -455,9 +441,9 @@ def photo_welcome_with_status(status: dict = None, show_test: bool = False) -> s PHOTO_TEST_WELCOME_TEXT = _photo_test_welcome(EMOJI_DIGITS) -def photo_test_welcome(photo_id: str = None) -> str: - """Тест-приветствие; photo_id — если у пользователя ещё фото на модерации.""" - return _photo_test_welcome(EMOJI_DIGITS, photo_id) +def photo_test_welcome() -> str: + """Тест-приветствие (тест-под-режим фото-проверки).""" + return _photo_test_welcome(EMOJI_DIGITS) PHOTO_TEST_PREVIEW_TEXT = _photo_test_preview(EMOJI_DIGITS) PHOTO_TEST_AI_CHECKING_TEXT = _photo_test_ai_checking(EMOJI_DIGITS) PHOTO_TEST_RECEIVING_TEXT = _photo_test_receiving(EMOJI_DIGITS)