Handle offline members group in LazyRequest

This commit is contained in:
Madeline 2022-07-03 15:39:00 +10:00
parent 13a399cb59
commit c9a33ce173

View File

@ -42,6 +42,8 @@ async function getMembers(guild_id: string, range: [number, number]) {
.flat() .flat()
.unique((r: Role) => r.id); .unique((r: Role) => r.id);
const offlineMembers = [];
for (const role of member_roles) { for (const role of member_roles) {
// @ts-ignore // @ts-ignore
const [role_members, other_members] = partition(members, (m: Member) => const [role_members, other_members] = partition(members, (m: Member) =>
@ -56,6 +58,12 @@ async function getMembers(guild_id: string, range: [number, number]) {
groups.push(group); groups.push(group);
for (const member of role_members) { for (const member of role_members) {
if (!member?.user?.sessions || !member.user.sessions.length) {
offlineMembers.push(member);
group.count--;
continue;
}
const roles = member.roles const roles = member.roles
.filter((x: Role) => x.id !== guild_id) .filter((x: Role) => x.id !== guild_id)
.map((x: Role) => x.id); .map((x: Role) => x.id);
@ -79,6 +87,38 @@ async function getMembers(guild_id: string, range: [number, number]) {
members = other_members; members = other_members;
} }
if (offlineMembers.length) {
const group = {
count: offlineMembers.length,
id: "offline",
};
items.push({ group });
groups.push(group);
for (var member of offlineMembers) {
const roles = member.roles
.filter((x: Role) => x.id !== guild_id)
.map((x: Role) => x.id);
const session = member.user.sessions.first();
items.push({
member: {
...member,
roles,
user: { ...member.user, sessions: undefined },
presence: {
...session,
activities: session?.activities || [],
user: { id: member.user.id },
}
}
})
}
}
console.log(items, groups, range, members);
return { return {
items, items,
groups, groups,