def check_cooldowns(self, user, method, settings, triggered=False, brief=False):
user_time = settings["Players"][user.id]["Cooldowns"][method]
user_membership = settings["Players"][user.id]["Membership"]
try:
reduction = settings["Memberships"][user_membership]["Cooldown Reduction"]
except KeyError:
reduction = 0
# Find the base cooldown by method
if method in c_games:
base = settings["Games"][method]["Cooldown"]
elif method == "Payday":
reduction = 0
base = settings["System Config"]["Payday Timer"]
else:
reduction = 0
base = settings["System Config"]["Transfer Cooldown"]
# Begin cooldown logic calculation
if user_time == 0: # For new accounts
if triggered:
settings["Players"][user.id]["Cooldowns"][method] = datetime.utcnow().isoformat()
super().save_system()
return None
elif int((datetime.utcnow() - parser.parse(user_time)).total_seconds()) + reduction < base:
diff = int((datetime.utcnow() - parser.parse(user_time)).total_seconds())
seconds = base - diff - reduction
if brief:
remaining = self.time_format(seconds, True)
msg = remaining
else:
remaining = self.time_format(seconds, False)
msg = _("{} is still on a cooldown. You still have: {}").format(method, remaining)
return msg
else:
if triggered:
settings["Players"][user.id]["Cooldowns"][method] = datetime.utcnow().isoformat()
super().save_system()
return None
评论列表
文章目录