feat: implement subscription management and billing enhancements

This commit is contained in:
2026-04-29 20:10:26 +07:00
parent 120e19e667
commit db2dabed58
12 changed files with 223 additions and 28 deletions

View File

@@ -5,7 +5,8 @@ from random import choice
from bot import texts
from config import settings
from schemas.subscriptions import SubscriptionDuration, SubscriptionPlan
from schemas.subscriptions import InternalSquads, SubscriptionDuration, SubscriptionPlan
from services.rw import RWUserInfo
QUOTES: list[str] = [
"Верните себе свободный интернет.",
@@ -233,3 +234,12 @@ def get_subscription_link(short_uuid: str):
def build_main_menu_text(link: str, balance: int) -> str:
return texts.MAIN_MENU.format(quote=fetch_quote(), link=link, balance=balance)
def is_same_plan(rw_user: RWUserInfo, new_plan: SubscriptionPlan) -> bool:
if rw_user.hwid_device_limit != new_plan.devices:
return False
active_squad_uuids = {squad["uuid"] for squad in rw_user.active_squads}
current_has_whitelist = InternalSquads.WHITELISTS in active_squad_uuids
return current_has_whitelist == new_plan.whitelists