Discord js 中的 messageDelete 问题

Problems with messageDelete in Discord js

我尝试在 Discord 服务器上制作我的机器人。想要制作一个功能,它将复制文本频道中所有已删除的消息,但是,messageDelete 只听到机器人启动后正在写入的已删除消息。当我删除使早期机器人启动的消息时,它不起作用。

{
client.on ("messageDelete", messageDelete =>{
    let channel = client.channels.find(channel => channel.name === 'log-deleted-message')
    console.log(`Deleted :${messageDelete.content}`)
    channel.send(`${messageDelete.author.username} write : ${messageDelete.content}` 
})
}

messageDelete 是在机器人打开时删除消息时调用的事件。如果一条消息在 bot 打开之前被删除,则无法恢复它,这就是它被称为已删除的原因。实现您想要的目标的唯一方法是让机器人永久开启。如果您想了解更多信息,请阅读 docs

以上答案现已过时。 使用 Discord.js V12,您现在可以在 messageDelete 事件上缓存消息,您需要启用 Partials。启用后,您可以像这样预先获取消息:

if(message.partial){ 
let msg = await message.fetch()
console.log(msg.content)
}

然后将记录之前未缓存的消息的内容。