移动语音通道不和谐js



我一直在用Python编写Discord,但我想切换到JS,因为有更多。我有一些麻烦,机器人没有加入或离开命令。所以我创建了一个。我可以让连接工作,但机器人不能离开。

const util = require("../util");
var arr = []
module.exports = {
name: "join",
aliases: ["j"],
exec: async (msg, args) => {
const { music } = msg.guild;
if (!msg.member.voice.channel)
return msg.channel.send(`:x: You need to be in a voice channel to run this command!`);
if (msg.guild.me.voice.channel && !msg.guild.me.voice.channel.equals(msg.member.voice.channel))
return msg.channel.send(`:thumbsup: **I've left** ${msg.guild.me.voice.channel} **and joining** ${msg.member.voice.channel}!`);
await music.join(msg.member.voice.channel);
const missingPerms = util.missingPerms(msg.guild.me.permissionsIn(msg.member.voice.channel), ["CONNECT", "SPEAK"]);
if ((!music.player || !music.player.playing) && missingPerms.length)
return msg.channel.send(`Hmm :thinking: I am unable to join you're voice chat! I am missing the permission: ${missingPerms.map(x => ``${x}``).join(", ")}. Do I have access to this voice chat?`);
else {
await music.join(msg.member.voice.channel);
}

}
}

我该如何让机器人移动并离开?

Discord.js v12

嗯,我看你的问题很简单,你可以在Official Documentation中找到它.

不要尝试switch频道,你可以直接退出当前频道,然后使用<ThisChannel>.leave()<NewChannel>.join()加入一个新的频道

PS:你的代码有点乱,所以如果你想让它更容易读,你可以使用msg.member.voice.channel为成员的通道和msg.guild.me.voice.channel为你所在的通道,它将是null,如果目标不在那里,加入成员的语音通道它是msg.member.voice.channel.join(),不放任何东西在() 更精确地说,你的新代码看起来像
const { music } = msg.guild;
if (!msg.member.voice.channel)
return msg.channel.send(`:x: You need to be in a voice channel to run this command!`);
if (msg.guild.me.voice.channel && !msg.guild.me.voice.channel.equals(msg.member.voice.channel))
return msg.channel.send(`:thumbsup: **I've left** ${msg.guild.me.voice.channel} **and joining** ${msg.member.voice.channel}!`);
await msg.guild.me.voice.channel.leave()
await msg.member.voice.channel.join()
const missingPerms = util.missingPerms(msg.guild.me.permissionsIn(msg.member.voice.channel), ["CONNECT", "SPEAK"]);
if ((!music.player || !music.player.playing) && missingPerms.length)
return msg.channel.send(`Hmm :thinking: I am unable to join you're voice chat! I am missing the permission: ${missingPerms.map(x => ``${x}``).join(", ")}. Do I have access to this voice chat?`);
else await music.join(msg.member.voice.channel);

最新更新