【发布时间】: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