Compare commits
2 Commits
aedc3d5ac4
...
03e12861df
| Author | SHA1 | Date |
|---|---|---|
|
|
03e12861df | |
|
|
31f04afd8b |
|
|
@ -4,20 +4,20 @@ import { isDaylightSavingTime } from '../feature/utility.js';
|
||||||
export function initializeCronJobs(client) {
|
export function initializeCronJobs(client) {
|
||||||
const channel = client.channels.cache.get(process.env.CH_FINANCE);
|
const channel = client.channels.cache.get(process.env.CH_FINANCE);
|
||||||
|
|
||||||
// 미국 주식 시장 개장 시간
|
// 미국 주식 시장 개장 시간 (월~금)
|
||||||
const openTime = isDaylightSavingTime() ? '30 22 * * *' : '30 23 * * *';
|
const openTime = isDaylightSavingTime() ? '30 22 * * 1-5' : '30 23 * * 1-5';
|
||||||
const openJob = new CronJob(openTime, async () => {
|
const openJob = new CronJob(openTime, async () => {
|
||||||
if (channel) {
|
if (channel) {
|
||||||
const isDST = isDaylightSavingTime();
|
const isDST = isDaylightSavingTime();
|
||||||
const dstMessage = isDST
|
const dstMessage = isDST
|
||||||
? '현재 서머타임이 적용 중입니다.'
|
? '(서머타임 적용됨)'
|
||||||
: '현재 서머타임이 적용되지 않았습니다.';
|
: '(서머타임 적용되지 않음)';
|
||||||
await channel.send(`미국 주식 시장이 열렸습니다.\n${dstMessage}`);
|
await channel.send(`미국 주식 시장이 열렸습니다. ${dstMessage}`);
|
||||||
}
|
}
|
||||||
}, null, true, 'Asia/Seoul');
|
}, null, true, 'Asia/Seoul');
|
||||||
|
|
||||||
// 미국 주식 시장 폐장 시간
|
// 미국 주식 시장 폐장 시간 (월~금)
|
||||||
const closeTime = isDaylightSavingTime() ? '0 5 * * *' : '0 6 * * *';
|
const closeTime = isDaylightSavingTime() ? '0 5 * * 1-5' : '0 6 * * 1-5';
|
||||||
const closeJob = new CronJob(closeTime, async () => {
|
const closeJob = new CronJob(closeTime, async () => {
|
||||||
if (channel) {
|
if (channel) {
|
||||||
await channel.send('미국 주식 시장이 닫혔습니다.');
|
await channel.send('미국 주식 시장이 닫혔습니다.');
|
||||||
|
|
|
||||||
|
|
@ -10,31 +10,53 @@ export default async function messageCreateEvent(message) {
|
||||||
|
|
||||||
|
|
||||||
// URL 감지 및 메타데이터 처리
|
// URL 감지 및 메타데이터 처리
|
||||||
const urlPattern = /https?:\/\/(www\.)?(m\.)?gall\.dcinside\.com\/(mgallery\/board\/view\/\?id=[^&]+&no=\d+|board\/[^\s]+)/g;
|
const mobileUrlPattern = /https?:\/\/m\.dcinside\.com\/board\/[^\s]+/g;
|
||||||
const urls = message.content.match(urlPattern);
|
const normalUrlPattern = /https?:\/\/gall\.dcinside\.com\/mgallery\/board\/view\/\?id=[^&]+&no=\d+/g;
|
||||||
|
|
||||||
if (urls && urls.length > 0) {
|
const mobileUrls = message.content.match(mobileUrlPattern);
|
||||||
|
const normalUrls = message.content.match(normalUrlPattern);
|
||||||
|
|
||||||
|
// 모바일 URL 처리
|
||||||
|
if (mobileUrls && mobileUrls.length > 0) {
|
||||||
try {
|
try {
|
||||||
// 첫 번째 URL의 메타데이터 추출
|
const metaData = await getMetaData(mobileUrls[0]); // 첫 번째 모바일 URL 메타데이터 추출
|
||||||
const metaData = await getMetaData(urls[0]);
|
|
||||||
|
|
||||||
// Embed 메시지 생성
|
|
||||||
const embed = new EmbedBuilder()
|
const embed = new EmbedBuilder()
|
||||||
.setColor(0x0099FF)
|
.setColor(0x0099FF)
|
||||||
.setTitle(metaData.title || '제목 없음')
|
.setTitle(metaData.title || '제목 없음')
|
||||||
.setURL(urls[0])
|
.setURL(mobileUrls[0])
|
||||||
.setDescription(metaData.description || '설명 없음');
|
.setDescription(metaData.description || '설명 없음');
|
||||||
|
|
||||||
// 이미지가 있을 경우에만 추가
|
|
||||||
if (metaData.image) {
|
if (metaData.image) {
|
||||||
embed.setImage(metaData.image);
|
embed.setImage(metaData.image);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 메시지 채널에 Embed 전송
|
|
||||||
await message.channel.send({ embeds: [embed] });
|
await message.channel.send({ embeds: [embed] });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('메타데이터 처리 중 오류:', error.message);
|
console.error('모바일 URL 메타데이터 처리 중 오류:', error.message);
|
||||||
await message.channel.send('URL에서 메타데이터를 가져오는 중 오류가 발생했습니다.');
|
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에서 메타데이터를 가져오는 중 오류가 발생했습니다.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue