首页 > 解决方案 > 按时间自动删除指定频道的消息?不和谐.js

问题描述

我在需要的时候进行了自动频道清洁(Monday 15:00)

但是我的程序不能正常工作。当频道中出现消息时,倒计时开始。

我需要在channel.id中没有新消息的情况下清除频道

代码

const schedule = require("node-schedule");

client.on("message", async (message) => {
  if (client.channels.cache.get("829042005236645900")) {

    const job = schedule.scheduleJob('30 * * * * *', function () {
      console.log('Delete');
      message.channel.bulkDelete(20)
    });
  }
});

标签: javascriptdiscorddiscord.js

解决方案


看起来您正在事件处理程序中创建计划,这可能是导致问题的原因。这是一个替代方案:

const schedule = require("node-schedule");
const channel = client.channels.cache.get("829042005236645900");
const job = schedule.scheduleJob('30 * * * * *', function () {
  console.log('Delete');
  channel.bulkDelete(20);
});

但是,您似乎也想让事件每 30 秒触发一次?node-schedule有一个称为Recurrence Rule Scheduling的系统:

const schedule = require("node-schedule");
const channel = client.channels.cache.get("829042005236645900");
const job = new schedule.scheduleJob({ second: new schedule.Range(0, 59, 30) },
  function () {
    console.log('Delete');
    channel.bulkDelete(20);
});

推荐阅读