From bd0c14c8f0d6a6508c1cad73ee1653c54f6d2c87 Mon Sep 17 00:00:00 2001 From: dddennnisss Date: Sat, 22 Aug 2026 14:48:55 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=BE=D1=82=D0=BE:=20pending=20=E2=80=94?= =?UTF-8?q?=20=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D1=82=D1=83=D1=81=20(=D0=B1=D0=B5=D0=B7=20=C2=AB=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=D1=88=D0=BB=D0=B8=D1=82=D0=B5=20=D1=84=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=C2=BB,=20=D0=B1=D0=B5=D0=B7=20=D0=BD=D0=BE=D0=BC=D0=B5=D1=80?= =?UTF-8?q?=D0=B0);=20=D1=82=D0=B5=D1=81=D1=82-=D0=BF=D1=80=D0=B8=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=82=D0=B2=D0=B8=D0=B5=20=D0=B1=D0=B5=D0=B7?= =?UTF-8?q?=20=D0=B1=D0=BB=D0=BE=D0=BA=D0=B0=20=D0=BC=D0=BE=D0=B4=D0=B5?= =?UTF-8?q?=D1=80=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__pycache__/handlers.cpython-313.pyc | Bin 27084 -> 26686 bytes photo_bot/handlers.py | 28 +++------ utils/__pycache__/texts.cpython-313.pyc | Bin 50333 -> 50142 bytes utils/texts.py | 53 +++++++++--------- 4 files changed, 35 insertions(+), 46 deletions(-) diff --git a/photo_bot/__pycache__/handlers.cpython-313.pyc b/photo_bot/__pycache__/handlers.cpython-313.pyc index d4257dbfed3fd2ea8325076c6fddb139c3eab3b6..5448c31a38e5b0a91b2b2f27792bcd939fc864fa 100644 GIT binary patch delta 5963 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 MRF+E;OB(%u0hJmTkN^Mx delta 6537 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 X!}dV5dj~5`ztwu`yJ7}s#2Nn&eDJ|v delta 6510 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 L7p6`bZGHY9pvCDt diff --git a/utils/texts.py b/utils/texts.py index 98e6ddd..8a155bf 100644 --- a/utils/texts.py +++ b/utils/texts.py @@ -202,17 +202,24 @@ def sd_file_upload_error() -> str: # --- Private functions (Internal logic) --- -def _photo_welcome(emojis: dict, show_test: bool = False, info: str = None) -> str: +def _photo_welcome(emojis: dict, show_test: bool = False, info: str = None, pending: bool = False) -> str: """Входное сообщение фото-режима. info — необязательный блок о статусе - модерации (отказ/ожидание) — вставляется перед списком кнопок.""" - text = ( - f"🖼 Режим обновления фото профиля\n\n" - f"📸 Пришлите мне вашу фотографию.\n\n" - f"Бот автоматически найдёт лицо, покажет превью\n" - f"и отправит фото на публикацию в ваши корпоративные сервисы.\n\n" - ) - if info: - text += info + "\n\n" + модерации (отказ). pending=True — фото уже на модерации: без призыва + отправить фото, только статус.""" + text = f"🖼 Режим обновления фото профиля\n\n" + if pending: + text += ( + f"⏳ У вас уже есть фото на модерации.\n" + f"Ожидайте решения модератора.\n\n" + ) + else: + text += ( + f"📸 Пришлите мне вашу фотографию.\n\n" + f"Бот автоматически найдёт лицо, покажет превью\n" + f"и отправит фото на публикацию в ваши корпоративные сервисы.\n\n" + ) + if info: + text += info + "\n\n" if show_test: text += f"{emojis['1']} — тест проверка фото\n" return text + f"{emojis['0']} — В главное меню" @@ -249,13 +256,6 @@ def _photo_ai_processing(emojis: dict) -> str: "Пожалуйста, не закрывайте чат и подождите..." ) -def _photo_moderation_pending(photo_id: str, emojis: dict) -> str: - return ( - f"⏳ У вас уже есть фото на модерации.\n\n" - f"Ожидайте решения модератора.\n\n" - f"{emojis['0']} — В главное меню" - ) - def _photo_status_info(status: dict = None, emojis: dict = None) -> str | None: """Блок о статусе модерации для входного сообщения. Универсальный для всех случаев: rejected → причина отказа, pending → ожидание, прочее → пусто.""" @@ -270,10 +270,8 @@ def _photo_status_info(status: dict = None, emojis: dict = None) -> str | None: f"Пожалуйста, отправьте новое фото." ) if ms == "pending": - photo_id = status.get("photo_id") - num = f" (№ {photo_id})" if photo_id not in (None, "", "???") else "" return ( - f"⏳ У вас уже есть фото на модерации{num}.\n" + f"⏳ У вас уже есть фото на модерации.\n" f"Ожидайте решения модератора." ) return None @@ -284,7 +282,7 @@ def _photo_test_welcome(emojis: dict, photo_id: str = None) -> str: text = ( f"🧪 Тестовый режим фото-проверки\n\n" f"📸 Пришлите фотографию — она уйдёт напрямую в ИИ.\n" - f"Бот покажет вердикт ИИ. Фото никуда не публикуется.\n" + f"Бот покажет вердикт ИИ. Фото никуда не публикуется." ) if photo_id: text += ( @@ -444,15 +442,16 @@ def photo_error_already_pending() -> str: def photo_cancel_text() -> str: return _photo_cancel(EMOJI_DIGITS) -def photo_moderation_pending(photo_id: str) -> str: - return _photo_moderation_pending(photo_id, EMOJI_DIGITS) - def photo_welcome_with_status(status: dict = None, show_test: bool = False) -> str: - """Универсальное входное сообщение фото-режима: меню + статус модерации, - если он требует внимания (отказ с причиной). + """Универсальное входное сообщение фото-режима: меню + статус модерации. + pending — только статус (без призыва отправить фото); show_test — добавить кнопку тест-проверки (PHOTO_TEST_MODE).""" info = _photo_status_info(status, EMOJI_DIGITS) - return _photo_welcome(EMOJI_DIGITS, show_test=show_test, info=info) + pending = bool( + status and status.get("status") == "ok" + and status.get("moderation_status") == "pending" + ) + return _photo_welcome(EMOJI_DIGITS, show_test=show_test, info=info, pending=pending) PHOTO_TEST_WELCOME_TEXT = _photo_test_welcome(EMOJI_DIGITS)