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?