You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Discord.JS删除特定频道中超过1小时的消息?

实现Discord频道自动删除1小时以上旧通知的方案

每次发送新通知后自动清理频道内超过1小时的旧通知,核心逻辑是时间筛选+批量删除,以下是具体实现方案:

  • 关键逻辑拆解

    1. 计算时间阈值:用当前时间减去3600000毫秒(1小时的毫秒数),得到1小时前的时间戳
    2. 筛选目标消息:从指定频道拉取历史消息,挑出发送时间早于阈值的消息
    3. 批量删除:调用Discord的批量删除接口处理符合条件的消息
  • 代码示例(Discord.js v14)

// 封装发送通知并清理旧消息的函数
async function sendAndCleanNotifications(targetChannel, notificationContent) {
  // 先发送新通知
  await targetChannel.send(notificationContent);

  // 计算1小时前的时间节点
  const oneHourBefore = Date.now() - 3600 * 1000;

  // 拉取频道最近100条消息(Discord API单次拉取上限)
  const channelMessages = await targetChannel.messages.fetch({ limit: 100 });
  // 筛选出超过1小时的消息
  const outdatedMessages = channelMessages.filter(msg => msg.createdTimestamp < oneHourBefore);

  // 批量删除旧消息(需机器人有ManageMessages权限)
  if (outdatedMessages.size > 0) {
    await targetChannel.bulkDelete(outdatedMessages);
  }
}
  • 注意点
    • 机器人必须拥有ManageMessages权限,否则删除操作会失败
    • 单次bulkDelete最多处理100条消息,且只能删除14天以内的消息;如果频道旧消息超过100条,需要循环分页拉取并删除
    • 若要处理超过14天的旧消息,只能逐条调用msg.delete(),但效率较低,建议根据实际需求取舍

内容的提问来源于stack exchange,提问作者ryana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 21:32:10