Javascript 试图让我的机器人检测Inavlid命令

Javascript 试图让我的机器人检测Inavlid命令,javascript,discord.js,bots,Javascript,Discord.js,Bots,我试图让我的机器人检测命令何时无效(在列表中),并返回一条消息告诉用户它无效,我尝试了一堆方法,它不断地对每条消息,甚至是有效的命令,显示无效的命令消息 if(message.content.startsWith(`${prefix}')){ let命令=[“帮助”、“修改”、“ping”、“服务器信息”、“8ball”、“建议”、“coinflip”、“botinfo”、“化身”、“信息”、“服务器标识”、“ssu”、“关闭”]; 如果(!message.content.includes(命令

我试图让我的机器人检测命令何时无效(在列表中),并返回一条消息告诉用户它无效,我尝试了一堆方法,它不断地对每条消息,甚至是有效的命令,显示无效的命令消息

if(message.content.startsWith(`${prefix}')){
let命令=[“帮助”、“修改”、“ping”、“服务器信息”、“8ball”、“建议”、“coinflip”、“botinfo”、“化身”、“信息”、“服务器标识”、“ssu”、“关闭”];
如果(!message.content.includes(命令)){
return message.channel.send(`很抱歉,您输入的命令无效,请使用${prefix}help获取可用命令的列表')
}
}

您的测试方法不对。您应该测试数组是否包含消息字符串,而不是消息字符串是否包含数组

if(!commands.includes(message.content)){//这完全不起作用
您需要做的另一件事是从消息内容和每个后续参数中删除前缀

if(!commands.includes(message.content.replace(prefix,”).split(“”)[0]){//首先删除前缀的第一个实例,然后获取第一个参数,即命令

您的测试方法错误。您应该测试数组是否包含消息字符串,而不是消息字符串是否包含数组

if(!commands.includes(message.content)){//这完全不起作用
您需要做的另一件事是从消息内容和每个后续参数中删除前缀

if(!commands.includes(message.content.replace(prefix,”).split(“”)[0]){//首先删除前缀的第一个实例,然后获取第一个参数,即命令

您需要从message.content中删除前缀,但您的检查方式错误:

if (message.content.startsWith(`${prefix}`)) {
    let commands = ["help", "mod", "ping", "serverinfo", "8ball", "suggest", "coinflip", "botinfo", "avatar", "info", "serverlogo", "ssu", "close"];

    const command = message.content.replace(prefix, "");
    if (!commands.includes(command)) {
        return message.channel.send(`Sorry it looks like you have entered an invalid command, Please use ${prefix}help to get a list of useable commands`)
    }
}

您需要从message.content中删除前缀,但检查方式错误:

if (message.content.startsWith(`${prefix}`)) {
    let commands = ["help", "mod", "ping", "serverinfo", "8ball", "suggest", "coinflip", "botinfo", "avatar", "info", "serverlogo", "ssu", "close"];

    const command = message.content.replace(prefix, "");
    if (!commands.includes(command)) {
        return message.channel.send(`Sorry it looks like you have entered an invalid command, Please use ${prefix}help to get a list of useable commands`)
    }
}

这对我来说很有效,谢谢,我只是想在第二个if语句“if(commands.includes(command)){”中添加一个“!”。我认为我的答案更好,因为当命令后面有参数时,这将不起作用,例如(!是本例中的前缀)
!8我应该跳舞吗?
将返回一个无效的命令错误answer@Samathingamajig我的大多数命令在整理最后一条消息后都会使用return参数,因此我需要添加“!”这很好,因为代码在它之前返回,因为有效性测试在我的代码的底部。但是对于其他人,我明白你的意思。对于上一个示例,我想说的是,这个解决方案查看
“8ball应该跳舞吗?”
是否在
命令
数组中,而我的则检查第一个单词
“8ball”
位于
commands
数组中。这对我来说很有效,谢谢,我只是在第二个if语句中添加了一个“!”if(commands.includes(command)){“我认为我的答案更好,因为当命令后面有参数时,这将不起作用,例如(!是本例中的前缀)
!8我应该跳舞吗?
将返回一个无效的命令错误answer@Samathingamajig我的大多数命令在整理最后一条消息后都会使用return参数,因此我需要添加“!”这很好,因为代码在它之前返回,因为有效性测试在我的代码的底部。但是对于其他人,我明白你的意思。对于上一个示例,我想说的是,这个解决方案查看
“8ball应该跳舞吗?”
是否在
命令
数组中,而我的则检查第一个单词
“8ball”
命令数组中。这对我不起作用,但我认为可能是因为我仍然在Discord.js的v11.6.4上API@HellBoundDeadman这不起作用,因为我不小心忘记了一个
,它现在应该可以工作了。这对我来说不起作用,但是我想这可能是因为我仍然在v11.6.4的Discord上.jsAPI@HellBoundDeadman这不起作用,因为我不小心忘记了一个
,它现在应该可以工作了。