非常简单,但是基本上我需要检查自从用户提供了一个特定的命令后是否已经过了24小时。(限速1使用/天)当他们使用该命令时,当前时间被保存和存储,因此没有问题,但是当前系统仅在日期上工作,检查是否lastDaily的日期部分小于当前日期。这导致命令在午夜重置的情况。
我希望这样,如果用户在下午2:25在2019年12月9日他们直到第二天同一时间(或下一分钟)才能使用它。
module.exports = {
config: {
// Command Config: Hidden for space's sake.
},
run: async (bot, message, args) => {
let userData = JSON.parse(fs.readFileSync("db/userdata.json", "utf8"));
let sender = message.author;
// Initialise missing data if needed
if (!userData[sender.id]) { // if there is no userdata,
userData[sender.id] = {}; // Create it as an empty object
}
if (!userData[sender.id].money) {
userData[sender.id].money = 1000;
}
if (!userData[sender.id].lastDaily) {
userData[sender.id].lastDaily = "";
}
// Save Changes to File
fs.writeFile("db/userdata.json", JSON.stringify(userData), err => {
if (err) console.error(err);
});
var cancollect = false;
let ld = userData[sender.id].lastDaily;
if (ld != moment().format("L")) { // MM/DD/YY
userData[sender.id].lastDaily = moment().format("L");
userData[sender.id].money += 500;
// Send Success Embed
} else {
// Send Failure Embed
}
// Save Changes Again
fs.writeFile("db/userdata.json", JSON.stringify(userData), err => {
if (err) console.error(err);
});
}
};
如果您以以下格式存储日期月/日/年,您不能检查时差。所以,为了得到时差,如果你能以类似这样的格式存储它" 2019-12-10T10:53:53+05:30 "你可以通过moment().format当前时间戳。
你可以这样做
lastDate = moment().format()
> "2019-12-09T10:53:53+05:30"
nextDay = moment(lastDate).add(1, 'days').format()
> "2019-12-10T10:53:53+05:30"
一旦得到上述格式的时间戳,就需要将日期转换成unix格式
lastDate = moment(lastDate).valueOf()
> 1575869033000
nextDay = moment(nextDay).valueOf()
> 1575955433000
现在,你可以通过这样做来获得时间上的差异
result = moment(nextDay-lastDate).valueOf()
> 86400000 // which is =24hrs
希望有用
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。