From e7bd4885510482a4ee0ad134ff0485f6b60002c6 Mon Sep 17 00:00:00 2001 From: Verum Date: Thu, 2 Apr 2026 21:20:24 +0700 Subject: [PATCH] 2222 --- session_bot/bot.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/session_bot/bot.py b/session_bot/bot.py index ce3e4d2..efc7d69 100644 --- a/session_bot/bot.py +++ b/session_bot/bot.py @@ -213,6 +213,10 @@ def save_post_template(state_storage: JsonStateStorage, template: str) -> None: state_storage.save(payload) +def count_actor_placeholders(template: str) -> int: + return normalize_template_placeholders(template).count("{{actors}}") + + @router.message(CommandStart()) @router.message(Command("panel")) async def start_handler(message: Message, state: FSMContext, app_config: dict, actor_lookup: dict, settings) -> None: @@ -277,12 +281,25 @@ async def post_handler( normalized = normalize_template_placeholders(template) save_post_template(state_storage, normalized) await state.clear() - if "{{actors}}" not in normalized: + placeholder_count = count_actor_placeholders(normalized) + if placeholder_count == 0: await message.answer( "Шаблон сохранен, но в нем нет {{actors}}.\n" "Плейсхолдер должен быть именно {{actors}} в любом регистре." ) return + if placeholder_count > 1: + await message.answer( + "Шаблон сохранен, но в нем несколько {{actors}}.\n" + "Нужен только один общий {{actors}} на месте всего блока актеров, иначе список будет дублироваться." + ) + return + if message.text and message.text.startswith("/post "): + await message.answer( + "Шаблон сохранен.\n" + "Но если нужна разметка, ссылки и premium emoji, лучше использовать /post ответом на уже оформленное сообщение, а не вставлять шаблон текстом после команды." + ) + return await message.answer("Шаблон поста сохранен.") return @@ -493,12 +510,19 @@ async def post_template_handler( save_post_template(state_storage, normalized) await state.clear() - if "{{actors}}" not in normalized: + placeholder_count = count_actor_placeholders(normalized) + if placeholder_count == 0: await message.answer( "Шаблон сохранен, но в нем нет {{actors}}.\n" "Плейсхолдер должен быть именно {{actors}} в любом регистре." ) return + if placeholder_count > 1: + await message.answer( + "Шаблон сохранен, но в нем несколько {{actors}}.\n" + "Нужен только один общий {{actors}} на месте всего блока актеров, иначе список будет дублироваться." + ) + return await message.answer("Шаблон поста сохранен.")