# ============================================================
# 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'{self.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)
+ " Malenia — {quote}\n\n"
+ f"{MALENIA_CARD} Личный кабинет\n"
+ f"{MALENIA_COINS} Ваш баланс: {{balance}}₽\n"
+ f"{MALENIA_LINK} Ссылка на подписку: {{link}}"
)
# ============================================================
# FAQ
# ============================================================
FAQ_TEXT = (
f"{MALENIA_HEART} Ваши частые вопросы:\n\n"
f"{MALENIA_QUESTION} — Как продлить подписку?\n"
f"{MALENIA_CHAT} — Подписка автоматически продляется из бота. Просто пополните баланс на нужную сумму и мы сами продлим вашу подписку. Вы можете выключить автопродление и продлять вручную, если захотите.\n\n"
f"{MALENIA_QUESTION} — Как изменить количество устройств / опцию Обхода Белых Списков и др.?\n"
f'{MALENIA_CHAT} — Вы можете это сделать в кнопке "Купить". Ваша подписка обновится на новый срок. Подробнее про механику продления вы можете почитать в нашей статье.\n\n'
f"{MALENIA_QUESTION} — Что делать если VPN не работает?\n"
f'{MALENIA_CHAT} — Пишите в поддержку. При обращении, не забывайте уточнять регион и оператора, т.к. ограничения разнятся от этих параметров.\n\n'
f"{MALENIA_CHAT} Блиц:\n"
"— Информация о подписке в боте.\n"
"— Трафик безлимитен.\n"
'— Тарифы начинаются от 3-х устройств. Меньше нельзя. Хотите больше 12? Вам в поддержку.\n'
)
# ============================================================
# СОСТОЯНИЯ И ОБРАБОТКА
# ============================================================
CALLBACK_PROCESSING = "⏳"
GENERAL_PROCESSING = "⏳ Подождите..."
CONTEXT_REINITIATED = "🌑 Сессия сброшена. Данные могли обновиться."
# ============================================================
# ОШИБКИ И FALLBACK
# ============================================================
STANDARD_FALLBACK = (
f"{MALENIA_CROSS} Ошибка. Прожмите /start. Если не поможет то скоро починим."
)
CALLBACK_FALLBACK = "❌ Что-то пошло не так. Повторите попытку или обратитесь в поддержку."
UNDEFINED_MESSAGE = f"{MALENIA_CROSS} Таких команд у нас нет.\n\nИщете техподдержку? Вам в /support\nПотерялись? Вам в /start."
# ============================================================
# ИНФОРМАЦИЯ О ПОДПИСКЕ
# ============================================================
SUBSCRIPTION_INFORMATION = (
"📊 Данные о подписке\n\n"
f"{MALENIA_LINK} Ссылка на подписку: {{link}}\n\n"
"{status_icon} Статус: {status}\n"
+ "📅 Истекает: {expire_date}\n"
+ "⏳ Осталось дней: {days_left}\n"
+ "📊 Израсходовано трафика: {used_traffic}\n"
+ "📱 Количество устройств: {hwid_limit}\n"
+ "💸 Автопродление: {autorenew}"
)
NO_SUBSCRIPTION = f"{MALENIA_WARN} Подписка не найдена."
NO_CONNECTIONS = f"{MALENIA_SHIELD} У вас нет подключённых устройств."
HWID_LIST = f"{MALENIA_SHIELD} Ваши устройства ({{count}} / {{limit}}):"
PROMPT_HWID_DELETION = f"{MALENIA_WARN} Вы уверены что хотите удалить это устройство?"
SUCCESSFUL_HWID_DELETION = f"{MALENIA_HEART} Устройство успешно удалено."
# ============================================================
# РЕФЕРАЛЬНАЯ СИСТЕМА
# ============================================================
REFERALS_MENU = (
"👥 Реферальная система\n\n"
"Делитесь с друзьями и получайте деньги на оплату своей подписки.\n"
f"{MALENIA_COINS} На вашем счету: "
"{balance}₽\n"
f"{MALENIA_LINK} Ваша реферальная ссылка: "
"{link}"
)
# ============================================================
# ОФОРМЛЕНИЕ ПОДПИСКИ
# ============================================================
SUBSCRIPTION_DEVICE_SELECTOR = (
f"{MALENIA_QUESTION} Сколько устройств вы хотите подключить?\n\nЦена: {{price}}₽"
)
SUBSCRIPTION_DURATION_SELECTOR = f"{MALENIA_QUESTION} На какой срок хотите оформить подписку?\n\nИтого: {{price}}₽ (скидка: {{discount}}%)"
WHITELISTS_ALREADY_ON = "Белые списки уже активны."
CHECKOUT_PAYMENT_CHOICE = (
f"{MALENIA_BANK} Пополнение баланса:\n\n❓ Выберите способ оплаты:"
)
# ============================================================
# БИЛЛИНГ
# ============================================================
_BILL_TEMPLATE = (
f"{MALENIA_CHECK} Счёт на {{amount}}₽\n\n"
"‼️ Вам придёт уведомление в течение нескольких минут после завершения платежа.\n"
f"{MALENIA_CARD} Способ оплаты: {{provider}}\n\n"
)
_BILL_LINK = f"{MALENIA_LINK} Ссылка на оплату:"
BILL_CREATION = _BILL_TEMPLATE + _DIVIDER + GENERAL_PROCESSING
BILL_CREATED = _BILL_TEMPLATE + _DIVIDER + _BILL_LINK
INSUFFICIENT_FUNDS = f"{MALENIA_CROSS} Недостаточно средств для проведения операции.\n\n💰 Текущий баланс: {{balance}}₽\n💸 Требуется: {{amount}}₽\n\n{MALENIA_CARD} Пополните баланс на {{diff}}₽"
SUCCESSFULLY_CREATED_SUBSCRIPTION = f"{MALENIA_HEART} Ваша подписка успешно оплачена! Ссылка на добавления доступна в главном меню."
DEPOSIT_AMOUNT = f"{MALENIA_COINS} Укажите сумму пополнения:"
DEPOSIT_AMOUNT_FALLBACK = (
f"{MALENIA_CROSS} Сумма пополнения указана неверно, повторите попытку."
)
DEPOSIT_AMOUNT_BELOW_MINIMAL = (
f"{MALENIA_CROSS} Сумма пополнения ниже минимальной - {{threshold}}₽."
)
# ============================================================
# АВТОПРОДЛЕНИЕ
# ============================================================
AUTORENEWAL_INSUFFICIENT_FUNDS = (
f"{MALENIA_WARN} Не удалось продлить подписку автоматически.\n"
"Недостаточно средств на балансе (нужно {price}₽, доступно {balance}₽). Автопродление отключено."
)
AUTORENEWAL_SUCCESS = (
f"{MALENIA_CARD} Подписка продлена автоматически. Списано {{price}}₽.\n"
"Новая дата окончания: {end_date}."
)
# ============================================================
# ПОДДЕРЖКА
# ============================================================
SUPPORT_INIT = "🎧 Тех. Поддержка Malenia — не здесь. Кнопка ниже."
# ============================================================
# АДМИН-ПАНЕЛЬ
# ============================================================
ADM_MAIN_MENU = (
f"{MALENIA_SHIELD} Malenia. Админ-панель.\n"
"— {quote}\n\n"
f"{MALENIA_SILHOUETTE} Пользователей в боте: {{user_count}}\n"
f"{MALENIA_CARD} Ваш ID: {{user_id}}\n"
)
ADM_PROMO_INIT = "📢 Введите/перешлите текст рассылки:"
ADM_VERIFY_PROMOTION = (
"❓ Отправить рассылку? Это действие будет невозможно отменить."
)
SUCCESSFULLY_SENT_PROMO = "💚 Успешно отправлена рассылка.\n⚡ Успешных отправок: {successful}."