124 lines
6.6 KiB
Python
124 lines
6.6 KiB
Python
from aiogram import types, Dispatcher
|
||
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup, CallbackQuery
|
||
from aiogram.filters import Command
|
||
|
||
# Главное меню клавиатура
|
||
def main_menu_keyboard():
|
||
keyboard = InlineKeyboardMarkup()
|
||
keyboard.add(InlineKeyboardButton("Личный кабинет", callback_data="main:personal"))
|
||
keyboard.add(InlineKeyboardButton("FAQ", callback_data="main:faq"))
|
||
keyboard.add(InlineKeyboardButton("О нас", callback_data="main:about"))
|
||
return keyboard
|
||
|
||
# Личный кабинет клавиатура
|
||
def personal_menu_keyboard():
|
||
keyboard = InlineKeyboardMarkup()
|
||
keyboard.add(InlineKeyboardButton("Баланс", callback_data="personal:balance"))
|
||
keyboard.add(InlineKeyboardButton("Приобрести подписку", callback_data="personal:subscribe"))
|
||
keyboard.add(InlineKeyboardButton("Руководство по использованию", callback_data="personal:guide"))
|
||
keyboard.add(InlineKeyboardButton("Назад", callback_data="back:main"))
|
||
return keyboard
|
||
|
||
# Подписка меню клавиатура
|
||
def subscribe_menu_keyboard():
|
||
keyboard = InlineKeyboardMarkup()
|
||
keyboard.add(InlineKeyboardButton("Lark", callback_data="subscribe:lark"))
|
||
keyboard.add(InlineKeyboardButton("Lark Pro", callback_data="subscribe:lark_pro"))
|
||
keyboard.add(InlineKeyboardButton("О тарифах", callback_data="subscribe:about_tariffs"))
|
||
keyboard.add(InlineKeyboardButton("Назад", callback_data="back:personal"))
|
||
return keyboard
|
||
|
||
# Тарифы Lark клавиатура
|
||
def lark_tariffs_keyboard():
|
||
keyboard = InlineKeyboardMarkup()
|
||
keyboard.add(InlineKeyboardButton("Lark 1 месяц", callback_data="lark:1"))
|
||
keyboard.add(InlineKeyboardButton("Lark 6 месяцев", callback_data="lark:6"))
|
||
keyboard.add(InlineKeyboardButton("Lark 12 месяцев", callback_data="lark:12"))
|
||
keyboard.add(InlineKeyboardButton("Назад", callback_data="back:subscribe"))
|
||
return keyboard
|
||
|
||
# Тарифы Lark Pro клавиатура
|
||
def lark_pro_tariffs_keyboard():
|
||
keyboard = InlineKeyboardMarkup()
|
||
keyboard.add(InlineKeyboardButton("Lark Pro 1 месяц", callback_data="lark_pro:1"))
|
||
keyboard.add(InlineKeyboardButton("Lark Pro 6 месяцев", callback_data="lark_pro:6"))
|
||
keyboard.add(InlineKeyboardButton("Lark Pro 12 месяцев", callback_data="lark_pro:12"))
|
||
keyboard.add(InlineKeyboardButton("Назад", callback_data="back:subscribe"))
|
||
return keyboard
|
||
|
||
# Руководство меню клавиатура
|
||
def guide_menu_keyboard():
|
||
keyboard = InlineKeyboardMarkup()
|
||
keyboard.add(InlineKeyboardButton("iOS, Android", callback_data="guide:ios_android"))
|
||
keyboard.add(InlineKeyboardButton("Windows, Macintosh", callback_data="guide:windows_mac"))
|
||
keyboard.add(InlineKeyboardButton("Назад", callback_data="back:personal"))
|
||
return keyboard
|
||
|
||
async def start_command(message: types.Message):
|
||
"""Обработчик команды /start."""
|
||
await message.answer("Главное меню", reply_markup=main_menu_keyboard())
|
||
|
||
async def callback_handler(callback: CallbackQuery):
|
||
"""Обработчик callback."""
|
||
data = callback.data.split(":")
|
||
action = data[0]
|
||
sub_action = data[1] if len(data) > 1 else None
|
||
|
||
if action == "main":
|
||
if sub_action == "personal":
|
||
await callback.message.edit_text("Личный кабинет", reply_markup=personal_menu_keyboard())
|
||
elif sub_action == "faq":
|
||
await callback.message.edit_text("FAQ", reply_markup=InlineKeyboardMarkup().add(
|
||
InlineKeyboardButton("Назад", callback_data="back:main")))
|
||
elif sub_action == "about":
|
||
await callback.message.edit_text("Наш сайт: {URL}", reply_markup=InlineKeyboardMarkup().add(
|
||
InlineKeyboardButton("Назад", callback_data="back:main")))
|
||
|
||
elif action == "personal":
|
||
if sub_action == "balance":
|
||
await callback.message.edit_text("Баланс:", reply_markup=InlineKeyboardMarkup().add(
|
||
InlineKeyboardButton("Пополнение", callback_data="balance:topup"),
|
||
InlineKeyboardButton("История транзакций", callback_data="balance:history"),
|
||
InlineKeyboardButton("Назад", callback_data="back:personal")
|
||
))
|
||
elif sub_action == "subscribe":
|
||
await callback.message.edit_text("Выберите подписку:", reply_markup=subscribe_menu_keyboard())
|
||
elif sub_action == "guide":
|
||
await callback.message.edit_text("Руководство по использованию", reply_markup=guide_menu_keyboard())
|
||
|
||
elif action == "subscribe":
|
||
if sub_action == "lark":
|
||
await callback.message.edit_text("Тарифы Lark", reply_markup=lark_tariffs_keyboard())
|
||
elif sub_action == "lark_pro":
|
||
await callback.message.edit_text("Тарифы Lark Pro", reply_markup=lark_pro_tariffs_keyboard())
|
||
elif sub_action == "about_tariffs":
|
||
await callback.message.edit_text("О тарифах", reply_markup=InlineKeyboardMarkup().add(
|
||
InlineKeyboardButton("Назад", callback_data="back:subscribe")
|
||
))
|
||
|
||
elif action == "lark":
|
||
await callback.message.edit_text(f"Вы выбрали тариф Lark {sub_action} месяцев.", reply_markup=InlineKeyboardMarkup().add(
|
||
InlineKeyboardButton("Подтвердить", callback_data=f"confirm:lark:{sub_action}"),
|
||
InlineKeyboardButton("Отменить", callback_data="back:subscribe")
|
||
))
|
||
|
||
elif action == "lark_pro":
|
||
await callback.message.edit_text(f"Вы выбрали тариф Lark Pro {sub_action} месяцев.", reply_markup=InlineKeyboardMarkup().add(
|
||
InlineKeyboardButton("Подтвердить", callback_data=f"confirm:lark_pro:{sub_action}"),
|
||
InlineKeyboardButton("Отменить", callback_data="back:subscribe")
|
||
))
|
||
|
||
elif action == "back":
|
||
if sub_action == "main":
|
||
await callback.message.edit_text("Главное меню", reply_markup=main_menu_keyboard())
|
||
elif sub_action == "personal":
|
||
await callback.message.edit_text("Личный кабинет", reply_markup=personal_menu_keyboard())
|
||
elif sub_action == "subscribe":
|
||
await callback.message.edit_text("Выберите подписку:", reply_markup=subscribe_menu_keyboard())
|
||
|
||
await callback.answer()
|
||
|
||
def register_handlers(dp: Dispatcher):
|
||
dp.message.register(start_command, Command("start"))
|
||
dp.callback_query.register(callback_handler)
|