diff --git "a/src/api/routes/guilds/\043guild_id/widget.json.ts" "b/src/api/routes/guilds/\043guild_id/widget.json.ts" index 5561aa9..6827c7f 100644 --- "a/src/api/routes/guilds/\043guild_id/widget.json.ts" +++ "b/src/api/routes/guilds/\043guild_id/widget.json.ts" @@ -31,8 +31,6 @@ // members (max 100 returned) is a sample of all members, and bots par invisible status, there exists some alphabetical distribution pattern between the members returned // https://discord.com/developers/docs/resources/guild#get-guild-widget -// TODO: Cache the response for a guild for 5 minutes regardless of response - const expiryTime = 1000 * 60 * 5; // 5 minutes const jsonDataCache = new Map; expiry: Date }>(); @@ -127,20 +125,22 @@ const members = await Member.find({ where: { guild_id: guild_id }, relations: { user: { sessions: true } } }); const minLastSeen = Date.now() - 1000 * 60 * 5; const onlineMembers = members.filter((m) => m.user.sessions.filter((s) => (s.last_seen?.getTime() ?? 0) > minLastSeen).length > 0); - const memberData = onlineMembers.map((x) => { - return { - id: x.id, - username: x.user.username, - discriminator: x.user.discriminator, - avatar: null, - status: "online", // TODO - avatar_url: x.avatar - ? `${Config.get().cdn.endpointPublic}/guilds/${guild_id}/users/${x.id}/avatars/${x.avatar}.png` - : x.user.avatar - ? `${Config.get().cdn.endpointPublic}/avatars/${x.id}/${x.user.avatar}.png` - : `${Config.get().cdn.endpointPublic}/embed/avatars/${BigInt(x.id) % 6n}.png`, - }; - }); + const memberData = onlineMembers + .map((x) => { + return { + id: x.id, + username: x.user.username, + discriminator: x.user.discriminator, + avatar: null, + status: "online", // TODO + avatar_url: x.avatar + ? `${Config.get().cdn.endpointPublic}/guilds/${guild_id}/users/${x.id}/avatars/${x.avatar}.png` + : x.user.avatar + ? `${Config.get().cdn.endpointPublic}/avatars/${x.id}/${x.user.avatar}.png` + : `${Config.get().cdn.endpointPublic}/embed/avatars/${BigInt(x.id) % 6n}.png`, + }; + }) + .sort((a, b) => Number(BigInt(a.id) - BigInt(b.id))); // Construct object to respond with return {