From b0af20140b4d5454de5aee0517c722183aeff4d4 Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Tue, 7 Oct 2025 18:04:12 +0300 Subject: [PATCH] Add privacy agreement and update environment variables - Introduced `PRIVACY_URL` to the environment configuration for dynamic linking. - Updated localization files to include a user consent agreement for sharing phone numbers, linking to the offer and privacy URLs. - Enhanced welcome and contact addition messages to incorporate the new consent clause, improving user clarity on data handling. --- apps/bot/locales/ru.ftl | 13 ++++++++++--- apps/bot/src/bot/conversations/add-contact.ts | 13 +++++++++++-- apps/bot/src/bot/features/welcome.ts | 16 +++++++++++++++- apps/bot/src/config/env.ts | 2 ++ turbo.json | 3 ++- 5 files changed, 40 insertions(+), 7 deletions(-) diff --git a/apps/bot/locales/ru.ftl b/apps/bot/locales/ru.ftl index d6e90ab..604eb60 100644 --- a/apps/bot/locales/ru.ftl +++ b/apps/bot/locales/ru.ftl @@ -56,6 +56,13 @@ btn-open-app = 📱 Открыть приложение btn-back = ◀️ Назад +# Согласие +share-phone-agreement = + Нажимая кнопку «Отправить номер телефона», вы: + - соглашаетесь с Публичной офертой + - подтверждаете согласие на обработку персональных данных согласно Политике конфиденциальности + + # Приветственные сообщения msg-welcome = 👋 Добро пожаловать! @@ -64,14 +71,14 @@ msg-welcome-back = 👋 С возвращением, { $name }! # Сообщения о телефоне -msg-need-phone = 📱 Чтобы добавить контакт, сначала поделитесь своим номером телефона +msg-need-phone = 📱 Чтобы добавить контакт, сначала поделитесь своим номером телефона. msg-phone-saved = ✅ Спасибо! Мы сохранили ваш номер телефона Теперь вы можете открыть приложение или воспользоваться командами бота msg-already-registered = ✅ Вы уже зарегистрированы в системе - Для смены номера телефона обратитесь в поддержку (Контакты в профиле бота) + Для смены номера телефона обратитесь в поддержку (Контакты в профиле бота) msg-invalid-phone = ❌ Некорректный номер телефона. Пример: +79999999999 # Сообщения о контактах @@ -85,7 +92,7 @@ msg-contact-added = ✅ Добавили { $fullname } в список ваших контактов Пригласите пользователя в приложение, чтобы вы могли добавлять с ним записи -msg-contact-forward = Перешлите пользователю следующее сообщение, чтобы он мог начать пользоваться ботом ⬇️ +msg-contact-forward = Перешлите пользователю следующее сообщение, чтобы он мог начать пользоваться ботом ⬇️ # Сообщения для шаринга msg-share-bot = diff --git a/apps/bot/src/bot/conversations/add-contact.ts b/apps/bot/src/bot/conversations/add-contact.ts index 90eb8f8..c51a12c 100644 --- a/apps/bot/src/bot/conversations/add-contact.ts +++ b/apps/bot/src/bot/conversations/add-contact.ts @@ -1,6 +1,7 @@ /* eslint-disable sonarjs/cognitive-complexity */ /* eslint-disable id-length */ import { type Context } from '@/bot/context'; +import { env } from '@/config/env'; import { KEYBOARD_SHARE_BOT, KEYBOARD_SHARE_PHONE } from '@/config/keyboards'; import { parseContact } from '@/utils/contact'; import { combine } from '@/utils/messages'; @@ -21,8 +22,16 @@ export async function addContact(conversation: Conversation, c if (!customer) { return ctx.reply( - await conversation.external(({ t }) => t('msg-need-phone')), - KEYBOARD_SHARE_PHONE, + await conversation.external(({ t }) => + combine( + t('msg-need-phone'), + t('share-phone-agreement', { + offerUrl: env.OFFER_URL, + privacyUrl: env.PRIVACY_URL, + }), + ), + ), + { ...KEYBOARD_SHARE_PHONE, parse_mode: 'HTML' }, ); } diff --git a/apps/bot/src/bot/features/welcome.ts b/apps/bot/src/bot/features/welcome.ts index 7bce81f..1da9b4b 100644 --- a/apps/bot/src/bot/features/welcome.ts +++ b/apps/bot/src/bot/features/welcome.ts @@ -1,6 +1,8 @@ import { type Context } from '@/bot/context'; import { logHandle } from '@/bot/helpers/logging'; +import { env } from '@/config/env'; import { KEYBOARD_SHARE_PHONE, mainMenu } from '@/config/keyboards'; +import { combine } from '@/utils/messages'; import { RegistrationService } from '@repo/graphql/api/registration'; import { Composer } from 'grammy'; @@ -22,7 +24,19 @@ feature.command('start', logHandle('command-start'), async (ctx) => { } // Новый пользователь — просим поделиться номером - return ctx.reply(ctx.t('msg-welcome'), { ...KEYBOARD_SHARE_PHONE, parse_mode: 'HTML' }); + return ctx.reply( + combine( + ctx.t('msg-welcome'), + ctx.t('share-phone-agreement', { + offerUrl: env.OFFER_URL, + privacyUrl: env.PRIVACY_URL, + }), + ), + { + ...KEYBOARD_SHARE_PHONE, + parse_mode: 'HTML', + }, + ); }); export { composer as welcome }; diff --git a/apps/bot/src/config/env.ts b/apps/bot/src/config/env.ts index 8ccd57e..de8a2da 100644 --- a/apps/bot/src/config/env.ts +++ b/apps/bot/src/config/env.ts @@ -4,6 +4,8 @@ export const envSchema = z.object({ BOT_PROVIDER_TOKEN: z.string(), BOT_TOKEN: z.string(), BOT_URL: z.string(), + OFFER_URL: z.string(), + PRIVACY_URL: z.string(), RATE_LIMIT: z .string() .transform((value) => Number.parseInt(value, 10)) diff --git a/turbo.json b/turbo.json index 3d121fb..8fa4a4f 100644 --- a/turbo.json +++ b/turbo.json @@ -18,7 +18,8 @@ "REDIS_HOST", "REDIS_PORT", "REDIS_PASSWORD", - "OFFER_URL" + "OFFER_URL", + "PRIVACY_URL" ] }, "lint": {