Add subscription link field to user model

- Add subscription_link column to users table (nullable, unique)
- Add SUBSCRIPTION_URL to config settings
- Update user creation to include subscription link from Remnawave
- Add support subscription ticket creation with formatted message
- Add "update link" button to main menu
- Refactor support subscription formatting to include user details
This commit is contained in:
2026-04-09 21:09:29 +07:00
parent 2bb12f2ff8
commit 60de871e0c
13 changed files with 408 additions and 114 deletions

View File

@@ -171,16 +171,33 @@ def calculate_price(subscription: SubscriptionPlan):
) * convert_duration_to_int(subscription.duration)
def format_support_subscription(subscription: SubscriptionPlan) -> str:
def format_subscription_link(link: Optional[str] = None):
return f"<code>{link or '...'}</code>"
def format_support_subscription(
subscription: SubscriptionPlan,
full_name: str,
user_id: int,
username: Optional[str] = None,
) -> str:
username = format_username(username)
whitelist_description = "ВЫКЛ"
if subscription.devices >= settings.whitelist_device_threshold:
whitelist_description = "ВКЛ (Бесплатно)"
elif subscription.whitelists:
whitelist_description = "ВКЛ (Платно)"
return (
f"Подписка на {convert_duration_to_int(subscription.duration)} месяцев.\n"
f"Количество устройств: {subscription.devices}\n"
f"Белые списки: {whitelist_description}\n\n"
f"Итого: {calculate_price(subscription)}"
return texts.SUPPORT_SUBSCRIPTION.format(
full_name=full_name,
telegram_id=user_id,
username_display=username,
duration=convert_duration_to_int(subscription.duration),
devices=subscription.devices,
whitelist_description=whitelist_description,
price=calculate_price(subscription),
)
def get_subscription_link(short_uuid: str):
return settings.subscription_url + "/" + short_uuid