【问题标题】:how to check number of args如何检查 args 的数量
【发布时间】:2021-07-02 21:01:30
【问题描述】:

我希望我的代码检查此人是否输入了 2 个或更多参数。我尝试使用 if 语句。我不确定那是我应该使用的还是应该尝试使用函数语句?我当前的代码是:

module.exports = {
    name: 'report',
    description: "report a naughty person",
    async execute(message, args, Discord, client){ 
    const reason = args.splice(1)

if (arguments.length >= 2){ 

    let embed = new Discord.MessageEmbed()
        .setColor('#1ed700')
        .setTitle('Report \n')
        .setDescription(`Person who reported ${message.author} \n`
        + `Channel reported in: ${message.channel}\n`
        + `Person reported: ${args[0]} \n` //The second argument
        + `Reason reported: ${reason.join(' ')}`) // The third argument
         

    let messageEmbed = await message.channel.send(embed);
    message.channel.send(`<@&${process.env.DUMMY_ROLE}>`)
    
    }else if (arguments.length < 2) {
        message.channel.send('Command is not written properly')

}}};

目前,据我所知,if 语句并没有真正做任何事情。

【问题讨论】:

    标签: javascript if-statement discord discord.js


    【解决方案1】:

    您使用的是arguments.length,而它似乎是args.length

    我这样说是因为您在代码中使用args 作为上述变量的一部分,而是检查arguments;如果未声明,则始终未定义。

    另外,我将删除 else if 语句并仅使用 else

    【讨论】:

    • 所以在这样做之后它只执行第二个并说“代码没有正确编写”我不确定它是否与 >= 语句的方式或 if 语句的编写方式有关错了。
    • 您可以在控制台中打印您的args 变量和您的arguments 变量并用它们更新您的问题吗?
    • 所以它说长度都是 1。问题是如果我提及它也等于 1。我希望它检查它是否同时提及和原因。
    • 不可能知道,除非您将每个对象的控制台放慢,我们可以看到每个对象具有哪些属性。不要打印长度,而是控制台中的对象
    • 对不起,我要如何检查属性?
    【解决方案2】:

    将您所有的arguments 更改为args。因为arguments

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      • 2019-10-05
      • 2013-03-30
      • 2021-04-03
      • 1970-01-01
      • 2011-09-21
      相关资源
      最近更新 更多