From 1ff7e96e502bf0eaa1bea2d5efdf625be354f106 Mon Sep 17 00:00:00 2001 From: space2lim Date: Mon, 10 Feb 2025 02:20:45 +0900 Subject: [PATCH] fix dcinside regex & US stock market alarm setting --- config/cronJobs.js | 8 +++--- events/messageCreate.js | 60 +++++++++++++---------------------------- 2 files changed, 22 insertions(+), 46 deletions(-) diff --git a/config/cronJobs.js b/config/cronJobs.js index 8ef4e10..836931e 100644 --- a/config/cronJobs.js +++ b/config/cronJobs.js @@ -10,14 +10,14 @@ export function initializeCronJobs(client) { if (channel) { const isDST = isDaylightSavingTime(); const dstMessage = isDST - ? '(서머타임 적용됨)' - : '(서머타임 적용되지 않음)'; + ? '(서머타임 적용)' + : '(서머타임 미적용)'; await channel.send(`미국 주식 시장이 열렸습니다. ${dstMessage}`); } }, null, true, 'Asia/Seoul'); - // 미국 주식 시장 폐장 시간 (월~금) - const closeTime = isDaylightSavingTime() ? '0 5 * * 1-5' : '0 6 * * 1-5'; + // 미국 주식 시장 폐장 시간 (월~금) → 한국 시간 화~토 새벽에 실행 + const closeTime = isDaylightSavingTime() ? '0 5 * * 2-6' : '0 6 * * 2-6'; const closeJob = new CronJob(closeTime, async () => { if (channel) { await channel.send('미국 주식 시장이 닫혔습니다.'); diff --git a/events/messageCreate.js b/events/messageCreate.js index 5c2432e..e02f579 100644 --- a/events/messageCreate.js +++ b/events/messageCreate.js @@ -10,53 +10,29 @@ export default async function messageCreateEvent(message) { // URL 감지 및 메타데이터 처리 - const mobileUrlPattern = /https?:\/\/m\.dcinside\.com\/board\/[^\s]+/g; - const normalUrlPattern = /https?:\/\/gall\.dcinside\.com\/mgallery\/board\/view\/\?id=[^&]+&no=\d+/g; + const dcinsideUrlPattern = /https?:\/\/(m\.)?gall\.dcinside\.com\/(mgallery\/)?board\/view\/\?id=[^&]+&no=\d+/g; + const detectedUrls = message.content.match(dcinsideUrlPattern); - const mobileUrls = message.content.match(mobileUrlPattern); - const normalUrls = message.content.match(normalUrlPattern); + if (detectedUrls && detectedUrls.length > 0) { + for (const url of detectedUrls) { + try { + const metaData = await getMetaData(url); // URL의 메타데이터 추출 - // 모바일 URL 처리 - if (mobileUrls && mobileUrls.length > 0) { - try { - const metaData = await getMetaData(mobileUrls[0]); // 첫 번째 모바일 URL 메타데이터 추출 + const embed = new EmbedBuilder() + .setColor(0x0099FF) + .setTitle(metaData.title || '제목 없음') + .setURL(url) + .setDescription(metaData.description || '설명 없음'); - const embed = new EmbedBuilder() - .setColor(0x0099FF) - .setTitle(metaData.title || '제목 없음') - .setURL(mobileUrls[0]) - .setDescription(metaData.description || '설명 없음'); + if (metaData.image) { + embed.setImage(metaData.image); + } - if (metaData.image) { - embed.setImage(metaData.image); + await message.channel.send({ embeds: [embed] }); + } catch (error) { + console.error(`DCInside URL 메타데이터 처리 중 오류:`, error.message); + await message.channel.send(`DCInside URL에서 메타데이터를 가져오는 중 오류가 발생했습니다.`); } - - await message.channel.send({ embeds: [embed] }); - } catch (error) { - console.error('모바일 URL 메타데이터 처리 중 오류:', error.message); - await message.channel.send('모바일 URL에서 메타데이터를 가져오는 중 오류가 발생했습니다.'); - } - } - - // 갤러리 URL 처리 - if (normalUrls && normalUrls.length > 0) { - try { - const metaData = await getMetaData(normalUrls[0]); // 첫 번째 갤러리 URL 메타데이터 추출 - - const embed = new EmbedBuilder() - .setColor(0x0099FF) - .setTitle(metaData.title || '제목 없음') - .setURL(normalUrls[0]) - .setDescription(metaData.description || '설명 없음'); - - if (metaData.image) { - embed.setImage(metaData.image); - } - - await message.channel.send({ embeds: [embed] }); - } catch (error) { - console.error('갤러리 URL 메타데이터 처리 중 오류:', error.message); - await message.channel.send('갤러리 URL에서 메타데이터를 가져오는 중 오류가 발생했습니다.'); } } } \ No newline at end of file