diff --git a/src/structures/guildVoiceChannel.ts b/src/structures/guildVoiceChannel.ts index 0f2764a..759fb71 100644 --- a/src/structures/guildVoiceChannel.ts +++ b/src/structures/guildVoiceChannel.ts @@ -11,6 +11,8 @@ import { GuildChannel } from './channel.ts' import { Guild } from './guild.ts' import { VoiceState } from './voiceState.ts' import { GuildChannelVoiceStatesManager } from '../managers/guildChannelVoiceStates.ts' +import { User } from './user.ts' +import { Member } from './member.ts' export interface VoiceServerData extends VoiceServerUpdateData { sessionID: string @@ -113,4 +115,25 @@ export class VoiceChannel extends GuildChannel { return new VoiceChannel(this.client, resp, this.guild) } + + async disconnectMember( + member: User | Member | string + ): Promise { + const memberID = typeof member === 'string' ? member : member.id + const memberVoiceState = await this.voiceStates.get(memberID) + + return memberVoiceState?.disconnect() + } + + async disconnectAll(): Promise { + const members: Member[] = [] + for await (const memberVoiceState of this.voiceStates) { + const member = await memberVoiceState.disconnect() + if (member !== undefined) { + members.push(member) + } + } + + return members + } }