Javascript 如何区分参数?

Javascript 如何区分参数?,javascript,discord,discord.js,args,Javascript,Discord,Discord.js,Args,所以我想让我的代码检测不同的部分。问题是它只认为有一个论点。我尝试了一些if语句,我把它记录下来,结果是1。目前的代码是: module.exports = { name: 'report', description: "report a naughty person", async execute(message, args, Discord, client){ const reason = args.splice(1) conso

所以我想让我的代码检测不同的部分。问题是它只认为有一个论点。我尝试了一些if语句,我把它记录下来,结果是1。目前的代码是:

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

if (args.length = 1){ 

    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 1st argument
        + `Reason reported: ${reason.join(' ')}`) // The 2nd argument
         

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

}};
module.exports={
名称:'报告',
描述:“举报一个淘气的人”,
异步执行(消息、参数、不一致、客户端){
常量原因=参数拼接(1)
console.log(args)
如果(args.length=1){
let embed=new Discord.MessageEmbed()
.setColor(“#1ed700”)
.setTitle('报告\n')
.setDescription(`报告${message.author}的人\n`
+`Channel报告在:${message.Channel}\n`
+`Person reported:${args[0]}\n`//第一个参数
+`Reason reported:${Reason.join('''}')//第二个参数
let messageEmbed=等待message.channel.send(嵌入);
message.channel.send(``)
}否则
message.channel.send('代码编写不正确')
}};

我怎样才能改变它,使它变成两个不同的论点(第一个是提到的,第二个是原因)。我怎样才能检查是否有这两个参数呢?

首先,您可以使用赋值运算符来检查
args.length
是否为1。 您需要一个比较,因此您需要的是以下内容:

if(args.length==1){
//做点什么
}
尝试将参数设置为以下代码:

const args=message.content.split(“”).slice(1);//只有在前缀为“-”或“+”时,才使用最后一个端口片()
我添加了两个检查,向您展示如何检查用户是否被提及,另一个检查用户是否给出了原因。 要检查是否有提及,只需使用
message.indications.users.first()。唯一忘记添加到原因中的是
join(“”)
,否则用户只需写一个单词作为原因(我想这不是您想要的)

module.exports={
名称:'报告',
描述:“举报一个淘气的人”,
异步执行(消息、参数、不一致、客户端){
常量原因=参数拼接(1).连接(“”)
const user=message.indications.users.first();
if(!user)返回console.log('未提及用户');
if(!reason)返回console.log('未给出原因')//检查是否有给出的原因
if(用户和原因){
//做点什么
console.log('提及用户并给出原因')
}
}};
您可以尝试以下方法:

module.exports={
名称:'报告',
描述:“举报一个淘气的人”,
异步执行(消息、参数、不一致、客户端){
const reportedPerson=message.indications.users.first();
args.shift();
const reason=args.join(“”);
console.log(args);
如果(报告人和原因){
//做点什么
}
否则{
日志(“未报告人员或原因!”);
}
};

在使用单个参数拼接时,您显式地将
args
的长度设置为1,并且再次在
if
条件下进行设置。
args.length=1
包含赋值运算符。因此@teemu我应该删除拼接吗?如果是,我如何拆分它?如果要拆分,为什么希望长度为ing大于1?如果要复制值,可以使用
slice
splice
和一个参数将数组拆分为两部分,一部分位于参数索引之前,另一部分从参数中给定的索引开始,一直到数组末尾。@GillesHeinesch您的解决方案成功了,很抱歉,我已停止为e天,所以我直到今天早上才看到它。长度仍然是1。为什么呢?@teemu因为在为
原因
赋值时拼接了数组。我不明白你的意思。如果用户输入
?report@XX#0001 Test report
,那么原因将是“Test report”这就是用户想要的,是吗?@teemuI不熟悉discord,这可能是OP需要的,但它仍然只是部分解释了他们自己代码中的错误。。。