我使用Node.js和discord.js-commando
框架创建了一个不和谐的机器人。
其中一项功能是创建冲刺(sprint sprint),本质上是一个计时器,所以你可以说:我想写20分钟,从5分钟开始。然后,该机器人会等待5分钟并开始冲刺,然后在20分钟后它会通知用户这样做已经结束,并等待字数输入,然后发布结果。
当bot仅在一台服务器上运行时,此方法工作正常,但最近又将其添加到其他服务器中(根据!stats
命令,该数量为78,尽管我不知道有多少人正在积极使用它),从那以后,它变得非常不稳定。
有时候,冲刺永远不会开始,有时它永远不会结束,有时它会结束,然后在您发布字数统计后,它永远不会发布最终结果。
这是我第一次涉足Node.js,所以我不知道自己做错了什么。我正在使用setTimeout
函数来处理所有计时器。
以下是命令文件:link to 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服务器上运行它,但是报告看起来都还不错,没有资源在异常高的级别上使用。
谢谢。