271 lines
12 KiB
Python
271 lines
12 KiB
Python
# ============================================================
|
||
# PREMIUM EMOJI
|
||
# ============================================================
|
||
|
||
|
||
class PremiumEmoji:
|
||
def __init__(self, emoji_id: int, emoji: str):
|
||
self.emoji_id = emoji_id
|
||
self.emoji = emoji
|
||
|
||
def __str__(self) -> str:
|
||
return f'<tg-emoji emoji-id="{self.emoji_id}">{self.emoji}</tg-emoji>'
|
||
|
||
|
||
# — Иконки бота
|
||
MALENIA_LOGO = PremiumEmoji(5265053829522562789, "☀️")
|
||
MALENIA_HEART = PremiumEmoji(5276516908257025723, "❤️")
|
||
MALENIA_LINK = PremiumEmoji(5276012730636082950, "🔗")
|
||
MALENIA_COINS = PremiumEmoji(5276298354551199712, "🪙")
|
||
MALENIA_LOCKED = PremiumEmoji(5276346642868508688, "🔒")
|
||
MALENIA_SUPPORT = PremiumEmoji(5275968088746006467, "🎧")
|
||
MALENIA_SHIELD = PremiumEmoji(5444924740596702937, "☀️")
|
||
MALENIA_SILHOUETTE = PremiumEmoji(5447117295631506779, "☀️")
|
||
MALENIA_CARD = PremiumEmoji(5447145526451543197, "☀️")
|
||
MALENIA_QUESTION = PremiumEmoji(5276157346479903928, "❤️")
|
||
MALENIA_CHAT = PremiumEmoji(5445391895599554146, "☀️")
|
||
MALENIA_CHECK = PremiumEmoji(5447446814112389179, "☀️")
|
||
MALENIA_CROSS = PremiumEmoji(5444977405485687021, "☀️")
|
||
MALENIA_WARN = PremiumEmoji(5447571325214303934, "☀️")
|
||
MALENIA_BANK = PremiumEmoji(5447344860178717542, "☀️")
|
||
|
||
# ============================================================
|
||
# ОБЩИЕ БЛОКИ
|
||
# ============================================================
|
||
|
||
_DIVIDER = "────────────────────────────\n\n"
|
||
|
||
|
||
# ============================================================
|
||
# СТАТУСЫ ПОДПИСКИ
|
||
# ============================================================
|
||
|
||
# — Иконки статусов
|
||
STATUS_ICON_ACTIVE = "🟢"
|
||
STATUS_ICON_DISABLED = "⚪"
|
||
STATUS_ICON_EXPIRED = "🔴"
|
||
STATUS_ICON_LIMITED = "🟠"
|
||
STATUS_ICON_UNKNOWN = "❓"
|
||
|
||
# — Тексты статусов
|
||
STATUS_ACTIVE = "активна"
|
||
STATUS_DISABLED = "отключена"
|
||
STATUS_EXPIRED = "истёк"
|
||
STATUS_LIMITED = "трафик ограничен"
|
||
STATUS_UNKNOWN = "неизвестный статус"
|
||
|
||
|
||
# ============================================================
|
||
# ФОРМАТИРОВАНИЕ ДАННЫХ
|
||
# ============================================================
|
||
|
||
# — Дни до истечения подписки
|
||
DAYS_LEFT_POSITIVE = "{days} дн."
|
||
DAYS_LEFT_EXPIRED = "истекла {days} дн. назад"
|
||
DAYS_LEFT_TODAY = "подходит к концу сегодня"
|
||
|
||
# — Username
|
||
NO_USERNAME = "отсутствует"
|
||
USERNAME_DISPLAY = "@{username}"
|
||
|
||
# — Internal Squads
|
||
NO_SQUADS = "отсутствуют"
|
||
|
||
# — HWID лимит
|
||
UNLIMITED_HWID = "без лимитов"
|
||
|
||
# — OS эмодзи
|
||
WINDOWS = "💻"
|
||
LINUX = "🐧"
|
||
ANDROID = "💚"
|
||
APPLE = "🍎"
|
||
UNKNOWN_OS = "👤"
|
||
|
||
# — Трафик
|
||
NO_TRAFFIC_LIMIT = "не ограничен"
|
||
TRAFFIC_WITH_LIMIT = "{used} / {limit}"
|
||
TRAFFIC_NO_LIMIT = "{used}"
|
||
|
||
# — Прочее
|
||
NOTHING_PLACEHOLDER = "∅"
|
||
GENERAL_SUCCESS = "✅"
|
||
|
||
|
||
# ============================================================
|
||
# ГЛАВНОЕ МЕНЮ
|
||
# ============================================================
|
||
|
||
MAIN_MENU = (
|
||
str(MALENIA_LOGO)
|
||
+ " <b>Malenia — <i>{quote}</i></b>\n\n"
|
||
+ f"<i>{MALENIA_CARD} Личный кабинет</i>\n"
|
||
+ f"<b>{MALENIA_COINS} Ваш баланс:</b> <code>{{balance}}₽</code>\n"
|
||
+ f"<b>{MALENIA_LINK} Ссылка на подписку: <code>{{link}}</code></b>"
|
||
)
|
||
|
||
|
||
# ============================================================
|
||
# FAQ
|
||
# ============================================================
|
||
|
||
FAQ_TEXT = (
|
||
f"<b>{MALENIA_HEART} Ваши частые вопросы:</b>\n\n"
|
||
f"<b>{MALENIA_QUESTION} — Как продлить подписку?</b>\n"
|
||
f"{MALENIA_CHAT} — Подписка автоматически продляется <b>из бота</b>. Просто пополните баланс на нужную сумму и мы сами продлим вашу подписку. Вы можете выключить автопродление и продлять вручную, если захотите.\n\n"
|
||
f"<b>{MALENIA_QUESTION} — Как изменить количество устройств / опцию Обхода Белых Списков и др.?</b>\n"
|
||
f'{MALENIA_CHAT} — Вы можете это сделать в кнопке "Купить". Ваша подписка обновится на новый срок. Подробнее про механику продления вы можете почитать в <a href="https://telegra.ph/FAQ-Pokupka-podpiski-pri-dejstvuyushchej-podpiske-05-24">нашей статье</a>.\n\n'
|
||
f"<b>{MALENIA_QUESTION} — Что делать если VPN не работает?</b>\n"
|
||
f'{MALENIA_CHAT} — Пишите <a href="https://t.me/maleniasupportbot">в поддержку</a>. <b>При обращении, не забывайте уточнять регион и оператора</b>, т.к. ограничения разнятся от этих параметров.\n\n'
|
||
f"<b>{MALENIA_CHAT} Блиц:</b>\n"
|
||
"— Информация о подписке в боте.\n"
|
||
"— Трафик безлимитен.\n"
|
||
'— Тарифы начинаются от 3-х устройств. Меньше нельзя. Хотите больше 12? Вам <a href="https://t.me/maleniasupportbot">в поддержку</a>.\n'
|
||
)
|
||
|
||
|
||
# ============================================================
|
||
# СОСТОЯНИЯ И ОБРАБОТКА
|
||
# ============================================================
|
||
|
||
CALLBACK_PROCESSING = "⏳"
|
||
GENERAL_PROCESSING = "<i>⏳ Подождите...</i>"
|
||
CONTEXT_REINITIATED = "🌑 Сессия сброшена. Данные могли обновиться."
|
||
|
||
|
||
# ============================================================
|
||
# ОШИБКИ И FALLBACK
|
||
# ============================================================
|
||
|
||
STANDARD_FALLBACK = (
|
||
f"<b>{MALENIA_CROSS} Ошибка.</b> Прожмите /start. Если не поможет то скоро починим."
|
||
)
|
||
|
||
CALLBACK_FALLBACK = "❌ Что-то пошло не так. Повторите попытку или обратитесь в поддержку."
|
||
|
||
UNDEFINED_MESSAGE = f"{MALENIA_CROSS} Таких команд у нас нет.\n\n<i>Ищете техподдержку? Вам в /support</i>\n<i>Потерялись? Вам в /start.</i>"
|
||
|
||
|
||
# ============================================================
|
||
# ИНФОРМАЦИЯ О ПОДПИСКЕ
|
||
# ============================================================
|
||
|
||
SUBSCRIPTION_INFORMATION = (
|
||
"<b>📊 Данные о подписке</b>\n\n"
|
||
f"{MALENIA_LINK} Ссылка на подписку: <code>{{link}}</code>\n\n"
|
||
"{status_icon} <b>Статус:</b> {status}\n"
|
||
+ "📅 <b>Истекает:</b> {expire_date}\n"
|
||
+ "⏳ <b>Осталось дней:</b> {days_left}\n"
|
||
+ "📊 <b>Израсходовано трафика:</b> {used_traffic}\n"
|
||
+ "📱 <b>Количество устройств:</b> {hwid_limit}\n"
|
||
+ "<b>💸 Автопродление:</b> {autorenew}"
|
||
)
|
||
|
||
NO_SUBSCRIPTION = f"{MALENIA_WARN} <b>Подписка не найдена.</b>"
|
||
|
||
NO_CONNECTIONS = f"{MALENIA_SHIELD} <b>У вас нет подключённых устройств.</b>"
|
||
HWID_LIST = f"{MALENIA_SHIELD} <b>Ваши устройства ({{count}} / {{limit}}):</b>"
|
||
PROMPT_HWID_DELETION = f"{MALENIA_WARN} <b>Вы уверены что хотите удалить это устройство?</b>"
|
||
SUCCESSFUL_HWID_DELETION = f"{MALENIA_HEART} <b>Устройство успешно удалено.</b>"
|
||
|
||
# ============================================================
|
||
# РЕФЕРАЛЬНАЯ СИСТЕМА
|
||
# ============================================================
|
||
|
||
REFERALS_MENU = (
|
||
"<b>👥 Реферальная система</b>\n\n"
|
||
"Делитесь с друзьями и получайте деньги на оплату своей подписки.\n"
|
||
f"<b>{MALENIA_COINS} На вашем счету:</b> "
|
||
"<code>{balance}₽</code>\n"
|
||
f"<b>{MALENIA_LINK} Ваша реферальная ссылка:</b> "
|
||
"<code>{link}</code>"
|
||
)
|
||
|
||
|
||
# ============================================================
|
||
# ОФОРМЛЕНИЕ ПОДПИСКИ
|
||
# ============================================================
|
||
|
||
SUBSCRIPTION_DEVICE_SELECTOR = (
|
||
f"<b>{MALENIA_QUESTION} Сколько устройств вы хотите подключить?</b>\n\nЦена: <b>{{price}}₽</b>"
|
||
)
|
||
|
||
SUBSCRIPTION_DURATION_SELECTOR = f"<b>{MALENIA_QUESTION} На какой срок хотите оформить подписку?</b>\n\nИтого: <b>{{price}}₽</b> <i>(скидка: {{discount}}%)</i>"
|
||
|
||
WHITELISTS_ALREADY_ON = "Белые списки уже активны."
|
||
|
||
CHECKOUT_PAYMENT_CHOICE = (
|
||
f"<b>{MALENIA_BANK} Пополнение баланса:</b>\n\n<i>❓ Выберите способ оплаты:</i>"
|
||
)
|
||
|
||
|
||
# ============================================================
|
||
# БИЛЛИНГ
|
||
# ============================================================
|
||
|
||
_BILL_TEMPLATE = (
|
||
f"<b>{MALENIA_CHECK} Счёт на {{amount}}₽</b>\n\n"
|
||
"<i>‼️ Вам придёт уведомление в течение нескольких минут после завершения платежа.</i>\n"
|
||
f"<b>{MALENIA_CARD} Способ оплаты:</b> <i>{{provider}}</i>\n\n"
|
||
)
|
||
|
||
_BILL_LINK = f"<b>{MALENIA_LINK} Ссылка на оплату:</b>"
|
||
|
||
BILL_CREATION = _BILL_TEMPLATE + _DIVIDER + GENERAL_PROCESSING
|
||
|
||
BILL_CREATED = _BILL_TEMPLATE + _DIVIDER + _BILL_LINK
|
||
|
||
INSUFFICIENT_FUNDS = f"<b>{MALENIA_CROSS} Недостаточно средств для проведения операции.</b>\n\n<b>💰 Текущий баланс:</b> <code>{{balance}}₽</code>\n<b>💸 Требуется:</b> <code>{{amount}}₽</code>\n\n<i>{MALENIA_CARD} Пополните баланс на <code>{{diff}}₽</code></i>"
|
||
|
||
SUCCESSFULLY_CREATED_SUBSCRIPTION = f"<b>{MALENIA_HEART} Ваша подписка успешно оплачена!</b> Ссылка на добавления доступна в главном меню."
|
||
|
||
DEPOSIT_AMOUNT = f"<b>{MALENIA_COINS} Укажите сумму пополнения:</b>"
|
||
|
||
DEPOSIT_AMOUNT_FALLBACK = (
|
||
f"<b>{MALENIA_CROSS} Сумма пополнения указана неверно, повторите попытку.</b>"
|
||
)
|
||
|
||
DEPOSIT_AMOUNT_BELOW_MINIMAL = (
|
||
f"<b>{MALENIA_CROSS} Сумма пополнения ниже минимальной - <code>{{threshold}}₽</code>.</b>"
|
||
)
|
||
|
||
|
||
# ============================================================
|
||
# АВТОПРОДЛЕНИЕ
|
||
# ============================================================
|
||
|
||
AUTORENEWAL_INSUFFICIENT_FUNDS = (
|
||
f"<b>{MALENIA_WARN} Не удалось продлить подписку автоматически.</b>\n"
|
||
"Недостаточно средств на балансе (нужно <code>{price}₽</code>, <code>доступно {balance}₽</code>). Автопродление отключено."
|
||
)
|
||
|
||
AUTORENEWAL_SUCCESS = (
|
||
f"<b>{MALENIA_CARD} Подписка продлена автоматически. Списано <code>{{price}}₽</code>.</b>"
|
||
"Новая дата окончания: <code>{end_date}</code>."
|
||
)
|
||
|
||
|
||
# ============================================================
|
||
# ПОДДЕРЖКА
|
||
# ============================================================
|
||
|
||
SUPPORT_INIT = "<b>🎧 Тех. Поддержка Malenia</b> — не здесь. Кнопка ниже."
|
||
|
||
# ============================================================
|
||
# АДМИН-ПАНЕЛЬ
|
||
# ============================================================
|
||
|
||
ADM_MAIN_MENU = (
|
||
f"<b>{MALENIA_SHIELD} Malenia. Админ-панель.</b>\n"
|
||
"<i>— {quote}</i>\n\n"
|
||
f"<b>{MALENIA_SILHOUETTE} Пользователей в боте:</b> <code>{{user_count}}</code>\n"
|
||
f"<b>{MALENIA_CARD} Ваш ID:</b> <code>{{user_id}}</code>\n"
|
||
)
|
||
|
||
ADM_PROMO_INIT = "<b>📢 Введите/перешлите текст рассылки:</b>"
|
||
|
||
ADM_VERIFY_PROMOTION = (
|
||
"<b>❓ Отправить рассылку? <i>Это действие будет невозможно отменить.</i></b>"
|
||
)
|
||
|
||
SUCCESSFULLY_SENT_PROMO = "<b>💚 Успешно отправлена рассылка.</b>\n<i>⚡ Успешных отправок: <code>{successful}</code>.</i>"
|