【问题标题】:Problem with NodeJS Cron, double executionNodeJS Cron的问题,双重执行
【发布时间】:2020-09-02 18:12:18
【问题描述】:

我对节点 cron 有疑问。 事实上,当我启动这个 cron 时,它可以工作大约 24 小时,并且在 cron 运行两次和 3 次之后,等等。

你能帮帮我吗? 这是我的 npm cron 包:https://www.npmjs.com/package/cron

这是我的代码:

var Update = new cron('*/1 * * * *', async () => {
        function CheckReboot(){
            const date = new Date()
            if(date.getHours() === "16" || date.getHours() === "10"){
                if(date.getMinutes() <= 3){
                    return true
                }else{
                    return false
                }
            }
        }

        if(CheckReboot()){return}

        const GET_API_Webservices = await API_Webservices()
        if(!GET_API_Webservices){
            return new Error("can't access to API Webservices (Refresh Staff en Ligne)")
        }
        const GET_API_Webservices_serveurs = GET_API_Webservices.serveurs

        if(GET_API_Webservices_serveurs[1].staffs_en_service === "[]"){
            if(!s1_cache.includes("Aucun")){Alert_ServerWithoutMods(1)}
            var s1_mod = ["Aucun"]
        }else{
            var s1_mod = JSON.parse(GET_API_Webservices_serveurs[1].staffs_en_service)
        }
        if(GET_API_Webservices_serveurs[2].staffs_en_service === "[]"){
            if(!s2_cache.includes("Aucun")){Alert_ServerWithoutMods(2)}
            var s2_mod = ["Aucun"]
        }else{
            var s2_mod = JSON.parse(GET_API_Webservices_serveurs[2].staffs_en_service)
        }
        if(GET_API_Webservices_serveurs[3].staffs_en_service === "[]"){
            if(!s3_cache.includes("Aucun")){Alert_ServerWithoutMods(3)}
            var s3_mod = ["Aucun"]
        }else{
            var s3_mod = JSON.parse(GET_API_Webservices_serveurs[3].staffs_en_service)
        }

        s1_cache = s1_mod
        s2_cache = s2_mod
        s3_cache = s3_mod

        const parsed_message = `@everyone\n**[STAFFS EN SERVICE]**\n\n- \`????\` Serveur 1 - [${GET_API_Webservices_serveurs[1].total_joueurs}/${GET_API_Webservices_serveurs[1].slots}] (Admin : ${GET_API_Webservices_serveurs[1].total_admins}) -\n-> ${s1_mod.join("\n-> ")}\n\n- \`????\` Serveur 2 - [${GET_API_Webservices_serveurs[2].total_joueurs}/${GET_API_Webservices_serveurs[2].slots}] (Admin : ${GET_API_Webservices_serveurs[2].total_admins}) -\n-> ${s2_mod.join("\n-> ")}\n\n- \`????\` Serveur 3 - [${GET_API_Webservices_serveurs[3].total_joueurs}/${GET_API_Webservices_serveurs[3].slots}] (Admin : ${GET_API_Webservices_serveurs[3].total_admins}) -\n-> ${s3_mod.join("\n-> ")}`
        chan.fetchMessage("690357691364933646").then(m => {
            m.edit(parsed_message)
        })
    }, null, true)

此 Cron 用于更新 Discord 上的消息,显示游戏服务器上可用的管理员,并在没有员工时向版主发送 DM,但我们收到消息两次或更多次...

提前谢谢你

【问题讨论】:

    标签: javascript node.js cron discord.js


    【解决方案1】:

    我仍在阅读你的代码,但与此同时,你可以纠正这个错误,这个条件总是返回 false,因为 getHours 返回数字!

    if(date.getHours() === "16" || date.getHours() === "10")
    

    //更新了

    正如我上面解释的那样,我认为 Cron 没有任何问题,您的 if 语句 总是返回 false 导致此行永远不会返回:

    if (CheckReboot()) {
        return
      }
    

    【讨论】:

      猜你喜欢
      • 2022-07-27
      • 2019-10-30
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 2019-11-21
      • 1970-01-01
      • 2018-08-17
      相关资源
      最近更新 更多