From db90af4fc908cf2193c6bfefafaca7769bfc00af Mon Sep 17 00:00:00 2001 From: Yuzu Date: Sun, 31 Jul 2022 14:15:45 -0500 Subject: [PATCH] =?UTF-8?q?feat:=20add=20voice=20events=20=F0=9F=8E=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/src/adapters/events.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/core/src/adapters/events.ts b/packages/core/src/adapters/events.ts index 883467b..60033a2 100644 --- a/packages/core/src/adapters/events.ts +++ b/packages/core/src/adapters/events.ts @@ -38,6 +38,8 @@ import type { DiscordTypingStart, DiscordUser, DiscordWebhookUpdate, + DiscordVoiceState, + DiscordVoiceServerUpdate, } from '@biscuitland/api-types'; import type { Session } from '../biscuit'; @@ -660,6 +662,19 @@ export const GUILD_SCHEDULED_EVENT_USER_REMOVE: RawHandler< }); }; +export const VOICE_STATE_UPDATE: RawHandler = (session, _shardId, payload) => { + if (!payload.guild_id) return; + session.events.emit('voiceStateUpdate', payload); +}; + +export const VOICE_SERVER_UPDATE: RawHandler = (session, _shardId, payload) => { + session.events.emit('voiceServerUpdate', { + token: payload.token, + guildId: payload.guild_id, + endpoint: payload.endpoint ? payload.endpoint : undefined + }); +}; + export const raw: RawHandler = (session, shardId, data) => { session.events.emit('raw', data as { t: string; d: unknown }, shardId); }; @@ -788,4 +803,8 @@ export interface Events { userUpdate: Handler<[User]>; presenceUpdate: Handler<[Presence]>; debug: Handler<[string]>; + voiceStateUpdate: Handler<[DiscordVoiceState]>; + voiceServerUpdate: Handler< + [{ token: string, guildId: Snowflake, endpoint?: string }] + >; }