diff --git a/src/constants/actions.ts b/src/constants/actions.ts index 46e38fe..1c27575 100644 --- a/src/constants/actions.ts +++ b/src/constants/actions.ts @@ -14,8 +14,10 @@ export const ActionButtonLabels: Record = { export enum BotCommands { Template = "template", + Help = "help", } export const BotCommandDescription: Record = { [BotCommands.Template]: "Показывает шаблон вакансии", + [BotCommands.Help]: "Как работать с ботом", }; diff --git a/src/constants/messages.ts b/src/constants/messages.ts index 5a9d61b..04f510e 100644 --- a/src/constants/messages.ts +++ b/src/constants/messages.ts @@ -28,3 +28,41 @@ export const vacancyTemplateHTMLMessageText = `${VacancyFieldLabel.Description}: Всё, что описывает вакансию, обязанности и предложения`; export const vacancyLimitExceededMessageText = `Достигнут лимит бесплатных публикаций в этом месяце. Свяжись с @${config.botConsultantUsername} чтобы разместить больше`; + +export const helpMessageText = + `Привет! Я готов помочь тебе опубликовать вакансию в нашем канале. ` + + `Для этого, пожалуйста, отправь мне следующую информацию о вакансии:` + + `\n` + + `1. Кому: (укажите искомого специалиста)\n` + + `2. Опыт работы: (укажите требуемый опыт работы)\n` + + `3. З/П: (укажите зарплатный диапазон, например, "от $5 000 net")\n` + + `4. Компания: (укажите название компании, которая осуществляет поиск)\n` + + `5. Процесс найма: (опишите процесс найма, если есть особые этапы или требования)\n` + + `6. Описание: (дайте подробное описание вакансии)\n` + + `\n` + + `Пример вакансии:\n` + + `` + + `Кому: Middle Frontend Developer\n` + + `Опыт работы: от 2 лет\n` + + `З/П: от 200 000 рублей\n` + + `Компания: MyITCompany\n` + + `Процесс найма: 1. Отправка резюме, 2. Техническое интервью, 3. Собеседование с руководителем\n` + + `\n` + + `Мы ищем опытного разработчика. Отличное знание HTML, CSS, JavaScript. ` + + `Опыт работы с фреймворками React или Vue. Готовность к командной работе и умение ` + + `решать сложные задачи. Предлагаем интересные проекты и конкурентную зарплату.\n` + + `\n` + + `Если есть дополнительные требования, такие как ограничение по локации или ` + + `требования к иностранному языку, пожалуйста, укажи их также.\n` + + `\n` + + `После отправки мне текста, я посмотрю вакансию, проверю заполнение, сгенерирую красивое превью, ` + + `расставлю теги для поиска и покажу тебе с указанием даты публикации. Отправку публикации ` + + `можно отозвать. А после размещения для удаления вакансии или внесения изменений тебе придется ` + + `связаться с администратором.\n` + + `\n` + + `Не беспокойся, я всегда здесь, чтобы помочь тебе с публикацией вакансий. Однако, имей в виду, ` + + `что администраторы могут блокировать публикации без моего уведомления.\n` + + `\n` + + `У меня есть ограничение в ${config.publishConfig.userMonthVacancyLimit} бесплатных ` + + `размещений в месяц от одного человека и компании. Если ты хочешь разместить больше вакансий ` + + `от себя или компании, обратись к @${config.botConsultantUsername}.`; diff --git a/src/launchApplication.ts b/src/launchApplication.ts index bc549de..9778d84 100644 --- a/src/launchApplication.ts +++ b/src/launchApplication.ts @@ -29,6 +29,10 @@ bot.telegram.setMyCommands([ command: BotCommands.Template, description: BotCommandDescription[BotCommands.Template], }, + { + command: BotCommands.Help, + description: BotCommandDescription[BotCommands.Help], + }, ]); SubscribeToActionsService.subscribeToCommands(); diff --git a/src/services/bot/index.ts b/src/services/bot/index.ts index 8397060..05fe86b 100644 --- a/src/services/bot/index.ts +++ b/src/services/bot/index.ts @@ -1,3 +1,4 @@ export * from "./gracefulShutdown"; export * from "./handleErrors"; export * from "./sendVacancyTemplateMessage"; +export * from "./sendHelpMessage"; diff --git a/src/services/bot/sendHelpMessage.ts b/src/services/bot/sendHelpMessage.ts new file mode 100644 index 0000000..166215f --- /dev/null +++ b/src/services/bot/sendHelpMessage.ts @@ -0,0 +1,20 @@ +import { helpMessageText } from "../../constants/messages"; +import logger from "../logger"; + +export const sendHelpMessage = async (ctx) => { + try { + const { username } = ctx?.update?.message?.chat || {}; + + logger.info(`User @${username} requests for help`); + + await ctx.reply(helpMessageText, { parse_mode: "HTML" }); + + logger.info(`Help message successfully sent to @${username}`); + } catch (err) { + logger.error( + `Failed to send message with help info - ${ + (err as Error)?.message || JSON.stringify(err) + }` + ); + } +}; diff --git a/src/services/subscribe-to-actions/subscribeToCommands.ts b/src/services/subscribe-to-actions/subscribeToCommands.ts index a5ffef7..3b64cea 100644 --- a/src/services/subscribe-to-actions/subscribeToCommands.ts +++ b/src/services/subscribe-to-actions/subscribeToCommands.ts @@ -4,4 +4,5 @@ import bot from "../../launchBot"; export const subscribeToCommands = () => { bot.command(BotCommands.Template, BotService.sendVacancyTemplateMessage); + bot.command(BotCommands.Help, BotService.sendHelpMessage); };