如何使我的漫游器在特定频道中发送消息,然后在一段时间后将其删除

时间:2019-11-19 08:59:36

标签: javascript discord discord.js

我重新开始使用javascript,编码和其他东西,因为我有一个激情的项目,我想为自己玩的游戏中的行会工作。因此,我想弄清楚如何让我的漫游器每天在特定时间发送一条消息,然后在5小时后将其删除。我已经尝试了多种方法,或者两种方法不能很好地协同工作,或者只是不能完全起作用。

1 个答案:

答案 0 :(得分:2)

设置时间间隔以检查时间,然后在时间合适时发送消息

设置计时器以定期调用函数。我们还将设置一个变量来存储日期的日期,这是为了避免在同一天发送第二条消息

var day = 0;
setInterval(tick, 30000);

function tick() {};

该函数将获取今天的日期(和时间)并进行比较以查看它是否与所需时间匹配,如果匹配,它将发送消息并在5小时后将其删除。它将日期也存储到我们的day变量中,以防止它在同一天再次发送。

function tick() {
  let now = new Date();
  if (day === now.getDate()) return;

  if (now.toISOString().slice(11,16) === "14:30") { // 2:30PM UTC
    day = now.getDate();

    channel.send("This message will self-destruct in 5 hours.")
    .then(msg => msg.delete(1000*60*60*5));
    .catch(e => /* handle error */);
  }
}

注意:

  • 我已经使用now.toISOString().slice(11,16)来获取时间,这等同于仅使用now.getHours() + ":" + now.getMinutes()。 (摘自this answer
  • 发送后使用Promises获取消息,然后像.delete()一样调用.delete(1000*60*60*5)并等待删除的毫秒数。 (摘自this answer
  • 如果您不想使用UTC,则可能要使用moment-timezone之类的东西,但是您可能还想使用moment.js对象而不是普通的JS日期对象