Discord.js Report命令只检测命令本身,而不检测提到的用户

Discord.js Report命令只检测命令本身,而不检测提到的用户,discord.js,Discord.js,在脚本机器人领域有点新,所以当我写的时候,我查阅了一些教程,并试图制作一个报告命令!报告它说“用户未找到”,但当我编写完整命令(!report@someone test)时,它不会发送任何内容 我曾尝试从GitHub复制代码,但没有任何帮助,改变了很多东西,但仍然没有结果 //!report @ned this is the reason let rUser = message.guild.member(message.mentions.users.first() || mes

在脚本机器人领域有点新,所以当我写的时候,我查阅了一些教程,并试图制作一个报告命令!报告它说“用户未找到”,但当我编写完整命令(!report@someone test)时,它不会发送任何内容

我曾尝试从GitHub复制代码,但没有任何帮助,改变了很多东西,但仍然没有结果

    //!report @ned this is the reason

    let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[1]));
    if(!rUser) return message.channel.send("Couldn't find user.");
    let rreason = args.join(" ").slice(22);


    let reportEmbed = new Discord.RichEmbed()
    .setDescription("Reports")
    .setColor("#15f153")
    .addField("Reported User", `${rUser} with ID: ${rUser.id}`)
    .addField("Reported By", `${message.author} with ID: ${message.author.id}`)
    .addField("Reported in", message.channel)
    .addField("Reported at", message.createdAt)
    .addField("Report reason", rreason);

    let reportschannel = message.guild.channels.get("603857301392195585")
    if(!reportschannel) return message.channel.send("Couldn't find reports channel.");


    message.delete().catch(O_o=>{});
    reportschannel.send(reportEmbed);

    return;
  }

没有错误,命令提示符中没有任何内容。

1。您忘了在嵌入中设置标题/作者。我不知道是否需要,但你应该添加这样的内容。然后可以删除
.setDescription()

2.您可以在
message.delete()
之后省去部分,不需要
.catch()

3.删除
返回在末尾。也不需要


还要检查您是否正在运行此功能。 例如,使用调试消息。在几乎每行a
console.log(“1”)
console.log(“2”)
等检查之后,代码停止在哪里

例如:

//!report @ned this is the reason

let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[1]));    
if(!rUser) return message.channel.send("Couldn't find user.");
console.log("1") // User exists
let rreason = args.join(" ").slice(22);
console.log("2") // No reason creating problems


let reportEmbed = new Discord.RichEmbed()
 .setAuthor("Reports")
 .setColor("#15f153")
 .addField("Reported User", `${rUser} with ID: ${rUser.id}`)
 .addField("Reported By", `${message.author} with ID: ${message.author.id}`)
 .addField("Reported in", message.channel)
 .addField("Reported at", message.createdAt)
 .addField("Report reason", rreason);

 let reportschannel = message.guild.channels.get("603857301392195585");
 if(!reportschannel) return message.channel.send("Couldn't find reports channel.");
 console.log("3") // Channel exists


 message.delete();
 console.log("4") // Message deleted
 reportschannel.send(reportEmbed);
 console.log("5") // Report message sent


虽然我同意用他的代码编写的
.catch
是无用的,但我不同意你关于删除它的说法。抓住承诺很重要,以防失败。也没有说在函数返回字符串的其余部分不好时不在末尾返回值。如果假定使用某个值,
未定义
可能会导致错误。最后,你不是在回答问题,而是在给出建议。你没有解决这个问题。你的回答应该是评论。我同意杰克所说的。你应该在评论中给出建议。我注意到你到处回答每一个Discord.js问题。除非你所说的是有效的,或者你已经测试过了,否则不要回答。答案不应该是“我不知道这是否需要,但你应该添加它”之类的,而应该是“这是我尝试过的,它对我有效。尝试一下”尽管如此,仅仅从Github中抓取大块代码,将其插入到代码中,并希望它能以最小的更改工作,这并不是一个好的做法。我建议做一个自由代码营来学习。JS纠正一个错误顺便说一句:函数返回承诺,而不是string@JackRed所附的
catch()
方法将抑制由拒绝的承诺引起的任何错误。如果没有它,将看到未处理的PromisejectionWarning(以及错误)。就其用途而言,在这种情况下它是无用的,但完全删除它将产生截然不同的结果@Xge“…不需要
.catch()
。”这不是必需的,但要抓住一个被拒绝的承诺(良好的/正常的做法),它当然是。@slothiful这就是为什么我说“因为它是在代码中写的,所以它是无用的”。我无法编辑,以使更清楚的想法,希望您的评论将是Enough我没有任何问题与您的代码。为了我的测试,我对它做了一点修改,但即使是原来的一个,它也在发送嵌入消息。我建议您尝试记录代码中正在发生的事情,以发现您可能记录了什么错误(我认为这与您的discord服务器有关),但没有记录任何错误,下面是发生的情况的图像:哼。检查的简单建议。您能否通过
message.channel替换
reportschannel.send…
。发送在结尾?仍然没有发送。我想你有一个错误的频道ID,但显然没有。你的代码正在工作,所以它一定是一个:版本问题,不一致的问题或其他与yiu环境相关的问题。试着把你的代码分成几部分。记录每个变量以检查其是否具有定义的值。检查是否执行了每个操作。例如,将
reportsEmbed
替换为
'test'
。做一些像这样的小动作来检查什么有效什么无效
//!report @ned this is the reason

let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[1]));    
if(!rUser) return message.channel.send("Couldn't find user.");
console.log("1") // User exists
let rreason = args.join(" ").slice(22);
console.log("2") // No reason creating problems


let reportEmbed = new Discord.RichEmbed()
 .setAuthor("Reports")
 .setColor("#15f153")
 .addField("Reported User", `${rUser} with ID: ${rUser.id}`)
 .addField("Reported By", `${message.author} with ID: ${message.author.id}`)
 .addField("Reported in", message.channel)
 .addField("Reported at", message.createdAt)
 .addField("Report reason", rreason);

 let reportschannel = message.guild.channels.get("603857301392195585");
 if(!reportschannel) return message.channel.send("Couldn't find reports channel.");
 console.log("3") // Channel exists


 message.delete();
 console.log("4") // Message deleted
 reportschannel.send(reportEmbed);
 console.log("5") // Report message sent