Merge pull request #2108 from belousotroll/fix-calculating-tg-starts-amount

Fix calculating tg starts amount
This commit is contained in:
Egor
2025-12-06 06:24:52 +03:00
committed by GitHub
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
@@ -1284,7 +1285,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")