Фото: входное сообщение универсальное (меню + статус модерации одним сообщением)

This commit is contained in:
dddennnisss
2026-08-21 22:08:34 +07:00
parent 0b2364d79f
commit 1c2d018be4
4 changed files with 43 additions and 21 deletions
+29 -9
View File
@@ -202,13 +202,17 @@ def sd_file_upload_error() -> str:
# --- Private functions (Internal logic) ---
def _photo_welcome(emojis: dict, show_test: bool = False) -> str:
def _photo_welcome(emojis: dict, show_test: bool = False, info: str = None) -> str:
"""Входное сообщение фото-режима. info — необязательный блок о статусе
модерации (отказ/ожидание) — вставляется перед списком кнопок."""
text = (
f"🖼 <b>Режим обновления фото профиля</b>\n\n"
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']}В главное меню"
@@ -245,12 +249,25 @@ def _photo_moderation_pending(photo_id: str, emojis: dict) -> str:
f"{emojis['0']}В главное меню"
)
def _photo_rejected_notice(reason: str, emojis: dict) -> str:
return (
f"⚠️ <b>Ваше предыдущее фото было отклонено.</b>\n\n"
f"📝 Причина: {reason}\n\n"
f"Пожалуйста, отправьте новое фото."
)
def _photo_status_info(status: dict = None, emojis: dict = None) -> str | None:
"""Блок о статусе модерации для входного сообщения. Универсальный для всех
случаев: rejected → причина отказа, pending → ожидание, прочее → пусто."""
if not status or status.get("status") != "ok":
return None
ms = status.get("moderation_status")
if ms == "rejected":
reason = (status.get("rejection_reason") or "Причина не указана.").strip()
return (
f"⚠️ <b>Ваше предыдущее фото было отклонено.</b>\n"
f"📝 Причина: {reason}\n\n"
f"Пожалуйста, отправьте новое фото."
)
if ms == "pending":
return (
f"⏳ <b>У вас уже есть фото на модерации.</b>\n"
f"Ожидайте решения модератора."
)
return None
def _photo_test_welcome(emojis: dict) -> str:
return (
@@ -378,8 +395,11 @@ def photo_cancel_text() -> str:
def photo_moderation_pending(photo_id: str) -> str:
return _photo_moderation_pending(photo_id, EMOJI_DIGITS)
def photo_rejected_notice(reason: str) -> str:
return _photo_rejected_notice(reason, EMOJI_DIGITS)
def photo_welcome_with_status(status: dict = None) -> str:
"""Универсальное входное сообщение фото-режима: меню + статус модерации,
если он требует внимания (отказ с причиной)."""
info = _photo_status_info(status, EMOJI_DIGITS)
return _photo_welcome(EMOJI_DIGITS, info=info)
PHOTO_TEST_WELCOME_TEXT = _photo_test_welcome(EMOJI_DIGITS)
PHOTO_TEST_PREVIEW_TEXT = _photo_test_preview(EMOJI_DIGITS)