150 lines
4.9 KiB
JavaScript
150 lines
4.9 KiB
JavaScript
import { c as defineEventHandler, u as useRuntimeConfig, r as readBody, e as createError } from '../../_/nitro.mjs';
|
|
import 'unhead/server';
|
|
import 'vue';
|
|
import 'unhead/legacy';
|
|
import 'unhead/plugins';
|
|
import 'node:http';
|
|
import 'node:https';
|
|
import 'node:events';
|
|
import 'node:buffer';
|
|
import 'node:fs';
|
|
import 'node:path';
|
|
import 'node:crypto';
|
|
import 'node:url';
|
|
|
|
const consult_post = defineEventHandler(async (event) => {
|
|
const config = useRuntimeConfig();
|
|
const body = await readBody(event);
|
|
const {
|
|
studentName,
|
|
parentPhone,
|
|
name,
|
|
phone,
|
|
schoolName,
|
|
grade,
|
|
location,
|
|
regionName,
|
|
memo,
|
|
url
|
|
} = body || {};
|
|
const finalStudentName = studentName || name || "\uBBF8\uAE30\uC7AC";
|
|
const finalParentPhone = parentPhone || phone || "";
|
|
const finalLocation = location || regionName || "\uBBF8\uAE30\uC7AC";
|
|
const finalGrade = grade || "\uBBF8\uC9C0\uC815";
|
|
const finalSchool = schoolName || "\uBBF8\uAE30\uC7AC";
|
|
if (!finalParentPhone) {
|
|
throw createError({
|
|
statusCode: 400,
|
|
statusMessage: "\uBD80\uBAA8\uB2D8 \uC5F0\uB77D\uCC98\uB97C \uC62C\uBC14\uB974\uAC8C \uC785\uB825\uD574\uC8FC\uC138\uC694."
|
|
});
|
|
}
|
|
const webhookUrl = config.discordWebhookUrl || "https://discordapp.com/api/webhooks/1557204310369116210/9J4y96kmSbYNGtw5OxRgIz7InWcM8o3f8UX0Ad71-IyofwdS7tWmXkF7dj457-I8Ypiu";
|
|
const siteName = config.public.siteName || "1:1 \uB9DE\uCDA4\uACFC\uC678";
|
|
const siteDomain = config.public.siteDomain || "https://aeseo.cloud";
|
|
const now = /* @__PURE__ */ new Date();
|
|
const kstTime = new Intl.DateTimeFormat("ko-KR", {
|
|
timeZone: "Asia/Seoul",
|
|
year: "numeric",
|
|
month: "2-digit",
|
|
day: "2-digit",
|
|
hour: "2-digit",
|
|
minute: "2-digit",
|
|
second: "2-digit",
|
|
hour12: false
|
|
}).format(now);
|
|
const discordPayload = {
|
|
username: `${siteName} \uC0C1\uB2F4 \uC54C\uB9BC \uBD07`,
|
|
avatar_url: "https://cdn-icons-png.flaticon.com/512/2997/2997295.png",
|
|
embeds: [
|
|
{
|
|
title: `[\uC2E0\uADDC \uBB34\uB8CC \uC0C1\uB2F4 \uC2E0\uCCAD \uC811\uC218] ${finalLocation} - ${finalGrade} (${finalStudentName} \uD559\uC0DD)`,
|
|
description: `**${siteName}** \uC0AC\uC774\uD2B8\uC5D0\uC11C \uC0C8\uB85C\uC6B4 1:1 \uD559\uC2B5 \uC0C1\uB2F4 \uC2E0\uCCAD\uC774 \uC811\uC218\uB418\uC5C8\uC2B5\uB2C8\uB2E4.`,
|
|
color: 10033947,
|
|
// 신뢰감 있는 딥 레드/네이비
|
|
fields: [
|
|
{
|
|
name: "[\uC811\uC218 \uC0AC\uC774\uD2B8]",
|
|
value: `**${siteName}**
|
|
${siteDomain}`,
|
|
inline: true
|
|
},
|
|
{
|
|
name: "[\uC0AC\uB294 \uACF3]",
|
|
value: finalLocation,
|
|
inline: true
|
|
},
|
|
{
|
|
name: "[\uD559\uC0DD \uC774\uB984]",
|
|
value: `**${finalStudentName}**`,
|
|
inline: true
|
|
},
|
|
{
|
|
name: "[\uBD80\uBAA8\uB2D8 \uC5F0\uB77D\uCC98]",
|
|
value: `**${finalParentPhone}**`,
|
|
inline: true
|
|
},
|
|
{
|
|
name: "[\uB2E4\uB2C8\uB294 \uD559\uAD50]",
|
|
value: finalSchool,
|
|
inline: true
|
|
},
|
|
{
|
|
name: "[\uD559\uB144]",
|
|
value: finalGrade,
|
|
inline: true
|
|
},
|
|
{
|
|
name: "[\uC811\uC218 \uC77C\uC2DC (KST)]",
|
|
value: kstTime,
|
|
inline: true
|
|
},
|
|
{
|
|
name: "[\uC720\uC785 \uD398\uC774\uC9C0 URL]",
|
|
value: url ? `${url}` : `${siteDomain}`,
|
|
inline: false
|
|
},
|
|
{
|
|
name: "[\uC0C1\uB2F4\uBB38\uC758 \uB0B4\uC6A9 (\uC120\uD0DD)]",
|
|
value: memo && memo.trim() ? memo.trim() : "\uC785\uB825\uB41C \uC0C1\uC138 \uBB38\uC758 \uB0B4\uC6A9 \uC5C6\uC74C",
|
|
inline: false
|
|
}
|
|
],
|
|
footer: {
|
|
text: `${siteName} \uC2E4\uC2DC\uAC04 \uC0C1\uB2F4 \uC54C\uB9BC \uC2DC\uC2A4\uD15C`
|
|
},
|
|
timestamp: now.toISOString()
|
|
}
|
|
]
|
|
};
|
|
try {
|
|
const res = await fetch(webhookUrl, {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json"
|
|
},
|
|
body: JSON.stringify(discordPayload)
|
|
});
|
|
if (!res.ok) {
|
|
const errText = await res.text();
|
|
console.error("[Discord Webhook Error]:", res.status, errText);
|
|
return {
|
|
success: false,
|
|
message: "\uB514\uC2A4\uCF54\uB4DC \uC804\uC1A1 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4."
|
|
};
|
|
}
|
|
return {
|
|
success: true,
|
|
message: "\uC0C1\uB2F4 \uC2E0\uCCAD\uC774 \uC815\uC0C1\uC801\uC73C\uB85C \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4."
|
|
};
|
|
} catch (err) {
|
|
console.error("[Consult Submission Error]:", err.message);
|
|
return {
|
|
success: false,
|
|
message: "\uC11C\uBC84 \uC624\uB958\uB85C \uC778\uD574 \uC804\uC1A1\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4."
|
|
};
|
|
}
|
|
});
|
|
|
|
export { consult_post as default };
|
|
//# sourceMappingURL=consult.post.mjs.map
|