我试图每10秒重新启动我的机器人(为了进行测试,我想每10分钟左右重新启动一次),而且我似乎无法做到。我试过:
const TeleBot = require('telebot');
const bot = new TeleBot({
token:'mytoken',
polling:true
});
setInterval(function(){ bot.start()},9000);
setInterval(function(){ bot.stop()},10000); 它说,机器人启动和停止,但当它第二次这样做时,它说:
bot.error.update { ok: false,error_code: 409,描述:‘冲突:被其他getUpdates请求终止;确保只有一个bot实例正在运行’}
但是,如果停止了bot,则不应该有bot运行的实例。有办法完全阻止机器人吗?
发布于 2021-03-28 14:41:38
谢谢所有想帮忙的人。
但我想出了一个棘手的解决方案。
我将文件从heroku移动到vps,然后安装pm2并将其设置为运行节点index.js(主js文件),然后通过键入crontab -e并键入以下内容,安装cron并将其设置为每10分钟重新启动pm2:
*/10 ***下午重新启动0
现在我的机器人每10分钟重新启动一次。
发布于 2021-03-26 14:53:50
以确保机器人已经停止,没有任何东西挥之不去。
您可以将它放在自己的节点脚本中,然后用以下方式运行它:
const { fork } = require('child_process');
const controller = new AbortController();
const child = fork("your_script.js", { controller });
setTimeout(function()
{
controller.abort(); // Stops the child process
}, 10000);从您的主程序或"cron作业“脚本。请记住,这将杀死进程,这样它就不会有任何机会进行任何清理,因此如果您想先温柔地终止进程。首先向子进程发送一条消息,以便它可以尝试自行终止。
https://stackoverflow.com/questions/66773049
复制相似问题