fix coin accural AKF

This commit is contained in:
2025-12-07 23:21:23 +05:00
parent 845291acab
commit fe598f94a3

View File

@ -28,24 +28,22 @@ class CoinsService:
current_total_time = user.get("total_time_played", 0) current_total_time = user.get("total_time_played", 0)
if last_update: if last_update:
# Время с последнего начисления
last_timestamp = last_update["timestamp"] last_timestamp = last_update["timestamp"]
seconds_since_update = int((now - last_timestamp).total_seconds()) seconds_since_update = int((now - last_timestamp).total_seconds())
# Берём минимум: сколько прошло по часам и сколько игрок реально онлайн # Начисляем монеты только за полные минуты,
seconds_for_reward = min(seconds_since_update, online_time) # но не больше 1 минуты за одно событие
minutes_to_reward = seconds_since_update // 60
# Начисляем только за полные минуты
minutes_to_reward = seconds_for_reward // 60
if minutes_to_reward < 1: if minutes_to_reward < 1:
return return
minutes_to_reward = min(minutes_to_reward, MAX_MINUTES_PER_UPDATE) # ВАЖНО: не позволяем начислить больше 1 минуты за один апдейт
minutes_to_reward = min(minutes_to_reward, 1)
else: else:
# Первое обновление считаем только от online_time, с лимитом для безопасности # Первое обновление (ограничиваем для безопасности)
minutes_to_reward = min(online_time // 60, 5) minutes_to_reward = min(online_time // 60, 5)
if minutes_to_reward < 1:
return
if minutes_to_reward > 0: if minutes_to_reward > 0:
# Обновляем монеты и время # Обновляем монеты и время