all repos — stealth-developers @ d198bbf452eb549845999f475e608f713fe774df

apps/migration/src/fetch-users.ts (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
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));