Files
sitemente/app/api/eod/route.ts
T
2026-02-27 22:43:46 +01:00

86 lines
2.4 KiB
TypeScript

import { NextRequest, NextResponse } from "next/server";
import fs from "fs";
import path from "path";
const STORAGE_FILE = path.join(process.cwd(), "data", "eod_briefs.json");
const DISCORD_BOT_TOKEN = process.env.DISCORD_BOT_TOKEN || "MTQ3MTk4OTUzNjE1MzQwMzU5Nw.Ghtj4n.g-tl-Ijhfn9cg6zUCUIVd94EdwL32KmlVgRoSc";
const EOD_CHANNEL = "1476344633406656785";
function ensureStorage() {
const dir = path.dirname(STORAGE_FILE);
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, { recursive: true });
}
if (!fs.existsSync(STORAGE_FILE)) {
fs.writeFileSync(STORAGE_FILE, "[]");
}
}
function getBriefs() {
ensureStorage();
return JSON.parse(fs.readFileSync(STORAGE_FILE, "utf-8"));
}
function saveBriefs(data: any[]) {
ensureStorage();
fs.writeFileSync(STORAGE_FILE, JSON.stringify(data, null, 2));
}
function formatEODBrief(data: any): string {
return `🌙 END OF DAY - ${data.date || new Date().toISOString().split('T')[0]}
✅ COMPLETED TODAY
${(data.completed || []).map((c: string) => `- ${c}`).join('\n')}
📊 PROGRESS
${Object.entries(data.progress || {}).map(([k, v]) => `${k}: ${v}`).join('\n')}
🧠 COUNCIL
${Object.entries(data.council || {}).map(([k, v]) => `- ${k}: ${v}`).join('\n')}
🎯 TOMORROW
${(data.tomorrow || []).map((t: string) => `- ${t}`).join('\n')}`;
}
export async function GET() {
const briefs = getBriefs();
return NextResponse.json(briefs);
}
export async function POST(request: NextRequest) {
try {
const body = await request.json();
const brief = {
id: `eod-${Date.now()}`,
date: body.date || new Date().toISOString().split('T')[0],
completed: body.completed || [],
progress: body.progress || {},
council: body.council || {},
tomorrow: body.tomorrow || [],
created_at: new Date().toISOString()
};
const briefs = getBriefs();
briefs.unshift(brief);
saveBriefs(briefs);
// Send to Discord
const discordMessage = formatEODBrief(body);
await fetch(`https://discord.com/api/v10/channels/${EOD_CHANNEL}/messages`, {
method: "POST",
headers: {
"Authorization": `Bot ${DISCORD_BOT_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ content: discordMessage }),
});
return NextResponse.json({ success: true, brief });
} catch (error) {
console.error("EOD brief error:", error);
return NextResponse.json({ error: "Failed to save brief" }, { status: 500 });
}
}