import { RESTClient } from "@purrkit/rest"; import fs from "node:fs"; const TOKEN = process.env.TOKEN!; const GUILD_ID = process.env.GUILD_ID!; const rest = RESTClient({ token: TOKEN, }); let lastUserId: number | undefined; const allMembers: unknown[] = []; while (true) { const response = await rest.guilds(GUILD_ID).members.get({ query: { limit: 1000, after: lastUserId, }, }); if (!response.ok || response.data.length === 0) { console.log(JSON.stringify(response.data)); break; } lastUserId = response.data[response.data.length - 1]!.user.id; fs.writeFileSync(`members/members.${lastUserId}.json`, JSON.stringify(response.data)); allMembers.push(...response.data); console.log( `fetched ${response.data.length} members page (total ${allMembers.length + response.data.length})`, ); if (response.data.length < 1000) break; } fs.writeFileSync(`members/members.json`, JSON.stringify(allMembers));