在程序停止后不停止运行的 setTimeout 的替代方法?

时间:2021-04-22 16:57:16

标签: javascript node.js discord.js

我正在构建一个具有静音和 Tempban 命令的 Discord 机器人。问题是,我能弄清楚如何在一段时间后取消静音或取消禁令的唯一方法是使用 setTimeout。 setTimeout 的问题是它在我停止程序后停止。我真的不能这样做,因为机器人可能会崩溃,或者我必须停止它以实现新事物等。我已经研究过类似 cron 的东西,但我觉得这行不通。

            switch (checkTime) {
              case true:
                member.roles.add(mutedRole);
                muteEmbed.addField(
                  `${member.user.tag} was muted by ${message.author.username} for an undefined time.`,
                  `Reason: ${muteReason}.`
                );
                break;
              default:
                member.roles.add(mutedRole);
                muteEmbed.addField(
                  `${member.user.tag} was muted by ${message.author.username}.`,
                  `Muted for ${muteTimeRaw}.`
                );
                setTimeout(() => {
                  member.roles.remove(mutedRole); // remove the role
                }, mutedTime);
            }

这是我目前所拥有的。我有哪些选择?

简而言之,我怎样才能让它运行像 message.guild.unban('member') 这样的命令,其中成员每次都不同,并且让它在 3 天后运行,即使程序已经停止和启动?

0 个答案:

没有答案