0

我使用 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 服务器上运行它,但报告看起来都还不错,没有资源被使用在异常高的水平。

谢谢。

4

0 回答 0