无法删除具有指定时间戳的消息
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
语句上方的一行创建了它!所以所有的消息都会被删除。
总结一下:
- 从当前时刻减去 7 天并将其存储在变量中
sevenDaysAgo
- 在
if
语句中,将消息创建时间与sevenDaysAgo
进行比较。如果消息早于 7 天前,请将其删除。
您好,我无法删除在特定时间发布在频道中的消息。我正在检查消息时间戳并将其与 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
语句上方的一行创建了它!所以所有的消息都会被删除。
总结一下:
- 从当前时刻减去 7 天并将其存储在变量中
sevenDaysAgo
- 在
if
语句中,将消息创建时间与sevenDaysAgo
进行比较。如果消息早于 7 天前,请将其删除。