Update Russian localization and enhance contact addition flow

- Changed terminology from "клиент" to "пользователь" for consistency in user interactions.
- Updated messages to clarify user instructions for adding contacts and handling phone numbers.
- Added validation to prevent users from adding their own phone number as a contact.
- Improved conversation prompts for better user experience during contact addition.
This commit is contained in:
vchikalkin 2025-09-18 19:00:35 +03:00
parent ec3c2869c1
commit 31adf7e7b3
2 changed files with 47 additions and 18 deletions

View File

@ -25,7 +25,7 @@ description =
start =
.description = Запуск бота
addcontact =
.description = Добавить контакт клиента
.description = Добавить контакт пользователя
sharebot =
.description = Поделиться ботом
subscribe =
@ -36,7 +36,7 @@ help =
.description = Список команд и поддержка
commands-list =
📋 Доступные команды:
• /addcontact — добавить контакт клиента
• /addcontact — добавить контакт пользователя
• /sharebot — поделиться ботом
• /subscribe — приобрести Pro доступ
• /pro — информация о вашем Pro доступе
@ -72,15 +72,18 @@ msg-already-registered =
✅ Вы уже зарегистрированы в системе
Для смены номера телефона обратитесь в поддержку (Контакты в профиле бота)
msg-invalid-phone = ❌ Некорректный номер телефона
msg-invalid-phone = ❌ Некорректный номер телефона. Пример корректного номера: +79999999999
# Сообщения о контактах
msg-send-client-contact = 👤 Отправьте контакт клиента, которого вы хотите добавить.
msg-send-contact = Пожалуйста, отправьте контакт клиента через кнопку Telegram
msg-send-client-contact = 👤 Отправьте контакт пользователя, которого вы хотите добавить.
msg-send-client-contact-or-phone = 👤 Отправьте контакт пользователя или введите его номер телефона в сообщении
msg-send-contact = Пожалуйста, отправьте контакт пользователя через кнопку Telegram
msg-send-client-name = ✍️ Введите имя пользователя одним сообщением
msg-invalid-name = ❌ Некорректное имя. Попробуйте еще раз
msg-contact-added =
✅ Добавили { $name } в список ваших клиентов
✅ Добавили { $name } в список ваших контактов
Пригласите клиента в приложение, чтобы вы могли добавлять с ним записи
Пригласите пользователя в приложение, чтобы вы могли добавлять с ним записи
msg-contact-forward = Перешлите пользователю следующее сообщение, чтобы он мог начать пользоваться ботом ⬇️
# Сообщения для шаринга
@ -101,6 +104,7 @@ err-with-details = ❌ Произошла ошибка
{ $error }
err-limit-exceeded = 🚫 Слишком много запросов! Подождите немного
err-missing-telegram-id = ❌ Telegram ID не найден
err-cannot-add-self = ❌ Нельзя добавить свой номер телефона как контакт
# Сообщения о доступе

View File

@ -1,3 +1,4 @@
/* eslint-disable sonarjs/cognitive-complexity */
/* eslint-disable id-length */
import { type Context } from '@/bot/context';
import { KEYBOARD_SHARE_BOT, KEYBOARD_SHARE_PHONE } from '@/config/keyboards';
@ -24,25 +25,49 @@ export async function addContact(conversation: Conversation<Context, Context>, c
);
}
// Просим отправить контакт клиента
// Просим отправить контакт или номер телефона
await ctx.reply(
await conversation.external(({ t }) =>
combine(t('msg-send-client-contact'), t('msg-cancel-operation')),
combine(t('msg-send-client-contact-or-phone'), t('msg-cancel-operation')),
),
);
// Ждем любое сообщение от пользователя
const waitCtx = await conversation.wait();
// Ждём первое сообщение: контакт или текст с номером
const firstCtx = await conversation.wait();
// Проверяем, что отправлен контакт
if (!waitCtx.message?.contact) {
return ctx.reply(await conversation.external(({ t }) => t('msg-send-contact')));
let name = '';
let phone = '';
if (firstCtx.message?.contact) {
const { contact } = firstCtx.message;
name = `${contact.first_name || ''} ${contact.last_name || ''}`.trim();
phone = normalizePhoneNumber(contact.phone_number);
} else if (firstCtx.message?.text) {
const typedPhone = normalizePhoneNumber(firstCtx.message.text);
if (!isValidPhoneNumber(typedPhone)) {
return ctx.reply(await conversation.external(({ t }) => t('msg-invalid-phone')));
}
// Нельзя добавлять свой собственный номер телефона
if (customer.phone && normalizePhoneNumber(customer.phone) === typedPhone) {
return ctx.reply(await conversation.external(({ t }) => t('err-cannot-add-self')));
}
phone = typedPhone;
// Просим ввести имя клиента
await ctx.reply(await conversation.external(({ t }) => t('msg-send-client-name')));
const nameCtx = await conversation.wait();
const typedName = nameCtx.message?.text?.trim() || '';
if (!typedName) {
return ctx.reply(await conversation.external(({ t }) => t('msg-invalid-name')));
}
name = typedName;
} else {
return ctx.reply(await conversation.external(({ t }) => t('msg-send-client-contact-or-phone')));
}
const { contact } = waitCtx.message;
const name = `${contact.first_name || ''} ${contact.last_name || ''}`.trim();
const phone = normalizePhoneNumber(contact.phone_number);
// Проверяем валидность номера телефона
if (!isValidPhoneNumber(phone)) {
return ctx.reply(await conversation.external(({ t }) => t('msg-invalid-phone')));