我使用 Node.js 和discord.js-commando
框架创建了一个不和谐机器人。
其中一个功能是创建写作冲刺,它本质上是一个计时器,所以你可以说:我想写 20 分钟,从 5 分钟开始。然后,机器人将等待 5 分钟并开始 sprint,然后在 20 分钟后通知执行此操作的用户它已结束并等待字数进入,然后发布结果。
当机器人只在一台服务器上时,这工作得很好,但最近它被添加到了几个服务器上(根据!stats
命令,有 78 个,虽然我不知道有多少人在积极使用它),从那时起,它一直非常不稳定.
有时冲刺永远不会开始,有时它永远不会结束,有时它会结束,然后在你发布你的字数之后,它永远不会发布最终结果。
这是我第一次涉足 Node.js,所以我不知道我是否做错了什么。我正在使用该setTimeout
功能执行所有计时器。
这是命令文件:GitHub 链接
例如,这是在用户提交他们的字数后设置的超时,如果每个人现在都提交了他们的字数,那么我们可以显示结果:
msg.say('The word counts are in. Results coming up shortly...');
this.finished = 1;
// Clear original timeout
this.clear();
// Set new one
this.messageTimeout = setTimeout(function() {
obj.finish(msg);
}, 10000);
在哪里clear
:
clear() {
clearTimeout(this.messageTimeout);
}
这样做有什么本质上的错误吗?我对 Node.js 知之甚少......我是否应该考虑cron
每分钟做一次而不是处理冲刺?或者这可能是服务器问题?我在免费的 EC2 AWS 服务器上运行它,但报告看起来都还不错,没有资源被使用在异常高的水平。
谢谢。