Discord.js:按 ID 获取消息给出错误的输出

Posted

技术标签:

【中文标题】Discord.js:按 ID 获取消息给出错误的输出【英文标题】:Discord.js: Fetch Message by ID gives wrong output 【发布时间】:2018-09-03 05:52:37 【问题描述】:

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

if (cmd === `$prefixreport`) 
    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;

【问题讨论】:

如果它返回一个promise你需要等到你从那个promise中得到结果,然后发送消息, 【参考方案1】:

message.channel.fetchMessages(messageID) 返回一个 Promise 而不是消息,而且您应该使用 fetchMessage 而不是 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,但我不知道如何获取内容。再次感谢您!

以上是关于Discord.js:按 ID 获取消息给出错误的输出的主要内容,如果未能解决你的问题,请参考以下文章

如何获取对特定消息做出反应的用户的不和谐 ID discord.js

Discord.js v12 如何获取对特定消息做出反应的人的 id?

Discord.js如何使用用户ID获取用户昵称

Discord.js票务系统错误发送未定义错误

有没有办法在将消息从节点服务器发布到频道时获取 Discord 消息 ID?

Discord.js 按顺序发送消息