75 lines
2.1 KiB
Python
75 lines
2.1 KiB
Python
from aiogram.filters.callback_data import CallbackData
|
||
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
||
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||
|
||
from ..panel.keyboard import build_admin_back_btn
|
||
|
||
|
||
class AdminSenderCallback(CallbackData, prefix="admin_sender"):
|
||
type: str
|
||
data: str | None = None
|
||
|
||
|
||
def build_sender_kb() -> InlineKeyboardMarkup:
|
||
builder = InlineKeyboardBuilder()
|
||
|
||
builder.row(
|
||
InlineKeyboardButton(
|
||
text="👥 Все пользователи",
|
||
callback_data=AdminSenderCallback(type="all").pack(),
|
||
)
|
||
)
|
||
builder.row(
|
||
InlineKeyboardButton(
|
||
text="✅ С подпиской",
|
||
callback_data=AdminSenderCallback(type="subscribed").pack(),
|
||
),
|
||
InlineKeyboardButton(
|
||
text="❌ Без подписки",
|
||
callback_data=AdminSenderCallback(type="unsubscribed").pack(),
|
||
),
|
||
)
|
||
builder.row(
|
||
InlineKeyboardButton(
|
||
text="📍 Не использовавшие триал",
|
||
callback_data=AdminSenderCallback(type="untrial").pack(),
|
||
)
|
||
)
|
||
builder.row(
|
||
InlineKeyboardButton(
|
||
text="🧪 Триал",
|
||
callback_data=AdminSenderCallback(type="trial").pack(),
|
||
)
|
||
)
|
||
builder.row(
|
||
InlineKeyboardButton(
|
||
text="🔥 Горячие лиды",
|
||
callback_data=AdminSenderCallback(type="hotleads").pack(),
|
||
)
|
||
)
|
||
builder.row(
|
||
InlineKeyboardButton(
|
||
text="📢 Кластер",
|
||
callback_data=AdminSenderCallback(type="cluster-select").pack(),
|
||
)
|
||
)
|
||
builder.row(build_admin_back_btn())
|
||
|
||
return builder.as_markup()
|
||
|
||
|
||
def build_clusters_kb(clusters: list) -> InlineKeyboardMarkup:
|
||
builder = InlineKeyboardBuilder()
|
||
|
||
for cluster in clusters:
|
||
name = cluster["cluster_name"]
|
||
builder.button(
|
||
text=f"🌐 {name}",
|
||
callback_data=AdminSenderCallback(type="cluster", data=name).pack(),
|
||
)
|
||
|
||
builder.adjust(2)
|
||
builder.row(build_admin_back_btn())
|
||
|
||
return builder.as_markup()
|