import type { JoinConfig } from './DataStore'; import { createVoiceConnection } from './VoiceConnection'; import type { DiscordGatewayAdapterCreator } from './util/adapter'; /** * The options that can be given when creating a voice connection. */ export interface CreateVoiceConnectionOptions { adapterCreator: DiscordGatewayAdapterCreator; /** * If true, debug messages will be enabled for the voice connection and its * related components. Defaults to false. */ debug?: boolean | undefined; } /** * The options that can be given when joining a voice channel. */ export interface JoinVoiceChannelOptions { /** * The id of the Discord voice channel to join. */ channelId: string; /** * An optional group identifier for the voice connection. */ group?: string; /** * The id of the guild that the voice channel belongs to. */ guildId: string; /** * Whether to join the channel deafened (defaults to true) */ selfDeaf?: boolean; /** * Whether to join the channel muted (defaults to true) */ selfMute?: boolean; } /** * Creates a VoiceConnection to a Discord voice channel. * * @param options - the options for joining the voice channel */ export function joinVoiceChannel(options: CreateVoiceConnectionOptions & JoinVoiceChannelOptions) { const joinConfig: JoinConfig = { selfDeaf: true, selfMute: false, group: 'default', ...options, }; return createVoiceConnection(joinConfig, { adapterCreator: options.adapterCreator, debug: options.debug, }); }