javascript - messageDelete 事件和部分 discord.js v12
问题描述
可以说我有一个messageDelete event
我想从中获取数据的东西。由于我需要触发 messageDelete 事件,因此 messageDelete 事件中的Channel
返回将是部分的。Message partials
message object
当我尝试获取此消息时,它返回一个错误,指出获取的消息是未知的。
content
那么我怎样才能从 中获取诸如此类的信息deleted message
?
我当前的代码:
client.on("messageDelete", async message => {
if (message.partial) await message.fetch() // this is where the error occurs
console.log(message.content) // will only work on non partial messages
})
有什么办法可以解决这个问题,因为从过去删除的消息中获取信息会很有用。
编辑
Toasty 建议我使用审计日志,对此我使用了以下代码
client.on("messageDelete", async message => {
console.log(message) // seeing whats avaliable in the return
if (message.partial) console.log("message was partial") // checking if the message was partial to compare with non partial messages
if (message.guild) {
const fLogs = await message.guild.fetchAuditLogs({limit:1, type:"MESSAGE_DELETE"}) //getting audit logs
const log = fLogs.entries.first()
let {executor, target} = log
console.log("Message deleted by "+executor.tag+" in "+target) // responding.
}
})
输出:
message was partial
Message deleted by CT-1409 "Echo"#0093 in 606323576714559489
所以我可以得到被删除的消息的是谁和(某种)什么。我仍然无法获取其余的消息信息,就好像我试图获取具有目标 id 的消息一样,它会再次给我 Unkown Message。但是,当我开始记录消息对象时,我注意到已经存在大量信息,这可能意味着仍然可以从部分消息中访问一些数据。我不知道多少,但也许足以满足我的需要。
解决方案
推荐阅读
- c# - 收到错误 错误的 JSON 转义序列
- html - IE11 边框/轮廓破损或溢出
- c++ - 如果有换行符,clang-format 将不会附加大括号
- wikipedia-api - 从 wikidata 网站而不是 API 获取搜索结果
- express - 在 repl.it 平台上使用 express.js 时持续的 Sqlite 损坏
- android - 在单击时突出显示 RecyclerView 中的选定项目
- python - 在进行反向传播和梯度下降时遇到 numpy 数组和矩阵的问题
- azure - 在 Azure 函数中将 AzureServiceTokenProvider 设为静态
- ios - 为什么后台 NSURLConnection 进入后台时出错?
- c++ - C++ std::locale("en") 在 iOS 上抛出异常