Фото: входное сообщение универсальное (меню + статус модерации одним сообщением)
This commit is contained in:
Binary file not shown.
+14
-12
@@ -30,7 +30,7 @@ from utils.texts import (
|
||||
photo_cancel_text,
|
||||
photo_preview_ready,
|
||||
photo_moderation_pending,
|
||||
photo_rejected_notice,
|
||||
photo_welcome_with_status,
|
||||
PHOTO_TEST_ENTRY_TEXT,
|
||||
PHOTO_TEST_WELCOME_TEXT,
|
||||
PHOTO_TEST_PREVIEW_TEXT,
|
||||
@@ -158,14 +158,16 @@ async def check_moderation_status(user_id: str) -> dict:
|
||||
async def send_dynamic_photo_main_menu(msg: Message, user_id: str):
|
||||
"""Вход в раздел фото (паттерн ЛК): модуль сам запрашивает данные и показывает их.
|
||||
|
||||
- pending — показать инфо «фото на модерации» и НЕ вводить в модуль
|
||||
- pending — отдельное сообщение «фото на модерации», модуль НЕ открывается
|
||||
(кнопок загрузки фото нет);
|
||||
- rejected — показать причину отказа, кнопки остаются (новое фото);
|
||||
- иначе/ошибка API — штатный вход в модуль.
|
||||
- rejected — ОДНО сообщение: меню + причина отказа (кнопки на месте);
|
||||
- иначе/ошибка API — штатное меню входа.
|
||||
"""
|
||||
status = None
|
||||
if not config.PHOTO_TEST_MODE:
|
||||
status = await check_moderation_status(user_id)
|
||||
if status.get("status") == "ok" and status.get("moderation_status") == "pending":
|
||||
# Фото на модерации — не вводим в модуль (кнопок загрузки нет)
|
||||
photo_id = status.get("photo_id", "???")
|
||||
log_menu_stats(user_id, "Photo Bot", "Вход заблокирован — фото на модерации")
|
||||
await msg.answer(
|
||||
@@ -173,22 +175,22 @@ async def send_dynamic_photo_main_menu(msg: Message, user_id: str):
|
||||
parse_mode="html"
|
||||
)
|
||||
return
|
||||
elif status.get("status") == "ok" and status.get("moderation_status") == "rejected":
|
||||
reason = (status.get("rejection_reason") or "Причина не указана.").strip()
|
||||
if status.get("status") == "ok" and status.get("moderation_status") == "rejected":
|
||||
log_menu_stats(user_id, "Photo Bot", "Вход — фото отклонено, показана причина")
|
||||
await msg.answer(photo_rejected_notice(reason), parse_mode="html")
|
||||
# Меню показывается ниже: кнопки остаются, пользователь шлёт новое фото
|
||||
elif status.get("status") != "ok":
|
||||
logger.warning(
|
||||
f"Не удалось проверить статус модерации для {user_id}: {status.get('reason')}"
|
||||
)
|
||||
status = None
|
||||
|
||||
states.set_state(user_id, "PHOTO_MODE")
|
||||
log_menu_stats(user_id, "Photo Bot (TEST)" if config.PHOTO_TEST_MODE else "Photo Bot", "Вход")
|
||||
await msg.answer(
|
||||
PHOTO_TEST_ENTRY_TEXT if config.PHOTO_TEST_MODE else PHOTO_MAIN_MENU_TEXT,
|
||||
parse_mode="html"
|
||||
)
|
||||
# Одно универсальное сообщение: меню + (если нужно) причина отказа
|
||||
if config.PHOTO_TEST_MODE:
|
||||
entry_text = PHOTO_TEST_ENTRY_TEXT
|
||||
else:
|
||||
entry_text = photo_welcome_with_status(status)
|
||||
await msg.answer(entry_text, parse_mode="html")
|
||||
|
||||
|
||||
# =========================================================
|
||||
|
||||
Reference in New Issue
Block a user