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这不起作用,因为我不小心忘记了一个)
,它现在应该可以工作了。