Skip to content
Advertisement

discord.js v13 temp voice channels – joinVoiceChannel() @discordjs/voice

I am trying to add a command, that allows the creation of temporary voice channels.

I have created a new client within this command to try and get the joinVoiceChannel() params another way.

File:

const { joinVoiceChannel } = require ('@discordjs/voice')

module.exports = {
  emoji: '🔈',
  name: 'voice',
  description: 'Create a temporary voice channel',
  execute(interaction) {
    console.log('hi')
    joinVoiceChannel({
      channelId: interaction.channel.id,
      guildId: interaction.guild.id,
      adapterCreator: interaction.guild.voiceAdapterCreator,
    })
  }
}

Error:

TypeError: Cannot read property 'id' of undefined
    at Object.execute (C:UserstomfiCodeDiscordBotcommandsvoice.js:11:38)
    at module.exports (C:UserstomfiCodeDiscordBoteventsmessageCreate.js:16:17)
    at Client.emit (node:events:394:28)
    at MessageCreateAction.handle (C:UserstomfiCodeDiscordBotnode_modulesdiscord.jssrcclientactionsMessageCreate.js:23:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:UserstomfiCodeDiscordBotnode_modulesdiscord.jssrcclientwebsockethandlersMESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:UserstomfiCodeDiscordBotnode_modulesdiscord.jssrcclientwebsocketWebSocketManager.js:345:31)
    at WebSocketShard.onPacket (C:UserstomfiCodeDiscordBotnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:443:22)
    at WebSocketShard.onMessage (C:UserstomfiCodeDiscordBotnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:300:10)
    at WebSocket.onMessage (C:UserstomfiCodeDiscordBotnode_moduleswslibevent-target.js:132:16)
    at WebSocket.emit (node:events:394:28)

Advertisement

Answer

joinVoiceChannel does not create a voice channel, it creates a voice connection. You need to use GuildChannelManager.create instead. Here is how:

const channel = await interaction.guild.channels.create("VC_NAME", {
  type: "GUILD_VOICE" //note it is "GUILD_VOICE" and not just "voice" anymore
}
joinVoiceChannel({
  channelId: channel.id,
  guildId: interaction.guild.id,
  adapterCreator: interaction.guild.voiceAdapterCreator,
})
User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement