Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Discord.js:Fetch Message by ID给出错误的输出_Node.js_Promise_Bots_Discord_Discord.js - Fatal编程技术网

Node.js Discord.js:Fetch Message by ID给出错误的输出

Node.js Discord.js:Fetch Message by ID给出错误的输出,node.js,promise,bots,discord,discord.js,Node.js,Promise,Bots,Discord,Discord.js,当我从另一个用户那里得到帮助时,我尝试使用id来获取fetchMessage()。我想可能是出了问题,因为当我为我的报告命令输入id时,它返回的是[object Promise],而不是id对应的消息。以下是一个代码位及其输出: if (cmd === `${prefix}report`) { let messageID = args[0]; if (isNaN(messageID)) { message.author.send("Not an ID")

当我从另一个用户那里得到帮助时,我尝试使用id来获取fetchMessage()。我想可能是出了问题,因为当我为我的报告命令输入id时,它返回的是
[object Promise]
,而不是id对应的消息。以下是一个代码位及其输出:

if (cmd === `${prefix}report`) {
    let messageID = args[0];
    if (isNaN(messageID)) {
        message.author.send("Not an ID")
        return;
    }
    let messagea = message.channel.fetchMessages(messageID);
    let reportEmbed = new Discord.RichEmbed()
        .setTitle("Reports")
        .setColor("#F7E533")
        .addField("Message", messagea)
        .addField("Reported User", `@${messagea.author}`)
        .addField("Reported By", `${message.author} with ID: ${message.author.id}`)
        .addField("Time", message.createdAt)
    let reportschannel = message.guild.channels.find(`name`, botconfig.reportsChannel);
    if (!reportschannel) return message.channel.send("Couldn't find reports channel.");

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

message.channel.fetchMessages(messageID)
返回一个承诺不是消息,并且您应该使用而不是
fetchMessages

你需要等待承诺“给你信息”,然后做你需要的

message.channel.fetchMessage(messageID).then(messagea => {
    let reportEmbed = new Discord.RichEmbed()
        .setTitle("Reports")
        .setColor("#F7E533")
        .addField("Message", messagea.content)
        .addField("Reported User", `@${messagea.author}`)
        .addField("Reported By", `${message.author} with ID: ${message.author.id}`)
        .addField("Time", message.createdAt)
    let reportschannel = message.guild.channels.find(`name`, botconfig.reportsChannel);
    if (!reportschannel) return message.channel.send("Couldn't find reports channel.");

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

我还将
messagea
更改为
messagea.content
,因此它实际上会显示消息

如果它返回一个承诺,您需要等待,直到您从该承诺中获得结果,然后发送消息,是的,这是有效的。非常感谢。PS:我确实将
fetchMessages
更改为
fetchMessage
,但我不知道如何获取内容。再次感谢你!