diff --git a/apps/bot/src/index.ts b/apps/bot/src/index.ts index 01c3d3e..efd3c56 100644 --- a/apps/bot/src/index.ts +++ b/apps/bot/src/index.ts @@ -1,7 +1,21 @@ /* eslint-disable canonical/id-match */ /* eslint-disable consistent-return */ import { env as environment } from './config/env'; -import { commandsList, KEYBOARD_REMOVE, KEYBOARD_SHARE_PHONE, MESSAGE_NOT_MASTER } from './message'; +import { + commandsList, + KEYBOARD_REMOVE, + KEYBOARD_SHARE_PHONE, + MESSAGE_NOT_MASTER, + MSG_ALREADY_MASTER, + MSG_BECOME_MASTER, + MSG_CONTACT_ADDED, + MSG_ERROR, + MSG_NEED_PHONE, + MSG_PHONE_SAVED, + MSG_SEND_CLIENT_CONTACT, + MSG_WELCOME, + MSG_WELCOME_BACK, +} from './message'; import { normalizePhoneNumber } from './utils/phone'; import { CustomersService } from '@repo/graphql/api/customers'; import { Enum_Customer_Role } from '@repo/graphql/types'; @@ -17,17 +31,13 @@ bot.start(async (context) => { const { customer } = await customerService.getCustomer({ telegramId }); if (customer) { - return context.reply( - `Приветствуем снова, ${customer.name} 👋. -Чтобы воспользоваться сервисом, откройте приложение.` + commandsList, - KEYBOARD_REMOVE, - ); + return context.reply(MSG_WELCOME_BACK(customer.name) + commandsList, { + ...KEYBOARD_REMOVE, + parse_mode: 'HTML', + }); } - return context.reply( - 'Добро пожаловать! Пожалуйста, поделитесь своим номером телефона.', - KEYBOARD_SHARE_PHONE, - ); + return context.reply(MSG_WELCOME, { ...KEYBOARD_SHARE_PHONE, parse_mode: 'HTML' }); }); bot.command('addcontact', async (context) => { @@ -37,17 +47,14 @@ bot.command('addcontact', async (context) => { const { customer } = await customerService.getCustomer({ telegramId }); if (!customer) { - return context.reply( - 'Чтобы добавить контакт, сначала поделитесь своим номером телефона.', - KEYBOARD_SHARE_PHONE, - ); + return context.reply(MSG_NEED_PHONE, { ...KEYBOARD_SHARE_PHONE, parse_mode: 'HTML' }); } if (customer.role !== Enum_Customer_Role.Master) { - return context.reply(MESSAGE_NOT_MASTER); + return context.reply(MESSAGE_NOT_MASTER, { parse_mode: 'HTML' }); } - return context.reply('Отправьте контакт клиента, которого вы хотите добавить'); + return context.reply(MSG_SEND_CLIENT_CONTACT, { parse_mode: 'HTML' }); }); bot.command('becomemaster', async (context) => { @@ -57,11 +64,11 @@ bot.command('becomemaster', async (context) => { const { customer } = await customerService.getCustomer({ telegramId }); if (!customer) { - return context.reply('Сначала поделитесь своим номером телефона.', KEYBOARD_SHARE_PHONE); + return context.reply(MSG_NEED_PHONE, { ...KEYBOARD_SHARE_PHONE, parse_mode: 'HTML' }); } if (customer.role === Enum_Customer_Role.Master) { - return context.reply('Вы уже являетесь мастером.'); + return context.reply(MSG_ALREADY_MASTER, { parse_mode: 'HTML' }); } const response = await customerService @@ -71,11 +78,11 @@ bot.command('becomemaster', async (context) => { }, }) .catch((error) => { - context.reply('Произошла ошибка.\n' + error); + context.reply(MSG_ERROR(error), { parse_mode: 'HTML' }); }); if (response) { - return context.reply('Вы стали мастером'); + return context.reply(MSG_BECOME_MASTER, { parse_mode: 'HTML' }); } }); @@ -99,19 +106,18 @@ bot.on(message('contact'), async (context) => { telegramId: context.from.id, }) .catch((error) => { - context.reply('Произошла ошибка.\n' + error); + context.reply(MSG_ERROR(error), { parse_mode: 'HTML' }); }); if (response) { - return context.reply( - `Спасибо! Мы сохранили ваш номер телефона. Теперь можете открыть приложение или воспользоваться командами бота.` + - commandsList, - KEYBOARD_REMOVE, - ); + return context.reply(MSG_PHONE_SAVED + commandsList, { + ...KEYBOARD_REMOVE, + parse_mode: 'HTML', + }); } } else { if (customer.role !== Enum_Customer_Role.Master) { - return context.reply(MESSAGE_NOT_MASTER); + return context.reply(MESSAGE_NOT_MASTER, { parse_mode: 'HTML' }); } try { @@ -130,11 +136,9 @@ bot.on(message('contact'), async (context) => { documentId, }); - return context.reply( - `Добавили контакт ${name}. Пригласите пользователя в приложение и тогда вы сможете добавлять записи с этим контактом.`, - ); + return context.reply(MSG_CONTACT_ADDED(name), { parse_mode: 'HTML' }); } catch (error) { - context.reply('Произошла ошибка.\n' + error); + context.reply(MSG_ERROR(error), { parse_mode: 'HTML' }); } } }); diff --git a/apps/bot/src/message.ts b/apps/bot/src/message.ts index 54b61f6..b270cf1 100644 --- a/apps/bot/src/message.ts +++ b/apps/bot/src/message.ts @@ -1,8 +1,9 @@ import { type ReplyKeyboardRemove } from 'telegraf/types'; export const commandsList = ` -\nДоступные команды: - /addcontact - Добавить контакт клиента +\n📋 Доступные команды: +• /addcontact — добавить контакт клиента +• /becomemaster — стать мастером `; export const KEYBOARD_SHARE_PHONE = { @@ -11,7 +12,7 @@ export const KEYBOARD_SHARE_PHONE = { [ { request_contact: true, - text: 'Отправить номер телефона', + text: '📱 Отправить номер телефона', }, ], ], @@ -26,4 +27,29 @@ export const KEYBOARD_REMOVE = { }; export const MESSAGE_NOT_MASTER = - 'Только мастер может добавлять контакты. \nСтать мастером можно на странице профиля в приложении или при помощи команды /becomemaster'; + '⛔️ Только мастер может добавлять контакты.\nСтать мастером можно на странице профиля в приложении или с помощью команды /becomemaster.'; + +export const MSG_WELCOME = + '👋 Добро пожаловать!\nПожалуйста, поделитесь своим номером телефона для регистрации.'; + +export const MSG_WELCOME_BACK = (name: string) => + `👋 С возвращением, ${name}!\nЧтобы воспользоваться сервисом, откройте приложение.\n`; + +export const MSG_NEED_PHONE = + '📱 Чтобы добавить контакт, сначала поделитесь своим номером телефона.'; + +export const MSG_SEND_CLIENT_CONTACT = + '👤 Отправьте контакт клиента, которого вы хотите добавить.'; + +export const MSG_ALREADY_MASTER = '🎉 Вы уже являетесь мастером!'; + +export const MSG_BECOME_MASTER = '🥳 Поздравляем! Теперь вы мастер.'; + +export const MSG_ERROR = (error?: unknown) => + `❌ Произошла ошибка.\n${error ? String(error) : ''}`; + +export const MSG_PHONE_SAVED = + '✅ Спасибо! Мы сохранили ваш номер телефона.\nТеперь вы можете открыть приложение или воспользоваться командами бота.'; + +export const MSG_CONTACT_ADDED = (name: string) => + `✅ Добавили контакт: ${name}\nПригласите пользователя в приложение, чтобы вы могли добавлять записи с этим контактом.`;