mirror of
https://github.com/hempyhemp/hh-auto-reply.git
synced 2026-06-08 18:04:57 +00:00
👩💻 refactor(bot-commands): Обновлены кнопки в UI для настроек и информации.
All checks were successful
Deploy / deploy (push) Successful in 46s
All checks were successful
Deploy / deploy (push) Successful in 46s
This commit is contained in:
@@ -3,7 +3,7 @@ import bot from '@bot'
|
||||
import prisma from '@prisma'
|
||||
import cron, { type ScheduledTask } from 'node-cron'
|
||||
import { applyToJobs, checkIsAuth, listResumes, login, NoResumeError, saveResume } from './scraper.js'
|
||||
import { BACK_MARKUP, BTN, createStatusReporter, escapeHtml, LOGIN_REPLY_KEYBOARD, MAIN_REPLY_KEYBOARD, NO_RESUME_MARKUP, safeEdit } from './ui.js'
|
||||
import { BACK_MARKUP, BTN, createStatusReporter, escapeHtml, INFO_REPLY_KEYBOARD, LOGIN_REPLY_KEYBOARD, MAIN_REPLY_KEYBOARD, NO_RESUME_MARKUP, safeEdit, SETTINGS_REPLY_KEYBOARD } from './ui.js'
|
||||
|
||||
interface UserState {
|
||||
autoCron: ScheduledTask | null
|
||||
@@ -397,26 +397,33 @@ export function registerHHCommands() {
|
||||
await bot.sendMessage(chatId, '🔢 Введи максимальное количество откликов (1-50):')
|
||||
break
|
||||
|
||||
case BTN.AUTO_ON: {
|
||||
case BTN.AUTO_TOGGLE: {
|
||||
const s = getState(chatId)
|
||||
if (s.autoCron) {
|
||||
await bot.sendMessage(chatId, '⚠️ Авто уже запущено')
|
||||
break
|
||||
s.autoCron.stop()
|
||||
s.autoCron = null
|
||||
await bot.sendMessage(chatId, '⛔ Авто остановлен', { reply_markup: SETTINGS_REPLY_KEYBOARD })
|
||||
}
|
||||
else {
|
||||
s.autoCron = cron.schedule('0 10 * * 1-5', async () => {
|
||||
await bot.sendMessage(chatId, '⏰ Авто-отклик...')
|
||||
})
|
||||
await bot.sendMessage(chatId, '✅ Авто включён (пн-пт, 10:00)')
|
||||
await bot.sendMessage(chatId, '✅ Авто включён (пн-пт, 10:00)', { reply_markup: SETTINGS_REPLY_KEYBOARD })
|
||||
}
|
||||
break
|
||||
}
|
||||
|
||||
case BTN.AUTO_OFF: {
|
||||
const s = getState(chatId)
|
||||
s.autoCron?.stop()
|
||||
s.autoCron = null
|
||||
await bot.sendMessage(chatId, '⛔ Авто остановлен')
|
||||
case BTN.SETTINGS:
|
||||
await bot.sendMessage(chatId, '⚙️ Настройки:', { reply_markup: SETTINGS_REPLY_KEYBOARD })
|
||||
break
|
||||
|
||||
case BTN.INFO:
|
||||
await bot.sendMessage(chatId, 'ℹ️ Информация:', { reply_markup: INFO_REPLY_KEYBOARD })
|
||||
break
|
||||
|
||||
case BTN.BACK:
|
||||
await bot.sendMessage(chatId, '🤖 HH Auto-Apply', { reply_markup: MAIN_REPLY_KEYBOARD })
|
||||
break
|
||||
}
|
||||
|
||||
case BTN.LOGIN:
|
||||
await handleLogin(chatId)
|
||||
|
||||
41
src/hh/ui.ts
41
src/hh/ui.ts
@@ -4,13 +4,15 @@ export const BTN = {
|
||||
APPLY: '🚀 Откликнуться',
|
||||
STATUS: '⚙️ Статус',
|
||||
QUERY: '🔍 Изменить запрос',
|
||||
MAX: '🔢 Макс откликов',
|
||||
AUTO_ON: '⏰ Авто вкл',
|
||||
AUTO_OFF: '⛔ Авто выкл',
|
||||
MAX: '🔢 Макс. откликов',
|
||||
AUTO_TOGGLE: '⏰ Авто',
|
||||
LOGIN: '🔑 Войти на hh.ru',
|
||||
RESUME_LIST: '📄 Выбрать резюме',
|
||||
MY_RESUME: '📋 Моё резюме',
|
||||
SKIPPED: '🚫 Проблемные',
|
||||
SKIPPED: '🚫 Проблемные вакансии',
|
||||
SETTINGS: '⚙️ Настройки',
|
||||
INFO: 'ℹ️ Информация',
|
||||
BACK: '◀️ Назад',
|
||||
} as const
|
||||
|
||||
export const LOGIN_REPLY_KEYBOARD = {
|
||||
@@ -21,11 +23,29 @@ export const LOGIN_REPLY_KEYBOARD = {
|
||||
|
||||
export const MAIN_REPLY_KEYBOARD = {
|
||||
keyboard: [
|
||||
[{ text: BTN.APPLY }, { text: BTN.STATUS }],
|
||||
[{ text: BTN.QUERY }, { text: BTN.MAX }],
|
||||
[{ text: BTN.AUTO_ON }, { text: BTN.AUTO_OFF }],
|
||||
[{ text: BTN.LOGIN }, { text: BTN.RESUME_LIST }],
|
||||
[{ text: BTN.MY_RESUME }, { text: BTN.SKIPPED }],
|
||||
[{ text: BTN.APPLY }],
|
||||
[{ text: BTN.SETTINGS }, { text: BTN.INFO }],
|
||||
],
|
||||
resize_keyboard: true,
|
||||
persistent: true,
|
||||
}
|
||||
|
||||
export const SETTINGS_REPLY_KEYBOARD = {
|
||||
keyboard: [
|
||||
[{ text: BTN.MAX }, { text: BTN.QUERY }],
|
||||
[{ text: BTN.AUTO_TOGGLE }, { text: BTN.RESUME_LIST }],
|
||||
[{ text: BTN.LOGIN }],
|
||||
[{ text: BTN.BACK }],
|
||||
],
|
||||
resize_keyboard: true,
|
||||
persistent: true,
|
||||
}
|
||||
|
||||
export const INFO_REPLY_KEYBOARD = {
|
||||
keyboard: [
|
||||
[{ text: BTN.STATUS }, { text: BTN.MY_RESUME }],
|
||||
[{ text: BTN.SKIPPED }],
|
||||
[{ text: BTN.BACK }],
|
||||
],
|
||||
resize_keyboard: true,
|
||||
persistent: true,
|
||||
@@ -54,8 +74,9 @@ export async function safeEdit(
|
||||
if (e instanceof Error && (
|
||||
e.message.includes('message is not modified')
|
||||
|| e.message.includes('message to edit not found')
|
||||
))
|
||||
)) {
|
||||
return
|
||||
}
|
||||
throw e
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user