Files
marzban_tg_bot/keyboards.py
2026-01-11 07:07:32 +03:00

48 lines
2.6 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton, WebAppInfo
from config import CONFIG, PLANS
def main_keyboard(is_admin: bool = False, has_active_sub: bool = False) -> InlineKeyboardMarkup:
buttons = []
# Web App Button
if CONFIG["WEB_APP_URL"]:
buttons.append([InlineKeyboardButton(text="🚀 Открыть приложение", web_app=WebAppInfo(url=CONFIG["WEB_APP_URL"]))])
# Если подписки нет (или истекла), показываем кнопку покупки на главном
if not has_active_sub:
buttons.append([InlineKeyboardButton(text="🛒 Купить подписку", callback_data="buy_subscription")])
buttons.append([InlineKeyboardButton(text="📊 Моя подписка", callback_data="my_subscription")])
buttons.append([InlineKeyboardButton(text="🎟 Активировать промокод", callback_data="use_promo")])
buttons.append([InlineKeyboardButton(text=" Помощь", callback_data="help")])
if is_admin:
buttons.append([InlineKeyboardButton(text="👑 Админ-панель", callback_data="admin_panel")])
return InlineKeyboardMarkup(inline_keyboard=buttons)
def plans_keyboard() -> InlineKeyboardMarkup:
buttons = []
# Only show first 3 plans to users
visible_plans = list(PLANS.items())[:3]
for plan_id, plan in visible_plans:
buttons.append([
InlineKeyboardButton(
text=f"{plan['name']} - {plan['price']}",
callback_data=f"plan_{plan_id}"
)
])
buttons.append([InlineKeyboardButton(text="◀️ Назад", callback_data="back_to_main")])
return InlineKeyboardMarkup(inline_keyboard=buttons)
def admin_keyboard() -> InlineKeyboardMarkup:
return InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text="👥 Управление пользователями", callback_data="admin_users_list")],
[InlineKeyboardButton(text="📊 Статистика бота", callback_data="admin_stats")],
[InlineKeyboardButton(text="🖥 Статистика сервера", callback_data="admin_server_stats")],
[InlineKeyboardButton(text="📢 Рассылка", callback_data="admin_broadcast")],
[InlineKeyboardButton(text=" Добавить инвайт", callback_data="admin_add_invite")],
[InlineKeyboardButton(text="🏷 Управление промокодами", callback_data="admin_promos")],
[InlineKeyboardButton(text="◀️ В главное меню", callback_data="back_to_main")]
])