summary refs log tree commit diff
path: root/src/gateway/opcodes/RequestGuildMembers.ts
diff options
context:
space:
mode:
authorTomatoCake <60300461+DEVTomatoCake@users.noreply.github.com>2024-08-11 06:40:42 +0200
committerTomatoCake <60300461+DEVTomatoCake@users.noreply.github.com>2024-08-11 06:40:42 +0200
commitea3047890bf06dfe8b2de470f5b17ca9f40c1921 (patch)
tree4dc89ee10702a7b91af9ff14f3b6150669cff88b /src/gateway/opcodes/RequestGuildMembers.ts
parentFix chunk_count & not_found (diff)
downloadserver-ts-ea3047890bf06dfe8b2de470f5b17ca9f40c1921.tar.xz
Fix issues with requesting presences
Diffstat (limited to 'src/gateway/opcodes/RequestGuildMembers.ts')
-rw-r--r--src/gateway/opcodes/RequestGuildMembers.ts17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/gateway/opcodes/RequestGuildMembers.ts b/src/gateway/opcodes/RequestGuildMembers.ts

index 8934377d..9a966752 100644 --- a/src/gateway/opcodes/RequestGuildMembers.ts +++ b/src/gateway/opcodes/RequestGuildMembers.ts
@@ -22,6 +22,7 @@ import { Member, Presence, RequestGuildMembersSchema, + Session, } from "@spacebar/util"; import { WebSocket, Payload, OPCODES, Send } from "@spacebar/gateway"; import { check } from "./instanceOf"; @@ -63,7 +64,7 @@ export async function onRequestGuildMembers(this: WebSocket, { d }: Payload) { ...whereQuery, guild_id, }, - relations: ["roles", ...(presences ? ["presence"] : [])], + relations: ["users", "roles"], }; if (limit) memberFind.take = Math.abs(Number(limit || 100)); const members = await Member.find(memberFind); @@ -83,13 +84,21 @@ export async function onRequestGuildMembers(this: WebSocket, { d }: Payload) { const chunks: GuildMembersChunkEvent["data"][] = []; while (members.length > 0) { - const chunk = members.splice(0, 1000); + const chunk: Member[] = members.splice(0, 1000); const presenceList: Presence[] = []; if (presences) { for await (const member of chunk) { - presenceList.push(member.presence); - delete member.presence; + const session = await Session.findOne({ + where: { user_id: member.id }, + }); + if (session) + presenceList.push({ + user: member.user.toPublicUser(), + status: session.status, + activities: session.activities, + client_status: session.client_status, + }); } }