Тест-мод: под-режим «1 — тест проверка фото» внутри штатного фото-режима
This commit is contained in:
+28
-4
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user