当机器人处于语音通道时,我执行leave命令,机器人将离开并回复leave.result
。但是当我仍然在语音通道中并执行命令时,bot将回复相同的答案,我希望bot回复leave.errorNotChannel
这里是代码
execute(message) {
const { channel } = message.member.voice;
const serverQueue = message.client.queue.get(message.guild.id);
if (!channel) return message.reply(i18n.__("leave.errorNotChannel")).catch(console.error);
if (serverQueue && channel !== message.guild.me.voice.channel)
return message
.reply(i18n.__mf("leave.errorNotInSameChannel", { user: message.client.user }))
.catch(console.error);
channel.leave();
message
.channel
.send(i18n.__("leave.result"))
.catch(console.error);
}
我不知道如何让机器人知道它是否在语音通道中。
您可以使用if
语句尝试这样做:
if (message.guild.me.voice.channel) {
message.channel.send('I am in a voice channel')
} else {
message.channel.send('I'm not in a voice channel')
}
我在这里所做的是找到bot连接的语音通道(在公会中)语音通道被定义为message.guild.me.voice.channel
现在如果通道存在,您可以发送输出像我所做的那样或者如果它没有连接它就会发送一个错误
您可以进一步自定义它!