fix: calculating telegram starts amount

This commit is contained in:
belousotroll
2025-11-30 19:29:29 +07:00
parent 85ea3d97ef
commit 160ff7ff9f
2 changed files with 3 additions and 9 deletions

View File

@@ -1,6 +1,7 @@
import hashlib
import hmac
import logging
import math
import os
import re
import html
@@ -1280,7 +1281,7 @@ class Settings(BaseSettings):
return stars * self.get_stars_rate()
def rubles_to_stars(self, rubles: float) -> int:
return max(1, int(rubles / self.get_stars_rate()))
return max(1, math.ceil(rubles / self.get_stars_rate()))
def get_admin_notifications_chat_id(self) -> Optional[int]:
if not self.ADMIN_NOTIFICATIONS_CHAT_ID:

View File

@@ -56,14 +56,7 @@ class TelegramStarsMixin:
# Если количество звёзд не задано, вычисляем его из курса.
if stars_amount is None:
rate = Decimal(str(settings.get_stars_rate()))
if rate <= 0:
raise ValueError("Stars rate must be positive")
normalized_stars = (amount_rubles / rate).to_integral_value(
rounding=ROUND_FLOOR
)
stars_amount = int(normalized_stars) or 1
stars_amount = settings.rubles_to_stars(float(amount_rubles))
if stars_amount <= 0:
raise ValueError("Stars amount must be positive")