public function index() { $user = Auth::user(); $cacheKey = 'user_' . $user->id . '_guilds_with_bot_presence'; $filteredGuilds = Cache::remember($cacheKey, now()->addMinutes(5), function () use ($user) { $response = Http::withToken($user->access_token) ->retry(3, 250) ->get('https://discord.com/api/v10/users/@me/guilds'); if ($response->failed()) { Log::error('Failed to fetch user guilds', [ 'user_id' => $user->id, 'status' => $response->status(), 'body' => $response->body(), ]); abort(403, 'Cant fetch user guilds'); } $userGuilds = collect($response->json())->filter(function ($guild) { $permissions = (int) $guild['permissions']; return $guild['owner'] === true || ($permissions & 0x20) || ($permissions & 0x8); }); $botGuildsResponse = Http::withHeaders([ 'Authorization' => 'Bot ' . env('DISCORD_BOT_TOKEN'), ])->retry(3, 250)->get('https://discord.com/api/v10/users/@me/guilds'); if ($botGuildsResponse->failed()) { Log::error('Failed to fetch bot guilds', [ 'status' => $botGuildsResponse->status(), 'body' => $botGuildsResponse->body(), ]); abort(403, 'Kan botservers niet ophalen'); } $botGuilds = collect($botGuildsResponse->json())->keyBy('id'); return $userGuilds->map(function ($guild) use ($botGuilds) { $guild['bot_in_guild'] = $botGuilds->has($guild['id']); return $guild; }); }); return Inertia::render('Servers/Index', compact('filteredGuilds')); }