无法删除具有指定时间戳的消息

Cannot delete messages with specified timestamp

您好,我无法删除在特定时间发布在频道中的消息。我正在检查消息时间戳并将其与 moment.js 模块进行比较,但是当我 运行 我的代码时,它不会在我想要的时间内删除消息,而不是删除任何获取的消息。

所以我卡在了这一点上。

这是我的代码:

await channel.messages.fetch({limit: 100 })
        .then(messages => {
            messages.forEach(m => {
                let time = moment.utc(m.createdTimestamp).subtract( 7, 'days'); 
                if (time) {
                    channel.bulkDelete(10)
                } 

我的目标是删除 7 天或更早的邮件。 帮助赞赏

您需要将消息的时间与7天前的时间进行比较。 7天前的时间以毫秒为单位可以通过moment().subtract(7, 'days')来计算。我们将比较毫秒,如果消息超过 7 天,则以毫秒为单位的值将小于 7 天前的值。

let time = moment.utc(m.createdTimestamp).subtract( 7, 'days');
if (time.milliseconds() < moment().subtract(7, 'days').milliseconds()) {
  channel.bulkDelete(10)
}

问题是,您从消息创建时间中减去了 7 天。您可能想从现在减去 7 天并将其与 m.createdTimestamp 进行比较。这导致了另一个问题:

您不是在比较两次,只是检查 time 对象是否存在,这将永远为真 - 您只是在 if 语句上方的一行创建了它!所以所有的消息都会被删除。

总结一下:

  1. 从当前时刻减去 7 天并将其存储在变量中 sevenDaysAgo
  2. if 语句中,将消息创建时间与sevenDaysAgo 进行比较。如果消息早于 7 天前,请将其删除。