如何在 discord.js 中断开用户与语音通道的连接?

Posted

技术标签:

【中文标题】如何在 discord.js 中断开用户与语音通道的连接?【英文标题】:How do I disconnect a user from a voice channel in discord.js? 【发布时间】:2019-12-30 05:19:37 【问题描述】:

我不知道如何让用户离开语音频道。

我正在做一个验证,除了离开语音通道部分,我已经设置好了。

bot.on('voiceStateUpdate', (oldMember, newMember) => 
  let newUserChannel = newMember.voiceChannel
  let oldUserChannel = oldMember.voiceChannel
  var channel = bot.channels.get('614299678300831744');


  if(oldUserChannel === undefined && newUserChannel !== 615306755420717143) 
    channel.send(newMember + ' has been verified.');
    let role = newMember.guild.roles.find(role => role.name === "Verified");
    newMember.addRole(role);
    let verifyEmbed = new Discord.RichEmbed()
    .setAuthor("Verificaiton")
    .setDescription("You have been verified")
    .setFooter(newMember.guild.name)
    .setColor("#98AFC7")
    newMember.sendMessage(verifyEmbed);
    newMember.disconnect();
  
);

我没有收到任何错误,但它应该断开我与语音通道的连接但不能?

【问题讨论】:

【参考方案1】:

newMember.setVoiceChannel(null);代替newMember.disconnect();

这里是相关的documentation

我在我的机器人上使用它,它工作正常。

【讨论】:

【参考方案2】:

不确定这是否仍然相关,但自从更新后您现在可以执行以下操作。

newMember.member.voice.disconnect();

参考VoiceState类方法disconnect

【讨论】:

这不再相关,但感谢您的回复【参考方案3】:

问题是.disconnect() 不是GuildMember 类的方法。可以在GuildMember 上使用的所有方法都可以在here 上找到。

.disconnect() 只是voiceChannel 上存在的一种方法,用于“断开语音连接,导致发出断开和关闭事件”。 1

据我所知,没有办法从语音频道中强制删除用户。

【讨论】:

有什么方法可以创建一个名为用户 id 的语音频道,将他们连接到该频道,然后将其删除? 也没有办法强制将某人连接到语音通道,他们必须自己做。【参考方案4】:

您可以让机器人创建一个新的语音通道,将用户移动到新创建的语音通道,删除该通道,从而使用户断开连接

let randomnumber = Math.floor(Math.random() * 9000 + 1000)

await receivedMessage.guild.createChannel(`voice-kick-$randomnumber`, "voice")
await vcUser.setVoiceChannel(receivedMessage.guild.channels.find(r => r.name === `voice-kick-$randomnumber`))
receivedMessage.guild.channels.find(r => r.name === `voice-$randomnumber`).delete()

正在添加 randomnumber 命令以在 VC 中生成一个随机数,以便没有任何 VC 具有相同的名称!

【讨论】:

以上是关于如何在 discord.js 中断开用户与语音通道的连接?的主要内容,如果未能解决你的问题,请参考以下文章

带有斜杠命令的 Discord.js 语音通道

如何检查具有特定角色的成员是不是存在于 discord.js 的特定语音通道中

Discord.js 机器人提到语音通道

当机器人被踢出语音通道时我怎么能得到

Discord.js 将 mpeg 音频流流式传输到语音通道

加入机器人 discord.js 的语音频道后如何忽略相同的命令