Files
web_6ea_educo/site5/.output/server/chunks/routes/api/consult.post.mjs
T
2026-10-07 11:08:05 +09:00

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