我一直在用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()
加入一个新的频道
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);