Добавление нового middleware и рефакторинг обработчиков с поддержкой target_message
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
from .keyboards import get_coupon_keyboard
|
||||
|
||||
|
||||
__all__ = ["get_coupon_keyboard"]
|
||||
@@ -0,0 +1,14 @@
|
||||
from aiogram.types import InlineKeyboardButton
|
||||
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||||
|
||||
|
||||
def get_coupon_keyboard() -> InlineKeyboardBuilder:
|
||||
"""
|
||||
Создает клавиатуру для работы с купонами.
|
||||
|
||||
Returns:
|
||||
InlineKeyboardBuilder: Построитель клавиатуры с кнопками для купонов.
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="👤 Личный кабинет", callback_data="profile"))
|
||||
return builder
|
||||
@@ -0,0 +1,4 @@
|
||||
from .keyboards import get_balance_keyboard, get_invite_keyboard, get_profile_keyboard
|
||||
|
||||
|
||||
__all__ = ["get_profile_keyboard", "get_balance_keyboard", "get_invite_keyboard"]
|
||||
@@ -0,0 +1,78 @@
|
||||
from aiogram.types import InlineKeyboardButton
|
||||
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||||
from config import INLINE_MODE
|
||||
|
||||
|
||||
def get_profile_keyboard(admin: bool = False) -> InlineKeyboardBuilder:
|
||||
"""
|
||||
Создает клавиатуру для профиля пользователя.
|
||||
|
||||
Args:
|
||||
admin: Флаг, указывающий, является ли пользователь администратором.
|
||||
|
||||
Returns:
|
||||
InlineKeyboardBuilder: Построитель клавиатуры с кнопками профиля.
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
|
||||
# Основные кнопки профиля
|
||||
builder.button(text="💰 Баланс", callback_data="balance")
|
||||
builder.button(text="🔑 Мои подписки", callback_data="my_subs")
|
||||
builder.button(text="💸 Пополнить баланс", callback_data="payment")
|
||||
builder.button(text="🎁 Подарки", callback_data="gifts")
|
||||
builder.button(text="👥 Пригласить друга", callback_data="invite")
|
||||
builder.button(text="📚 Инструкции", callback_data="instructions")
|
||||
builder.button(text="🎫 Активировать купон", callback_data="activate_coupon")
|
||||
|
||||
# Кнопка админ-панели для администраторов
|
||||
if admin:
|
||||
builder.button(text="⚙️ Админ-панель", callback_data="admin_panel")
|
||||
|
||||
# Кнопка главного меню
|
||||
builder.button(text="🏠 Главное меню", callback_data="main_menu")
|
||||
|
||||
# Настройка расположения кнопок (2 кнопки в ряд)
|
||||
builder.adjust(2)
|
||||
|
||||
return builder
|
||||
|
||||
|
||||
def get_balance_keyboard() -> InlineKeyboardBuilder:
|
||||
"""
|
||||
Создает клавиатуру для раздела баланса.
|
||||
|
||||
Returns:
|
||||
InlineKeyboardBuilder: Построитель клавиатуры с кнопками для баланса.
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
|
||||
builder.button(text="📊 История баланса", callback_data="balance_history")
|
||||
builder.button(text="👤 Личный кабинет", callback_data="profile")
|
||||
builder.adjust(1)
|
||||
|
||||
return builder
|
||||
|
||||
|
||||
def get_invite_keyboard(chat_id: int, referral_link: str) -> InlineKeyboardBuilder:
|
||||
"""
|
||||
Создает клавиатуру для приглашения друзей.
|
||||
|
||||
Args:
|
||||
chat_id: ID чата пользователя.
|
||||
referral_link: Реферальная ссылка.
|
||||
|
||||
Returns:
|
||||
InlineKeyboardBuilder: Построитель клавиатуры с кнопками для приглашений.
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
|
||||
if INLINE_MODE:
|
||||
builder.button(text="👥 Пригласить друга", switch_inline_query="invite")
|
||||
else:
|
||||
invite_text = f"\nПриглашаю тебя пользоваться действительно быстрым VPN вместе:\n\n{referral_link}"
|
||||
builder.button(text="👥 Пригласить друга", switch_inline_query=invite_text)
|
||||
|
||||
builder.button(text="👤 Личный кабинет", callback_data="profile")
|
||||
builder.adjust(1)
|
||||
|
||||
return builder
|
||||
Reference in New Issue
Block a user