From 741a89f45807e8d0e1abb56464ec968a67712964 Mon Sep 17 00:00:00 2001 From: Kenik Date: Thu, 23 Jul 2026 19:12:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D1=81=D1=8B=D0=BB=D0=BA=D0=B8=20=D0=91?= =?UTF-8?q?=D0=90=D0=97=D0=90:=20=D1=80=D0=B5=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20URL=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D0=B8/?= =?UTF-8?q?=D0=BE=D0=BF=D0=BB=D0=B0=D1=82=D1=8B=20+=20=D1=81=D0=BE=D1=85?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=8F=D0=BA=D0=BE?= =?UTF-8?q?=D1=80=D1=8F=20=D0=B2=20UTM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Кнопки записи/оплаты ведут на форму сайта infocyber.pro (service_id web_1..web_5); тарифы — на главную с якорем #prices; пробное и интенсив — на общую форму записи (отдельной страницы интенсива на сайте пока нет). - _utm(): UTM вставляется ДО якоря (?utm...#prices), иначе браузер не доскроллит до раздела. Значения ссылок вынесены в .env / задокументированы в .env.example. Co-Authored-By: Claude Opus 4.8 --- .env.example | 12 ++++++++++++ bot.py | 12 +++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index dbb8e82..44247eb 100644 --- a/.env.example +++ b/.env.example @@ -34,3 +34,15 @@ MAIL_TO=group-zakaz@infocyber.pro HR_MAIL_TO= # true — SSL (порт 465), false — STARTTLS (порт 587) SMTP_USE_SSL=true + +# --- Ссылки Кибершколы БАЗА (кнопки записи/оплаты в боте) --- +# UTM добавляются кодом автоматически; здесь только базовые URL. Замените при необходимости. +LINK_TRIAL=https://infocyber.pro/form/index.html +LINK_TARIFFS=https://infocyber.pro/#prices +LINK_GROUP_4=https://infocyber.pro/form/index.html?service_id=web_2 +LINK_GROUP_8=https://infocyber.pro/form/index.html?service_id=web_3 +LINK_IND_1=https://infocyber.pro/form/index.html?service_id=web_1 +LINK_IND_4=https://infocyber.pro/form/index.html?service_id=web_4 +LINK_IND_8=https://infocyber.pro/form/index.html?service_id=web_5 +# Летний интенсив: отдельной страницы на сайте нет — ведём на общую форму (замените, когда появится) +LINK_SUMMER=https://infocyber.pro/form/index.html diff --git a/bot.py b/bot.py index 173b3e0..77f5780 100644 --- a/bot.py +++ b/bot.py @@ -646,10 +646,16 @@ class VKBotApplication: # ========================================================== def _utm(self, url: str, campaign: str = "main") -> str: - """Добавляет UTM-метку к ссылке (main — обычные, summer — интенсив).""" + """Добавляет UTM-метку к ссылке (main — обычные, summer — интенсив). + + Якорь (#...) сохраняется: UTM вставляется ДО него, иначе браузер не + доскроллит до раздела (напр. https://infocyber.pro/?utm...#prices). + """ utm = config.UTM_SUMMER if campaign == "summer" else config.UTM_MAIN - sep = "&" if "?" in url else "?" - return f"{url}{sep}{utm}" + base, sep_frag, frag = url.partition("#") + sep = "&" if "?" in base else "?" + result = f"{base}{sep}{utm}" + return f"{result}#{frag}" if sep_frag else result def _baza_send_openlink(self, user_id: int, link_key: str, message: str, button: str, campaign: str = "main"):