автопродление ключа

This commit is contained in:
Vladless
2024-10-13 23:11:39 +03:00
parent a0bada3e76
commit 41dd64f7c8
2 changed files with 45 additions and 15 deletions
+6
View File
@@ -160,6 +160,12 @@ async def handle_referral_on_balance_update(tg_id: int, amount: float):
# Начисляем бонус (25% от платежа) пригласившему
bonus = amount * 0.25 # 25% от платежа
# Проверяем, чтобы бонус не был отрицательным
if bonus < 0:
bonus = 0
# Обновляем баланс пригласившего
await update_balance(referrer_tg_id, bonus)
# Обновляем статус бонуса для пригласившего
+39 -15
View File
@@ -8,9 +8,9 @@ from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from auth import login_with_credentials
from bot import bot
from client import delete_client
from client import delete_client, extend_client_key
from config import ADMIN_ID, ADMIN_PASSWORD, ADMIN_USERNAME, DATABASE_URL
from database import get_balance
from database import get_balance, update_balance
router = Router()
@@ -34,7 +34,7 @@ async def notify_expiring_keys(bot: Bot):
server_id = record['server_id']
time_left = (expiry_time / 1000) - datetime.utcnow().timestamp()
hours_left = max(0, int(time_left // 3600) - 3)
hours_left = max(0, int(time_left // 3600))
expiry_date = datetime.utcfromtimestamp(expiry_time / 1000).strftime('%Y-%m-%d %H:%M:%S')
balance = await get_balance(tg_id)
@@ -76,24 +76,48 @@ async def notify_expiring_keys(bot: Bot):
client_id = record['client_id']
server_id = record['server_id']
await conn.execute('DELETE FROM keys WHERE client_id = $1', client_id)
balance = await get_balance(tg_id)
session = await login_with_credentials(server_id, ADMIN_USERNAME, ADMIN_PASSWORD)
await delete_client(session, server_id, client_id)
if balance >= 100:
# Продлеваем ключ на 1 месяц и списываем 100 рублей
new_expiry_time = datetime.utcnow() + timedelta(days=30)
await conn.execute('''
UPDATE keys SET expiry_time = $1 WHERE client_id = $2
''', new_expiry_time.timestamp() * 1000, client_id)
keyboard = InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text='В профиль', callback_data='view_profile')]
])
# Списываем 100 рублей с баланса
await update_balance(tg_id, -100)
message = f"Ваш ключ <b>{email}</b> истек , через 3 часа будет удалён."
session = await login_with_credentials(server_id, ADMIN_USERNAME, ADMIN_PASSWORD)
await extend_client_key(session, server_id, client_id, 30)
try:
await bot.send_message(chat_id=tg_id, text=message, parse_mode='HTML', reply_markup=keyboard)
except Exception as e:
print(f"Ошибка при отправке сообщения пользователю {tg_id}: {e}. Пропускаем этого пользователя.")
message = (f"Ваш ключ <b>{email}</b> был автоматически продлен на 1 месяц, так как у вас на балансе было достаточно средств. "
f"Новый срок истечения: {new_expiry_time.strftime('%Y-%m-%d %H:%M:%S')}.\n"
f"Ваш новый баланс: <b>{balance - 100:.2f} руб.</b>")
try:
await bot.send_message(chat_id=tg_id, text=message, parse_mode='HTML')
except Exception as e:
print(f"Ошибка при отправке сообщения пользователю {tg_id}: {e}. Пропускаем этого пользователя.")
else:
# Удаляем ключ, если баланс недостаточный
await conn.execute('DELETE FROM keys WHERE client_id = $1', client_id)
session = await login_with_credentials(server_id, ADMIN_USERNAME, ADMIN_PASSWORD)
await delete_client(session, server_id, client_id)
keyboard = InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text='В профиль', callback_data='view_profile')]
])
message = f"Ваш ключ <b>{email}</b> истек, и был удален."
try:
await bot.send_message(chat_id=tg_id, text=message, parse_mode='HTML', reply_markup=keyboard)
except Exception as e:
print(f"Ошибка при отправке сообщения пользователю {tg_id}: {e}. Пропускаем этого пользователя.")
finally:
await conn.close()
except Exception as e:
print(f"Ошибка при отправке уведомлений: {e}")
# Импортируйте функцию, которая возвращает все соединения