Node.js 如何避免Discord服务器中出现多个bot实例

Node.js 如何避免Discord服务器中出现多个bot实例,node.js,discord.js,Node.js,Discord.js,我创建了一个在专用服务器上运行的bot。此bot检查当前日期时间,并在特定时间发出命令。 在以前版本的bot中,我经历了多次断开连接的情况,这似乎是由不一致的问题引起的。我的解决方案是设置一个cron命令,每小时重新启动一次bot,以防它之前崩溃。现在,我的bot运行得很好,但似乎服务器中有多个bot实例,因为每个消息都会发送4到5次 如果节点服务器已处于活动状态或bot已登录,是否有chec的方法 克朗: 00****cd C:/Users/[…]/bot/&node bootstrap.js

我创建了一个在专用服务器上运行的bot。此bot检查当前日期时间,并在特定时间发出命令。 在以前版本的bot中,我经历了多次断开连接的情况,这似乎是由不一致的问题引起的。我的解决方案是设置一个cron命令,每小时重新启动一次bot,以防它之前崩溃。现在,我的bot运行得很好,但似乎服务器中有多个bot实例,因为每个消息都会发送4到5次

如果节点服务器已处于活动状态或bot已登录,是否有chec的方法

克朗:
00****cd C:/Users/[…]/bot/&node bootstrap.js

建造商:

let self = this; this.file = './env/env_'+pEnv+'.json'; //Env file let tmpData = _FS.readFileSync(this.file); this.params = JSON.parse(tmpData); //Timer setup this.interval = setInterval(function(){self.checkTimer();},1000); //Discord client launch this.client = new _DISCORD.Client(); this.client.login(pToken); this.client.on('ready', () => { self.init(); }); self.client.on('message', (pMessage) => { self.reacts(pMessage); }); }``` 让自我=这个; this.file='./env/env_'+pEnv+'.json'; //环境文件 让tmpData=_FS.readFileSync(this.file); this.params=JSON.parse(tmpData); //定时器设置 this.interval=setInterval(函数(){self.checkTimer();},1000); //Discord客户端启动 this.client=new_DISCORD.client(); this.client.login(pToken); this.client.on('ready',()=>{ self.init(); }); self.client.on('message',(pMessage)=>{ 自我反应(pMessage); }); }```
您将
cron
设置为每小时运行一次,这将每小时执行一个新实例,即使已经有一个实例在运行。我建议使用 以确保应用程序在关闭时重新启动


你可以用
永久启动app.js运行它,它会给你想要的东西。

这看起来很好,它确保了应用程序崩溃。但是电力短缺呢?使用cron,我确信命令将再次自动运行。如果我在cron中pu一个Forever命令,它会运行多个实例吗?Forever只是在进程关闭时重新启动,因此很可能永远不会有多个bot实例。但我建议完全删除cron。实际上,您的问题是cron每小时都在运行,这只会每小时生成新实例。尝试使用
永久启动app.js
,看看是否有帮助。@MichaelMaurel您只需执行
@reboot forever start app.js
的crontab,即可在服务器启动时启动bot。这可以处理电源故障和应用程序崩溃。所以。。。我试图用@reboot创建一个简单的文件,只是为了检查语法是否被接受,结果成功了。然后,我尝试了以下两种解决方案,但没有成功:首先,直接在cron中:
@reboot sleep 30&&cd/home/me/[…]&&forever start myScript.js
;其次,使用sh文件(手动调用时该文件有效):
@reboot/home/me/[…]/doOnReboot.sh
找到了解决方案。cron调用.sh脚本,但为了让它工作,我调用了完整路径。[cron]:
@reboot/home/me/Documents/doOnReboot.sh
/[script]:
cd/home/me/[…]/&&/usr/local/bin/forever start myScript.js