如何在反应时将机器人发送的消息中的文本删除到另一个通道



所以我正在构建一个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] });
}
}
});

希望它工作!

相关内容

  • 没有找到相关文章