首页 > 解决方案 > 如果命令不存在,则以各种回复进行响应

问题描述

我想这样做,如果有人发送命令,如果它不是存储在 ./cmds/ 中的命令,它会返回一个随机响应。下面的代码不会出错,它允许有效命令通过,但无效命令没有任何响应。我缩短了代码并取出了一大堆响应和有效命令,以便在这里更高效。我不确定是什么导致缺乏响应或什么。

我最接近这项工作的是让它同时发送随机响应和命令响应。下面的代码只是我迄今为止制作的最简单的版本。

let response = [
    'resp1',
    'resp2',
    'resp3'
]

let validCommands = [
    'cmd1',
    'cmd2',
    'cmd3'
];


if (!validCommands) {
    return message.channel.send(response[Math.floor(Math.random() * response.length)])
}

标签: javascriptdiscord.js

解决方案


js 中的数组是truly,这意味着如果转换为布尔值,它们将转换为 true。因为validCommands是恒定的,并且总是true您的条件变为if (!true) {并且响应永远不会执行。

我认为应该改为

if (! validCommands.includes(message.content)) { ... }

推荐阅读