Улучшение взаимодействия и добавление веб-приложения

This commit is contained in:
2026-01-09 01:20:30 +03:00
parent eed252d52e
commit 2472947c1f
16 changed files with 2972 additions and 969 deletions

45
keyboards.py Normal file
View File

@@ -0,0 +1,45 @@
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["BASE_URL"]:
buttons.append([InlineKeyboardButton(text="🚀 Открыть приложение", web_app=WebAppInfo(url=CONFIG["BASE_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 = []
for plan_id, plan in PLANS.items():
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")]
])