From 100039b1bd35f8a8799d88e9713522b1ee3ddc6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dorian=20Oszcz=C4=99da?= Date: Wed, 21 Feb 2024 14:20:23 +0000 Subject: [PATCH] feat: Add voice state to the desired properties object. (#3424) * feat: Add voice state to the desired properties object. * chore: Remove unnecessary check. --- packages/bot/src/transformers.ts | 16 ++++++++++++++++ packages/bot/src/transformers/voiceState.ts | 18 +++++++++--------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/packages/bot/src/transformers.ts b/packages/bot/src/transformers.ts index dfbcc8190..93e90c731 100644 --- a/packages/bot/src/transformers.ts +++ b/packages/bot/src/transformers.ts @@ -498,6 +498,14 @@ export interface Transformers { slug: boolean flags: boolean } + voiceState: { + requestToSpeakTimestamp: boolean + channelId: boolean + guildId: boolean + toggles: boolean + sessionId: boolean + userId: boolean + } } reverse: { allowedMentions: (bot: Bot, payload: AllowedMentions) => DiscordAllowedMentions @@ -1041,6 +1049,14 @@ export function createTransformers(options: Partial, opts?: Create slug: opts?.defaultDesiredPropertiesValue ?? false, flags: opts?.defaultDesiredPropertiesValue ?? false, }, + voiceState: { + requestToSpeakTimestamp: opts?.defaultDesiredPropertiesValue ?? false, + channelId: opts?.defaultDesiredPropertiesValue ?? false, + guildId: opts?.defaultDesiredPropertiesValue ?? false, + toggles: opts?.defaultDesiredPropertiesValue ?? false, + sessionId: opts?.defaultDesiredPropertiesValue ?? false, + userId: opts?.defaultDesiredPropertiesValue ?? false, + }, }, reverse: { allowedMentions: options.reverse?.allowedMentions ?? transformAllowedMentionsToDiscordAllowedMentions, diff --git a/packages/bot/src/transformers/voiceState.ts b/packages/bot/src/transformers/voiceState.ts index ae64f394e..ac0d8f9aa 100644 --- a/packages/bot/src/transformers/voiceState.ts +++ b/packages/bot/src/transformers/voiceState.ts @@ -3,16 +3,16 @@ import type { Bot } from '../index.js' import { VoiceStateToggles } from './toggles/voice.js' export function transformVoiceState(bot: Bot, payload: { voiceState: DiscordVoiceState } & { guildId: bigint }): VoiceState { - const voiceState = { - toggles: new VoiceStateToggles(payload.voiceState), + const props = bot.transformers.desiredProperties.voiceState + const voiceState = {} as VoiceState - requestToSpeakTimestamp: payload.voiceState.request_to_speak_timestamp ? Date.parse(payload.voiceState.request_to_speak_timestamp) : undefined, - sessionId: payload.voiceState.session_id, - - channelId: payload.voiceState.channel_id ? bot.transformers.snowflake(payload.voiceState.channel_id) : undefined, - guildId: payload.guildId || (payload.voiceState.guild_id ? bot.transformers.snowflake(payload.voiceState.guild_id) : 0n), - userId: payload.voiceState.user_id ? bot.transformers.snowflake(payload.voiceState.user_id) : 0n, - } as VoiceState + if (props.requestToSpeakTimestamp && payload.voiceState.request_to_speak_timestamp) + voiceState.requestToSpeakTimestamp = Date.parse(payload.voiceState.request_to_speak_timestamp) + if (props.channelId && payload.voiceState.channel_id) voiceState.channelId = bot.transformers.snowflake(payload.voiceState.channel_id) + if (props.guildId) voiceState.guildId = payload.guildId + if (props.toggles) voiceState.toggles = new VoiceStateToggles(payload.voiceState) + if (props.sessionId) voiceState.sessionId = payload.voiceState.session_id + if (props.userId && payload.voiceState.user_id) voiceState.userId = bot.transformers.snowflake(payload.voiceState.user_id) ?? 0n return bot.transformers.customizers.voiceState(bot, payload.voiceState, voiceState) }