// /src/app/api/user/guilds/route.ts import { NextResponse } from 'next/server'; import { getServerSession } from 'next-auth'; import { authOptions } from '@/lib/auth'; // Your NextAuth configuration // Define types for the session and API response interface UserGuild { id: string; name: string; icon: string | null; owner: boolean; permissions: number; } interface ApiResponse { userGuilds: UserGuild[]; botGuilds: UserGuild[]; } export async function GET() { try { const session = await getServerSession(authOptions); console.log("Session:", session); // Log the session object if (!session || !session.user?.accessToken) { console.log("Unauthorized: No access token found"); return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } // Fetch the user's guilds from Discord const userGuildsResponse = await fetch('https://discord.com/api/v10/users/@me/guilds', { headers: { 'Authorization': `Bearer ${session.user.accessToken}`, }, }); console.log("User Guilds Response Status:", userGuildsResponse.status); // Log the response status if (!userGuildsResponse.ok) { throw new Error('Failed to fetch user guilds'); } const userGuilds = await userGuildsResponse.json(); // Fetch the bot's guilds from Discord const botGuildsResponse = await fetch('https://discord.com/api/v10/users/@me/guilds', { headers: { 'Authorization': `Bot ${process.env.DISCORD_BOT_TOKEN}`, // Replace with your bot token }, }); console.log("Bot Guilds Response Status:", botGuildsResponse.status); // Log the response status if (!botGuildsResponse.ok) { throw new Error('Failed to fetch bot guilds'); } const botGuilds = await botGuildsResponse.json(); const response: ApiResponse = { userGuilds, botGuilds, }; return NextResponse.json(response); } catch (error) { console.error('Error in API route:', error); return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 }); } }