enlistment command fix
This commit is contained in:
@@ -1,13 +1,10 @@
|
|||||||
const { SlashCommandBuilder, EmbedBuilder, InteractionContextType, ApplicationIntegrationType } = require('discord.js');
|
const { SlashCommandBuilder, EmbedBuilder, InteractionContextType, ApplicationIntegrationType } = require('discord.js');
|
||||||
const logger = require('../../../modules/colorfulLogger');
|
const logger = require('../../../modules/colorfulLogger');
|
||||||
const {
|
const {
|
||||||
ipdaeDatas,
|
updateEnlistmentData
|
||||||
notificationHistory,
|
|
||||||
saveData
|
|
||||||
} = require('../../data/dataManager');
|
} = require('../../data/dataManager');
|
||||||
const { serviceTypes, adminUserIds } = require('../../../config/constants');
|
const { serviceTypes, adminUserIds } = require('../../../config/constants');
|
||||||
const { dateFormatter } = require('../../utils/dateUtils');
|
const { dateFormatter } = require('../../utils/dateUtils');
|
||||||
const { binarySearch, binaryInsert } = require('../../utils/helpers');
|
|
||||||
const { getNameById } = require('../../utils/discordUtils');
|
const { getNameById } = require('../../utils/discordUtils');
|
||||||
const { handleCommandError } = require('../../../utils/errorHandler');
|
const { handleCommandError } = require('../../../utils/errorHandler');
|
||||||
|
|
||||||
@@ -37,7 +34,11 @@ async function setEnlistmentDate(client, callerUserId, dateArg, typeArg, command
|
|||||||
if (!(/^\d{4}-\d{2}-\d{2}$/.test(dateArg) && serviceTypes.includes(typeArg))) {
|
if (!(/^\d{4}-\d{2}-\d{2}$/.test(dateArg) && serviceTypes.includes(typeArg))) {
|
||||||
return new EmbedBuilder()
|
return new EmbedBuilder()
|
||||||
.setTitle('명령어 형식 오류')
|
.setTitle('명령어 형식 오류')
|
||||||
.setDescription(`입력된 날짜: \`${dateArg}\`, 복무형태: \`${typeArg}\``)
|
.setDescription(`입력된 날짜:
|
||||||
|
${dateArg}
|
||||||
|
, 복무형태:
|
||||||
|
${typeArg}
|
||||||
|
`)
|
||||||
.addFields({ name: '올바른 형식', value: `${commandString} YYYY-MM-DD ${serviceTypes.join('/')}` })
|
.addFields({ name: '올바른 형식', value: `${commandString} YYYY-MM-DD ${serviceTypes.join('/')}` })
|
||||||
.setColor('#F44336');
|
.setColor('#F44336');
|
||||||
}
|
}
|
||||||
@@ -47,44 +48,21 @@ async function setEnlistmentDate(client, callerUserId, dateArg, typeArg, command
|
|||||||
if (isNaN(enlistDate.getTime()) || enlistDate.getFullYear() !== year || enlistDate.getMonth() + 1 !== month || enlistDate.getDate() !== day) {
|
if (isNaN(enlistDate.getTime()) || enlistDate.getFullYear() !== year || enlistDate.getMonth() + 1 !== month || enlistDate.getDate() !== day) {
|
||||||
return new EmbedBuilder()
|
return new EmbedBuilder()
|
||||||
.setTitle('유효하지 않은 날짜입니다.')
|
.setTitle('유효하지 않은 날짜입니다.')
|
||||||
.setDescription(`입력한 날짜 \`${dateArg}\`를 확인해주세요.`)
|
.setDescription(`입력한 날짜
|
||||||
|
${dateArg}
|
||||||
|
를 확인해주세요.`)
|
||||||
.setColor('#F44336');
|
.setColor('#F44336');
|
||||||
}
|
}
|
||||||
|
|
||||||
let notificationHistoryModified = false;
|
|
||||||
const index = binarySearch(ipdaeDatas, targetUserId);
|
|
||||||
|
|
||||||
if (index !== -1) {
|
|
||||||
const oldDate = ipdaeDatas[index].date;
|
|
||||||
const oldType = ipdaeDatas[index].type;
|
|
||||||
|
|
||||||
if (targetUserId === '1107292307025301544' && typeArg !== '사회복무요원') {
|
if (targetUserId === '1107292307025301544' && typeArg !== '사회복무요원') {
|
||||||
typeArg = '사회복무요원';
|
typeArg = '사회복무요원';
|
||||||
logger.info(`User ID 1107292307025301544 type overridden to 사회복무요원.`);
|
logger.info(`User ID 1107292307025301544 type overridden to 사회복무요원.`);
|
||||||
}
|
}
|
||||||
|
|
||||||
ipdaeDatas[index].date = dateArg;
|
const finalData = await updateEnlistmentData(targetUserId, dateArg, typeArg);
|
||||||
ipdaeDatas[index].type = typeArg;
|
|
||||||
|
|
||||||
if (oldDate !== dateArg || oldType !== typeArg) {
|
|
||||||
logger.info(`Enlistment data changed for ${targetUserId}. Resetting their notification history.`);
|
|
||||||
notificationHistory[targetUserId] = [];
|
|
||||||
notificationHistoryModified = true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
binaryInsert(ipdaeDatas, { id: targetUserId, date: dateArg, type: typeArg });
|
|
||||||
notificationHistory[targetUserId] = [];
|
|
||||||
notificationHistoryModified = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
await saveData('ipdae');
|
|
||||||
if (notificationHistoryModified) {
|
|
||||||
await saveData('history');
|
|
||||||
}
|
|
||||||
|
|
||||||
const finalData = ipdaeDatas[binarySearch(ipdaeDatas, targetUserId)];
|
|
||||||
return new EmbedBuilder()
|
return new EmbedBuilder()
|
||||||
.setTitle(index !== -1 ? startDateEmbedTitle.replace('저장', '수정') : startDateEmbedTitle)
|
.setTitle(startDateEmbedTitle)
|
||||||
.addFields(
|
.addFields(
|
||||||
{ name: '입대일', value: dateFormatter(finalData.date) },
|
{ name: '입대일', value: dateFormatter(finalData.date) },
|
||||||
{ name: '복무 형태', value: finalData.type }
|
{ name: '복무 형태', value: finalData.type }
|
||||||
|
Reference in New Issue
Block a user