import { NextRequest, NextResponse } from 'next/server'; import FormData from 'form-data'; import fetch from 'node-fetch'; export async function POST(req: NextRequest) { try { const { image, customMessage } = await req.json(); if (!image) { return NextResponse.json( { message: 'No image provided.' }, { status: 400 } ); } const webhookUrl = process.env.DISCORD_TEAM_WEBHOOK_URL; if (!webhookUrl) { console.error('Discord webhook URL is not set in environment variables.'); return NextResponse.json( { message: 'Server error: Discord webhook URL is not configured.' }, { status: 500 } ); } // 1) Strip out the base64 prefix const base64Data = image.replace(/^data:image\/\w+;base64,/, ''); const buffer = Buffer.from(base64Data, 'base64'); // 2) Prepare form data const form = new FormData(); form.append('file', buffer, { filename: 'schedule.png', contentType: 'image/png' }); // Set a default or custom message const messageContent = customMessage || 'Here is the weekly schedule!'; form.append( 'payload_json', JSON.stringify({ content: messageContent, username: 'Schedule Bot', // Optional: Set the username avatar_url: 'https://www.vkashti.bar/logo.png' // Optional: Set the avatar }) ); // 3) Configure headers manually const headers = form.getHeaders(); // 4) Send the POST request to Discord const discordRes = await fetch(webhookUrl, { method: 'POST', headers, body: form }); if (!discordRes.ok) { const errorText = await discordRes.text(); console.error('Discord response error:', errorText); return NextResponse.json( { message: 'Discord webhook responded with an error.', error: errorText }, { status: 500 } ); } return NextResponse.json({ message: 'Screenshot sent successfully!' }); } catch (error) { console.error('Server error:', error); const errorMessage = error instanceof Error ? error.message : 'Unknown error'; return NextResponse.json( { message: 'Server error.', error: errorMessage }, { status: 500 } ); } }