在第一个单词之后对Args进行切片Discord.js

时间:2018-10-07 09:44:11

标签: javascript bots discord

enter image description here

exports.exec = async (client, message, args, level, settings, texts) => {

    const user = args[0];
    const text = args[1]

    // Fires Error message that the command wasn't ran correctly.
    if (!user) {
        return client.emit('commandUsage', message, this.help);
    }
    // Fires Error message that the command wasn't ran correctly.

    try {
        const { body } = await snekfetch.get(`https://nekobot.xyz/api/imagegen?type=${user.toLowerCase() === "realdonaldtrump" ? "trumptweet" : "tweet"}&username=${user.startsWith("@") ? user.slice(1) : user}&text=${encodeURIComponent(text)}`);
        message.channel.send("", { file: body.message });

/* * * * */

如您在gif中所看到的,在这种情况下,将对第一个单词(it)之后的所有内容进行切片。我不知道为什么,我不确定是否是由于const text = args[1]造成的。

我认为const text = args.join (" ")根本不起作用,我也没有尝试过,但相当肯定的是,它没有作用。

抱歉,我是discord.js的新手:/

1 个答案:

答案 0 :(得分:1)

这肯定是由于args[1]所致,假设args是消息中使用的单词数组,按空格分隔,1位置将始终仅包含第二个单词。 / p>

您想要的是这样的

const [user, ...restArgs] = args;
const text = restArgs.join(' ');

这会将第一个元素用作user,并将数组的其余部分用于文本,而不仅仅是第二个元素。