Discord.js v13 为什么这段代码不起作用?

Discord.js v13 why is this code not working?

我想让我的机器人通过命令说出我告诉它的任何内容。我从我的机器人的其他部分复制了代码,它在那里工作,但在这里却没有,我不明白为什么。没有错误消息。 这是我的代码:

const { Permissions } = require('discord.js');

module.exports = {
    name: 'say',
    description: "Sprawia że coś mówię.",
    execute(message, args)
    {
        let text = args.join(" ").slice(22);
        if(text)
        {
            message.channel.send(text)
        }
        else 
        {
            message.reply('test')//show correct usage
        }
    }
}

(const {Permissions} 后面会用到所以不用担心它在那里) 你也可以在 discord 上看到它的样子:here.

代码完全按照您编程的方式工作。看看这一行:

let text = args.join(" ").slice(22);

假设你在测试用例"rp say xd"中的args应该是"xd",上面的代码是完全错误的。该代码组合了 args,用空格分隔它们,然后从第 22 个字符开始获取它的子字符串。换句话说,要使 text 不是空字符串,您的参数长度必须超过 22 个字符("rp say xdddddddddddddddddddd!" 会使 text 等于结尾 "!").

因为 text 对于长度小于 22 个字符的 args 总是一个空字符串,你基本上只是在做 if (""),这与 if (false) 是一样的。这意味着您的 else 语句将始终 运行,除非您的 args 的总长度超过 22 个字符。

要解决此问题,请改为执行以下操作:

let text = args.join(" ");

或者,如果您想让您的机器人仅使用提供给它的参数的前 22 个字符:

let text = args.join(" ").slice(0, 22); //.slice(startIndex, endIndexExclusive)