apps/bot: beautify messages
This commit is contained in:
parent
7f3b38fa48
commit
1e3ef51eb0
@ -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' });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -1,8 +1,9 @@
|
||||
import { type ReplyKeyboardRemove } from 'telegraf/types';
|
||||
|
||||
export const commandsList = `
|
||||
\nДоступные команды:
|
||||
/addcontact - Добавить контакт клиента
|
||||
\n<b>📋 Доступные команды:</b>
|
||||
• <b>/addcontact</b> — добавить контакт клиента
|
||||
• <b>/becomemaster</b> — стать мастером
|
||||
`;
|
||||
|
||||
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';
|
||||
'⛔️ <b>Только мастер может добавлять контакты.</b>\nСтать мастером можно на странице профиля в приложении или с помощью команды <b>/becomemaster</b>.';
|
||||
|
||||
export const MSG_WELCOME =
|
||||
'👋 <b>Добро пожаловать!</b>\nПожалуйста, поделитесь своим номером телефона для регистрации.';
|
||||
|
||||
export const MSG_WELCOME_BACK = (name: string) =>
|
||||
`👋 <b>С возвращением, ${name}!</b>\nЧтобы воспользоваться сервисом, откройте приложение.\n`;
|
||||
|
||||
export const MSG_NEED_PHONE =
|
||||
'📱 <b>Чтобы добавить контакт, сначала поделитесь своим номером телефона.</b>';
|
||||
|
||||
export const MSG_SEND_CLIENT_CONTACT =
|
||||
'👤 <b>Отправьте контакт клиента, которого вы хотите добавить.</b>';
|
||||
|
||||
export const MSG_ALREADY_MASTER = '🎉 <b>Вы уже являетесь мастером!</b>';
|
||||
|
||||
export const MSG_BECOME_MASTER = '🥳 <b>Поздравляем! Теперь вы мастер.</b>';
|
||||
|
||||
export const MSG_ERROR = (error?: unknown) =>
|
||||
`❌ <b>Произошла ошибка.</b>\n${error ? String(error) : ''}`;
|
||||
|
||||
export const MSG_PHONE_SAVED =
|
||||
'✅ <b>Спасибо! Мы сохранили ваш номер телефона.</b>\nТеперь вы можете открыть приложение или воспользоваться командами бота.';
|
||||
|
||||
export const MSG_CONTACT_ADDED = (name: string) =>
|
||||
`✅ <b>Добавили контакт:</b> <b>${name}</b>\nПригласите пользователя в приложение, чтобы вы могли добавлять записи с этим контактом.`;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user