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