MCPcopy Create free account
hub / github.com/Linen-dev/linen.dev / crawlUsers

Function crawlUsers

apps/web/services/discord/users.ts:41–75  ·  view source on GitHub ↗
({
  accountId,
  serverId,
  token,
  logger,
}: {
  accountId: string;
  serverId: string;
  token: string;
  logger: Logger;
})

Source from the content-addressed store, hash-verified

39}
40
41export async function crawlUsers({
42 accountId,
43 serverId,
44 token,
45 logger,
46}: {
47 accountId: string;
48 serverId: string;
49 token: string;
50 logger: Logger;
51}) {
52 logger.log({ crawlUsers: 'started' });
53 let hasMore = true;
54 let after;
55 do {
56 const [err, response] = await to(
57 DiscordApi.getDiscordUsers({ limit: LIMIT, serverId, token, after })
58 );
59 if (err) {
60 logger.error({ crawlUsers: err });
61 return;
62 }
63 const users = response as DiscordGuildMember[];
64 await Promise.all(
65 users.map((u) => parseUser(u, accountId)).map(UsersService.upsertUser)
66 );
67 logger.log({ usersFound: users.length });
68 if (users.length) {
69 after = users.pop()?.user?.id;
70 } else {
71 hasMore = false;
72 }
73 } while (hasMore);
74 logger.log({ crawlUsers: 'finished' });
75}
76
77const parseUser = (guildMember: DiscordGuildMember, accountId: string) => {
78 return {

Callers 1

syncJobFunction · 0.90

Calls 6

toFunction · 0.85
getDiscordUsersMethod · 0.80
mapMethod · 0.80
parseUserFunction · 0.70
logMethod · 0.65
errorMethod · 0.65

Tested by

no test coverage detected