给出超过 1 个单词的参数

Arguments giving more then 1 word

我做了一个静音命令,我尝试使用 ms 静音指定的时间,当我记录时间时,它返回 1m(原因)而不是 1m

'mute': async (msg) => {
    if(!msg.guild.member(msg.author).hasPermission('MUTE_MEMBERS')) { return msg.channel.send("Hmmm... I don't think you're allowed to use that. Missing permission: Mute Members.") }
    if(!msg.guild.member(bot.user).hasPermission('MANAGE_CHANNELS')) { return msg.channel.send("Uh oh, you have permission to use the command but it seems I do not. Missing permission: Manage channels.")}
    let embedError = new Discord.RichEmbed()
    .setColor("RED")
    .setTitle("Error")
    .setDescription("Correct format:\nAlexa mute [user eg: @YxriDev#0001] [time eg: 1h] [reason eg: Spamming.]")
    let args = msg.content.split(' ').slice(1).join(' ')
    let time = msg.content.split(' ').slice(3).join(' ')
    let reason = msg.content.split(' ').slice(4).join(' ')

    let muting = msg.mentions.users.first()
    if(!muting) { return msg.channel.send(embedError) }
    if(!time)  { return msg.channel.send(embedError) }
    if(!reason) { return msg.channel.send(embedError) }

      msg.guild.channels.forEach(x => {
        x.overwritePermissions(muting, {
          SEND_MESSAGES: false,
          VIEW_CHANNEL: null,
        })
      })
      msg.channel.send("Muted")
      console.log(time)

      setTimeout(function() {
        msg.guild.channels.forEach(x => {
          x.overwritePermissions(muting, {
            SEND_MESSAGES: true,
            VIEW_CHANNEL: null,
          })
        })
        msg.channel.send("unmuted")
    }, ms(time))

  }

您的切片不正确。而且您不必要地为每个参数创建一个新数组。

试试这个: 它只使用一个 .split(),其中 returns 一个包含所有 space 分隔词的数组。然后你可以使用数组解构将单词放入变量中(let [a] = [42];42 存储在 a 中)并将剩余的单词(原因)分组回数组中,这很容易使用 .join().

连接回字符串

const msg = {
  content: 'Alexa mute @user 1h You spammed!'
};

let [, , , time, ...reason] = msg.content.split(' ');
reason = reason.join(' ');

console.log(time);
console.log(reason);