首页 > 解决方案 > Discord.js - 尝试在音乐机器人上使用 _leave 命令时,机器人发送错误消息

问题描述

我一直在使用 YouTube 频道 Plexi Development 制作的教程制作音乐机器人。我已经复制了代码,但是当我执行 _leave 命令时,尽管我和我的机器人在同一个语音频道,他说'对不起,但你和我不在同一个语音频道,所以你不能让我离开!而不是离开。有谁知道他为什么这样做?

这是我的代码:

exports.run = (bot, message, args, ops) => {
  if(!message.member.voiceChannel) return message.channel.send('You need to be in a voice channel to get me to leave it!');
  if(!message.guild.me.voiceChannel) return message.channel.send('I need to be in a voice channel to leave one, silly!');
  if(!message.guild.me.voiceChannelID !== message.member.voiceChannelID) return message.channel.send("Sorry, but you are not in the same voice channel as me so you can't make me leave!");
  message.guild.me.voiceChannel.leave();
  message.channel.send("I've left now!");
}
module.exports.config = {
    command: "leave"
}

对于我在这里看到的所有文件:https ://hastebin.com/pofivesico.js (这是我的所有 3 个文件 - 查找评论以查看新文件的开始位置)我正在使用本教程:https: //www.youtube.com/watch?v=wKDAC996nKI

标签: javascriptnode.jsdiscorddiscord.js

解决方案


您的问题可能出在此处:

if(!message.guild.me.voiceChannelID !== message.member.voiceChannelID) return message.channel.send("Sorry, but you are not in the same voice channel as me so you can't make me leave!");

逻辑 NOT ( !) in将!message.guild.me.voiceChannelID存储的任何值转换voiceChannelID为 a bool。如果设置了它的值,它通常会评估为true。我不希望 与true的值的比较message.member.voiceChannelID永远相等。

删除此逻辑 NOT 以正确比较两个值。


推荐阅读