【问题标题】:Cannot delete messages with specified timestamp无法删除具有指定时间戳的消息
【发布时间】:2021-09-12 18:51:19
【问题描述】:

您好,我无法删除在特定时间发布在频道中的消息。我正在检查消息时间戳并将其与 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 天或更早的消息。 帮助表示赞赏

【问题讨论】:

    标签: node.js discord.js momentjs


    【解决方案1】:

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

    您没有比较两次,只是检查 time 对象是否存在,这将始终是正确的 - 您只是在 if 语句上方创建了一行!所以所有消息都会被删除。

    总结一下:

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

    【讨论】:

      【解决方案2】:

      您需要将消息的时间与 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)
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-19
        • 2021-04-25
        • 1970-01-01
        • 2021-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多