如何断开用户与 discord.js 中语音通道的连接?
How do I disconnect a user from a voice channel in discord.js?
不知道怎么让用户离开语音频道
我正在尝试做一个验证,除了离开语音通道部分外,我已经完成了所有设置。
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();
}
});
我没有收到任何错误,但它应该会断开我与语音通道的连接,但不能吗?
问题是 .disconnect()
不是 GuildMember
class 的方法。 GuildMember
上可以使用的所有方法都可以在 here 中找到。
.disconnect()
只是一个存在于voiceChannel
上的方法,用于"Disconnect the voice connection, causing a disconnect and closing event to be emitted."1
据我所知,无法从语音频道中强行删除用户。
而不是 newMember.disconnect();
使用 newMember.setVoiceChannel(null);
这是相关的documentation
我在我的机器人上使用它,它工作正常。
您可以让机器人创建一个新的语音通道,将用户移动到新创建的语音通道,删除该通道,从而断开用户连接
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 具有相同的名称!
不确定这是否仍然相关,但自更新以来您现在可以执行以下操作。
newMember.member.voice.disconnect();
参考VoiceStateclass方法disconnect
。
不知道怎么让用户离开语音频道
我正在尝试做一个验证,除了离开语音通道部分外,我已经完成了所有设置。
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();
}
});
我没有收到任何错误,但它应该会断开我与语音通道的连接,但不能吗?
问题是 .disconnect()
不是 GuildMember
class 的方法。 GuildMember
上可以使用的所有方法都可以在 here 中找到。
.disconnect()
只是一个存在于voiceChannel
上的方法,用于"Disconnect the voice connection, causing a disconnect and closing event to be emitted."1
据我所知,无法从语音频道中强行删除用户。
而不是 newMember.disconnect();
使用 newMember.setVoiceChannel(null);
这是相关的documentation
我在我的机器人上使用它,它工作正常。
您可以让机器人创建一个新的语音通道,将用户移动到新创建的语音通道,删除该通道,从而断开用户连接
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 具有相同的名称!
不确定这是否仍然相关,但自更新以来您现在可以执行以下操作。
newMember.member.voice.disconnect();
参考VoiceStateclass方法disconnect
。