24小时后如何执行动作? (不使用setTimeout)

时间:2018-11-04 02:15:10

标签: javascript node.js

我有一个带有惩罚命令的Discord机器人,我想让该机器人在24小时/ 1天后取消惩罚。不想使用setTimeout(),因为该机器人可能会在这段时间里掉线,并且setTimeout()会消耗资源。怎么做?谢谢。

2 个答案:

答案 0 :(得分:0)

惩罚后,可以将变量分配为Date.now()+ 86400000。当他们登录并且当前日期大于此值时,禁令将结束。

答案 1 :(得分:0)

您可以在没有计时器的情况下执行此操作。禁止用户时,只需用禁止结束的日期/时间标记其用户对象(在您用于用户帐户的任何持久性存储中)。然后,注销它们。

然后,在每个登录请求中,检查用户对象以查看他们是否具有禁止时间,以及当前时间是否已超过禁止时间。如果不是,请使他们的登录失败(不要让他们进入)。如果是这样,则由于该禁令已经结束并且他们现在可以登录,因此从用户对象中删除该禁令时间。