fix refferal system
This commit is contained in:
@@ -672,6 +672,9 @@ async def handle_referral_on_balance_update(tg_id: int, amount: float):
|
||||
tg_id (int): Идентификатор Telegram пользователя, пополнившего баланс
|
||||
amount (float): Сумма пополнения баланса
|
||||
"""
|
||||
|
||||
if amount <= 0:
|
||||
return
|
||||
conn = None
|
||||
try:
|
||||
conn = await asyncpg.connect(DATABASE_URL)
|
||||
|
||||
@@ -4,15 +4,12 @@ from aiogram import BaseMiddleware, Bot
|
||||
from aiogram.types import TelegramObject, CallbackQuery
|
||||
from cachetools import TTLCache
|
||||
|
||||
# Время троттлинга (в секундах)
|
||||
THROTTLE_TIME = 3.0
|
||||
THROTTLE_TIME = 1.0
|
||||
|
||||
|
||||
class ThrottlingMiddleware(BaseMiddleware):
|
||||
def __init__(self) -> None:
|
||||
# Общий кэш для всех запросов
|
||||
self.cache = TTLCache(maxsize=10_000, ttl=THROTTLE_TIME)
|
||||
# Кэш для уведомлений о троттлинге
|
||||
self.throttle_notice_cache = TTLCache(maxsize=10_000, ttl=3.0)
|
||||
|
||||
async def __call__(
|
||||
@@ -21,13 +18,10 @@ class ThrottlingMiddleware(BaseMiddleware):
|
||||
event: TelegramObject,
|
||||
data: Dict[str, Any],
|
||||
) -> Any:
|
||||
# Получаем бота и пользователя
|
||||
bot: Bot | None = data.get("bot", None)
|
||||
user_id = event.from_user.id if event.from_user else None
|
||||
|
||||
# Проверяем троттлинг
|
||||
if user_id in self.cache:
|
||||
# Показываем уведомление, если это CallbackQuery и уведомление не показывалось недавно
|
||||
if isinstance(event, CallbackQuery) and user_id not in self.throttle_notice_cache:
|
||||
self.throttle_notice_cache[user_id] = None
|
||||
await bot.answer_callback_query(
|
||||
|
||||
Reference in New Issue
Block a user