Тест-мод: под-режим «1 — тест проверка фото» внутри штатного фото-режима

This commit is contained in:
Hermes Bot
2026-08-20 13:06:35 +07:00
parent 633eb27450
commit 1ea42a9197
4 changed files with 43 additions and 13 deletions
+28 -4
View File
@@ -32,7 +32,6 @@ from utils.texts import (
photo_moderation_pending,
PHOTO_TEST_WELCOME_TEXT,
PHOTO_TEST_PREVIEW_TEXT,
PHOTO_TEST_RECEIVING_TEXT,
PHOTO_TEST_AI_CHECKING_TEXT,
photo_test_result,
photo_test_ai_error,
@@ -48,6 +47,16 @@ router = Router()
# Формат: {user_id: {'path': '/tmp/orig_user.jpg', 'coords': (x1,y1,x2,y2)}}
pending_photos = {}
# Пользователи, находящиеся в под-режиме «тест проверка фото»
test_submode_users = set()
def in_test_submode(user_id: str) -> bool:
"""Проверяет, находится ли пользователь в под-режиме тест-проверки фото"""
if user_id not in test_submode_users:
return False
# Если сессия истекла (состояние сброшено) — под-режим тоже недействителен
return states.get_state(user_id) == "PHOTO_MODE"
# =========================================================
# СИСТЕМА ОБРАБОТКИ ОШИБОК И ЛОГИРОВАНИЯ
# =========================================================
@@ -170,6 +179,7 @@ async def photo_module_handler(msg: Message):
if cmd in ["0", "9", "/start", "меню"]:
log_menu_stats(user_id, "Photo Bot", "Выход в главное меню")
states.clear_state(user_id)
test_submode_users.discard(user_id)
if user_id in pending_photos:
photo_data = pending_photos[user_id]
if os.path.exists(photo_data['path']):
@@ -196,8 +206,22 @@ async def photo_module_handler(msg: Message):
# Ошибка проверки — не блокируем, просто логируем
logger.warning(f"Не удалось проверить статус модерации для {user_id}: {status.get('reason')}")
# --- ТЕСТОВЫЙ МОД: кнопка 1 отправляет фото НАПРЯМУЮ в ИИ, фото никуда не публикуется ---
if not is_attachment and user_id in pending_photos and config.PHOTO_TEST_MODE:
# --- ТЕСТ-ПОД-РЕЖИМ: нет висящего фото — на любой текст повторяем тест-приветствие ---
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)
and config.PHOTO_TEST_MODE and cmd == "1"):
test_submode_users.add(user_id)
log_menu_stats(user_id, "Photo Bot (TEST)", "Вход в тест-под-режим")
await msg.answer(PHOTO_TEST_WELCOME_TEXT, parse_mode="html")
return
# --- ТЕСТ-ПОД-РЕЖИМ: кнопка 1 отправляет фото НАПРЯМУЮ в ИИ, фото никуда не публикуется ---
if not is_attachment and user_id in pending_photos and in_test_submode(user_id):
if cmd == "1":
photo_data = pending_photos[user_id]
original_path = photo_data['path']
@@ -393,7 +417,7 @@ async def photo_module_handler(msg: Message):
log_menu_stats(user_id, "Photo Bot", "Загрузка и обработка нового фото")
await asyncio.sleep(0.5)
if config.PHOTO_TEST_MODE:
if in_test_submode(user_id):
await msg.answer(
PHOTO_TEST_PREVIEW_TEXT,
parse_mode="html"