From fe598f94a3dcd1f5c1ec0b5d0516b5908c812727 Mon Sep 17 00:00:00 2001 From: DIKER0K Date: Sun, 7 Dec 2025 23:21:23 +0500 Subject: [PATCH] fix coin accural AKF --- app/services/coins.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/app/services/coins.py b/app/services/coins.py index 2b84bda..ce92496 100644 --- a/app/services/coins.py +++ b/app/services/coins.py @@ -28,24 +28,22 @@ class CoinsService: current_total_time = user.get("total_time_played", 0) if last_update: + # Время с последнего начисления last_timestamp = last_update["timestamp"] seconds_since_update = int((now - last_timestamp).total_seconds()) - - # Берём минимум: сколько прошло по часам и сколько игрок реально онлайн - seconds_for_reward = min(seconds_since_update, online_time) - - # Начисляем только за полные минуты - minutes_to_reward = seconds_for_reward // 60 + + # Начисляем монеты только за полные минуты, + # но не больше 1 минуты за одно событие + minutes_to_reward = seconds_since_update // 60 if minutes_to_reward < 1: return - minutes_to_reward = min(minutes_to_reward, MAX_MINUTES_PER_UPDATE) + # ВАЖНО: не позволяем начислить больше 1 минуты за один апдейт + minutes_to_reward = min(minutes_to_reward, 1) else: - # Первое обновление — считаем только от online_time, с лимитом для безопасности + # Первое обновление (ограничиваем для безопасности) minutes_to_reward = min(online_time // 60, 5) - if minutes_to_reward < 1: - return if minutes_to_reward > 0: # Обновляем монеты и время