【问题标题】:discord.js v13 temp voice channels - joinVoiceChannel() @discordjs/voicediscord.js v13 临时语音通道 - joinVoiceChannel() @discordjs/voice
【发布时间】:2021-11-21 14:51:29
【问题描述】:

我正在尝试添加一个允许创建临时语音通道的命令。

我在此命令中创建了一个新客户端,以尝试以另一种方式获取 joinVoiceChannel() 参数。

文件:

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,
    })
  }
}

错误:

TypeError: Cannot read property 'id' of undefined
    at Object.execute (C:\Users\tomfi\Code\DiscordBot\commands\voice.js:11:38)
    at module.exports (C:\Users\tomfi\Code\DiscordBot\events\messageCreate.js:16:17)
    at Client.emit (node:events:394:28)
    at MessageCreateAction.handle (C:\Users\tomfi\Code\DiscordBot\node_modules\discord.js\src\client\actions\MessageCreate.js:23:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\tomfi\Code\DiscordBot\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:\Users\tomfi\Code\DiscordBot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:345:31)
    at WebSocketShard.onPacket (C:\Users\tomfi\Code\DiscordBot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:443:22)
    at WebSocketShard.onMessage (C:\Users\tomfi\Code\DiscordBot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:300:10)
    at WebSocket.onMessage (C:\Users\tomfi\Code\DiscordBot\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (node:events:394:28)

【问题讨论】:

  • 这个错误在哪一行?另外,临时语音频道是指所有人离开后就被删除?
  • 我假设interaction.member.voice.channel 必须是null。使用此命令的人必须已经在语音通道中,否则会出现此错误。您可以做的一件事是检查它是否是null,如果是,则发送一条消息,要求用户加入语音频道。
  • 您为什么要尝试加入文本频道?另一种方法实际上更接近
  • joinVoiceChannel 如果您尝试加入一个不存在的语音通道,则不会创建新的语音通道。您必须通过主要的 discord.js 库手动创建一个新的语音通道,然后通过 joinVoiceChannel 加入它。
  • 语音连接不是频道。为此,您将需要 GuildChannelManager.create。我假设您正在尝试将类型设置为 'voice' 但他们更改了它。现在是'GUILD_VOICE'

标签: javascript discord.js


【解决方案1】:

joinVoiceChannel创建语音通道,它创建语音连接。您需要改用GuildChannelManager.create。方法如下:

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,
})

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 2022-01-16
    • 2020-05-30
    • 2021-12-06
    • 2022-01-11
    • 2021-11-03
    • 1970-01-01
    • 2020-08-22
    相关资源
    最近更新 更多