所以我正在构建一个bot,允许用户向bot发送消息,然后bot将消息的内容发送到审核通道以获得批准。批准后,消息被发送到公共通道。我的问题在最后一步。我找不到一种方法来实际获取消息的内容,因为我没有在discord.js API中找到任何允许此操作的内容。
因此bot将用户的原始消息发送到审核通道。主持人以批准或拒绝作出反应。
client.on("messageReactionAdd", (reaction, user) => {
if (user === client.user) return;
if (reaction.message.channel.id === moderationChannel) {
if (reaction.emoji.name === "❌") {
reaction.message.delete();
} else if (reaction.emoji.name === "✅") {
let postMessage = new MessageEmbed() //the embed we send to channel
.setAuthor(`Anonymous Confession`, interaction.guild.iconURL())
.setDescription(messageContents)
.setFooter(`Type "/confess" to send a confession`)
.setTimestamp()
client.channels.cache.get(publicChannel).send({ embeds: [postMessage] });
}
}
});
以前我可以使用
直接将用户的消息传递到公共通道let messageContents = messages.first().content
但是这个解决方案在这里不起作用,因为可能有多个消息需要批准,并且应该单独处理。
如何将已批准消息的内容传递给messageContents
?
可以使用Message
对象的.content
属性。所以代码是
client.on("messageReactionAdd", (reaction, user) => {
if (user === client.user) return;
if (reaction.message.channel.id === moderationChannel) {
if (reaction.emoji.name === "❌") {
reaction.message.delete();
} else if (reaction.emoji.name === "✅") {
let postMessage = new MessageEmbed() //the embed we send to channel
.setAuthor(`Anonymous Confession`, interaction.guild.iconURL())
.setDescription(reaction.message.content) // <---- get the message content from the reacted message
.setFooter(`Type "/confess" to send a confession`)
.setTimestamp()
client.channels.cache.get(publicChannel).send({ embeds: [postMessage] });
}
}
});
希望它工作!