summary refs log tree commit diff
path: root/src/api
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-03-21 16:22:06 +0100
committerRory& <root@rory.gay>2026-03-21 16:22:06 +0100
commit47e782ad62c3562a094b548c4cf9033b8f75c5cd (patch)
tree1bb738dd5eb380925e0127f32473579f042e89a4 /src/api
parentadd channel status migration (diff)
downloadserver-ts-47e782ad62c3562a094b548c4cf9033b8f75c5cd.tar.xz
Fix voice state query trying to include member
Diffstat (limited to 'src/api')
-rw-r--r--src/api/routes/guilds/#guild_id/voice-states/#user_id/index.ts22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/api/routes/guilds/#guild_id/voice-states/#user_id/index.ts b/src/api/routes/guilds/#guild_id/voice-states/#user_id/index.ts

index 3b310325..ba801298 100644 --- a/src/api/routes/guilds/#guild_id/voice-states/#user_id/index.ts +++ b/src/api/routes/guilds/#guild_id/voice-states/#user_id/index.ts
@@ -17,7 +17,7 @@ */ import { route } from "@spacebar/api"; -import { Channel, DiscordApiErrors, emitEvent, getPermission, VoiceState, VoiceStateUpdateEvent } from "@spacebar/util"; +import { Channel, DiscordApiErrors, emitEvent, getPermission, Member, VoiceState, VoiceStateUpdateEvent } from "@spacebar/util"; import { Request, Response, Router } from "express"; import { ChannelType, VoiceStateUpdateSchema } from "@spacebar/schemas"; @@ -59,17 +59,16 @@ router.patch( if (!body.suppress) body.request_to_speak_timestamp = new Date(); if (body.request_to_speak_timestamp) perms.hasThrow("REQUEST_TO_SPEAK"); - const voice_state = await VoiceState.findOne({ + const voiceState = await VoiceState.findOne({ where: { guild_id, channel_id: body.channel_id, user_id, }, - relations: { member: true }, }); - if (!voice_state) throw DiscordApiErrors.UNKNOWN_VOICE_STATE; + if (!voiceState) throw DiscordApiErrors.UNKNOWN_VOICE_STATE; - voice_state.assign(body); + voiceState.assign(body); const channel = await Channel.findOneOrFail({ where: { guild_id, id: body.channel_id }, }); @@ -77,13 +76,20 @@ router.patch( throw DiscordApiErrors.CANNOT_EXECUTE_ON_THIS_CHANNEL_TYPE; } + voiceState.member = await Member.findOneOrFail({ + where: { + id: voiceState.user_id, + guild_id: voiceState.guild_id, + }, + }); + await Promise.all([ - voice_state.save(), + voiceState.save(), emitEvent({ event: "VOICE_STATE_UPDATE", data: { - ...voice_state.toPublicVoiceState(), - member: voice_state.member.toPublicMember(), + ...voiceState.toPublicVoiceState(), + member: voiceState.member.toPublicMember(), }, guild_id, } satisfies VoiceStateUpdateEvent),