首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >telebot不会停下来开始

telebot不会停下来开始
EN

Stack Overflow用户
提问于 2021-03-24 00:14:49
回答 2查看 543关注 0票数 1

我试图每10秒重新启动我的机器人(为了进行测试,我想每10分钟左右重新启动一次),而且我似乎无法做到。我试过:

代码语言:javascript
复制
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运行的实例。有办法完全阻止机器人吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-28 14:41:38

谢谢所有想帮忙的人。

但我想出了一个棘手的解决方案。

我将文件从heroku移动到vps,然后安装pm2并将其设置为运行节点index.js(主js文件),然后通过键入crontab -e并键入以下内容,安装cron并将其设置为每10分钟重新启动pm2:

*/10 ***下午重新启动0

现在我的机器人每10分钟重新启动一次。

票数 -1
EN

Stack Overflow用户

发布于 2021-03-26 14:53:50

以确保机器人已经停止,没有任何东西挥之不去。

您可以将它放在自己的节点脚本中,然后用以下方式运行它:

代码语言:javascript
复制
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作业“脚本。请记住,这将杀死进程,这样它就不会有任何机会进行任何清理,因此如果您想先温柔地终止进程。首先向子进程发送一条消息,以便它可以尝试自行终止。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66773049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档