我有一个带有命令的机器人,允许用户输入用短划线分隔然后指定时间的消息,然后将其传递给机器人,机器人在指定的时间后提醒用户该消息已经过去了。
function reminder(msg) {
const message = msg.content.replace(this.prefix+this.name+" ","");
const params = message.split("-");
setTimeout(() => {
msg.channel.sendMessage(params[0]);
}, (parseInt(params[1])*1000));
}
我打算在Heroku上运行这个机器人,但由于我只是一个少年,这对我来说是一个爱好,我必须使用Heroku每月给我的免费dyno小时。如果有人使用机器人的这个功能,setTimeout的计时机制会启用我的dynos并使用免费的dyno小时吗?
编辑:如果您认为Heroku有更好的免费替代品,那么你们中任何一个人都会知道这很好:)
答案 0 :(得分:1)
是和否。
假设setTimeout中的逻辑将在每次少于 30分钟之后运行,因此 YES heroku服务器仍将处于唤醒状态,因此它将使用免费dyno小时。
但如果超过30分钟后要发送的消息,假设一小时,那么如果在此期间没有任何请求命中您的服务器,您的服务器将在30m不活动后休眠,所以 NO < / strong>只要没有传入请求。
了解更多关于Heroku免费dyno小时的信息,here。
答案 1 :(得分:0)
您可以尝试:http://neversleep.ml
它会监视您的服务器,并会在崩溃时发送通知电子邮件。