From 8bcb0094b211d09c163d799f3bc83d73f82c4255 Mon Sep 17 00:00:00 2001 From: db123 Date: Thu, 25 Jun 2026 22:09:36 +0330 Subject: [PATCH] feat: treat quota limit of 0 as unlimited Pre-check now skips periods where limit is 0, allowing users to have unlimited quota by setting daily_limit_mb/weekly_limit_mb/monthly_limit_mb to 0 in the database. --- internal/handler/download.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/handler/download.go b/internal/handler/download.go index 7da6e1e..cbb6ce1 100644 --- a/internal/handler/download.go +++ b/internal/handler/download.go @@ -113,11 +113,13 @@ func (h *Handler) handleURLInput(ctx context.Context, chatID int64, text string, return } - // Reject if user has already exhausted quota (used >= limit) with a minimum threshold. + // Reject if user has already exhausted quota (limit of 0 = unlimited). q, err := h.Repo.GetOrCreateQuotas(userID) if err == nil { q = h.resetQuotasIfNeeded(q) - if q.DailyUsedMB >= q.DailyLimitMB || q.WeeklyUsedMB >= q.WeeklyLimitMB || q.MonthlyUsedMB >= q.MonthlyLimitMB { + if (q.DailyLimitMB > 0 && q.DailyUsedMB >= q.DailyLimitMB) || + (q.WeeklyLimitMB > 0 && q.WeeklyUsedMB >= q.WeeklyLimitMB) || + (q.MonthlyLimitMB > 0 && q.MonthlyUsedMB >= q.MonthlyLimitMB) { h.sendText(ctx, chatID, fmt.Sprintf( "Quota exceeded. Daily: %d/%d MB, Weekly: %d/%d MB, Monthly: %d/%d MB.", q.DailyUsedMB, q.DailyLimitMB, q.WeeklyUsedMB, q.WeeklyLimitMB, q.MonthlyUsedMB, q.MonthlyLimitMB))