如何判断bot是否有权限进入语音Discord.js v13

How to check if the bot has the right to enter the voice Discord.js v13

最近接触了检查连接权限/在bot中说话的话题,但是在写命令时忽略并报错

if (!message.guild.me.permissions.has('CONNECT'))
    return message.channel.send(`I don't have rights`)

错误:

Cannot destroy VoiceConnection - it has already been destroyed There was an Error while starting the Voice Stream```

我使用的模块是discord-music-player。提前致谢

首先,您的代码只检查机器人是否在公会中具有连接权限,而不检查机器人是否可以连接到特定的语音频道。使用 channel.joinable 检查机器人是否可以加入特定的语音频道。假设您将语音通道实例保存在变量 voiceChannel 中,这是一个示例:

if (!message.guild.me.permissions.has('CONNECT') || !voiceChannel.joinable) {
    return message.channel.send(`I don't have rights`)
}

这直接回答了你如何检查机器人是否可以进入语音通道的问题。

然而,错误Cannot destroy VoiceConnection - it has already been destroyed可能与这个问题根本没有任何关系。这可能是一个完全不同的问题;如果在实施上述解决方案后仍然出现此错误,则需要针对该错误提出一个不同的问题(以及您未包含在该问题中的相关代码)。