Переделал меню и под роуты адаптировал
This commit is contained in:
@@ -1,123 +1,141 @@
|
||||
from aiogram import types, Dispatcher
|
||||
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup, CallbackQuery
|
||||
from aiogram.filters import Command
|
||||
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||||
from aiogram.types import InlineKeyboardButton
|
||||
|
||||
# Главное меню клавиатура
|
||||
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 main_keyboard():
|
||||
"""
|
||||
База
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="Профиль", callback_data="profile"))
|
||||
builder.row(InlineKeyboardButton(text="FAQ", callback_data="faq"))
|
||||
builder.row(InlineKeyboardButton(text="О нас", url="https://www.youtube.com/watch?v=Zirn-CKck-c"))
|
||||
return builder.as_markup()
|
||||
|
||||
# Подписка меню клавиатура
|
||||
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
|
||||
def account_keyboard():
|
||||
"""
|
||||
Аккаунт
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="Пополнение баланса", callback_data="popup"))
|
||||
builder.row(InlineKeyboardButton(text="Приобрести подписку", callback_data="buy_subscription"))
|
||||
builder.row(InlineKeyboardButton(text="Руководство по подключению", callback_data="guide"))
|
||||
builder.row(InlineKeyboardButton(text="История транзакций", callback_data="tranhist"))
|
||||
builder.row(InlineKeyboardButton(text="Назад", callback_data="base"))
|
||||
return builder.as_markup()
|
||||
|
||||
# Тарифы 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 buy_keyboard():
|
||||
"""
|
||||
Приобрести подписку
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="Тариф Lark", callback_data="subs"))
|
||||
builder.row(InlineKeyboardButton(text="Тариф Lark Pro", callback_data="subs_pro"))
|
||||
builder.row(InlineKeyboardButton(text="О тарифах", url="https://t.me/proxylark/19"))
|
||||
builder.row(InlineKeyboardButton(text="Назад", callback_data="profile"))
|
||||
return builder.as_markup()
|
||||
|
||||
# Руководство меню клавиатура
|
||||
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
|
||||
def subhist_keyboard():
|
||||
"""
|
||||
Подписки
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.button(text="Назад", callback_data="profile")
|
||||
return builder.as_markup()
|
||||
|
||||
async def start_command(message: types.Message):
|
||||
"""Обработчик команды /start."""
|
||||
await message.answer("Главное меню", reply_markup=main_menu_keyboard())
|
||||
def popup_keyboard():
|
||||
"""
|
||||
Пополнение
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="200₽", callback_data="popup:200"),InlineKeyboardButton(text="500₽", callback_data="popup:500"))
|
||||
builder.row(InlineKeyboardButton(text="1000₽", callback_data="popup:1000"),InlineKeyboardButton(text="2000₽", callback_data="popup:2000"))
|
||||
builder.row(InlineKeyboardButton(text="3000₽", callback_data="popup:3000"),InlineKeyboardButton(text="5000₽", callback_data="popup:5000"))
|
||||
builder.row(InlineKeyboardButton(text="Назад", callback_data="profile"))
|
||||
return builder.as_markup()
|
||||
|
||||
async def callback_handler(callback: CallbackQuery):
|
||||
"""Обработчик callback."""
|
||||
data = callback.data.split(":")
|
||||
action = data[0]
|
||||
sub_action = data[1] if len(data) > 1 else None
|
||||
def balance_keyboard():
|
||||
"""
|
||||
Баланс
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="Пополнение", callback_data="popup"))
|
||||
builder.row(InlineKeyboardButton(text="История транзакций", callback_data="tranhist"))
|
||||
builder.row(InlineKeyboardButton(text="Назад", callback_data="profile"))
|
||||
return builder.as_markup()
|
||||
|
||||
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")))
|
||||
def tarif_Lark_keyboard():
|
||||
"""
|
||||
Тариф Lark
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="Тариф Lark 1 Месяц", callback_data="Lark:Standart:1"))
|
||||
builder.row(InlineKeyboardButton(text="Тариф Lark 6 Месяц", callback_data="Lark:Standart:6"))
|
||||
builder.row(InlineKeyboardButton(text="Тариф Lark 12 Месяц", callback_data="Lark:Standart:12"))
|
||||
builder.row(InlineKeyboardButton(text="Назад", callback_data="buy_subscription"))
|
||||
return builder.as_markup()
|
||||
|
||||
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())
|
||||
def tarif_Lark_pro_keyboard():
|
||||
"""
|
||||
Тариф Lark Pro
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="Тариф Lark Pro 1 Месяц", callback_data="Lark:Pro:1"))
|
||||
builder.row(InlineKeyboardButton(text="Тариф Lark Pro 6 Месяц", callback_data="Lark:Pro:6"))
|
||||
builder.row(InlineKeyboardButton(text="Тариф Lark Pro 12 Месяц", callback_data="Lark:Pro:12"))
|
||||
builder.row(InlineKeyboardButton(text="Назад", callback_data="buy_subscription"))
|
||||
return builder.as_markup()
|
||||
|
||||
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")
|
||||
))
|
||||
def guide_keyboard():
|
||||
"""
|
||||
Руководство по подключению
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="IOS,Android", callback_data="mob"))
|
||||
builder.row(InlineKeyboardButton(text="Windows,MacOS", callback_data="pc"))
|
||||
builder.row(InlineKeyboardButton(text="Назад", callback_data="profile"))
|
||||
return builder.as_markup()
|
||||
|
||||
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")
|
||||
))
|
||||
# def about_tarifs_keyboard():
|
||||
# """
|
||||
# О тарифах
|
||||
# """
|
||||
# builder = InlineKeyboardBuilder()
|
||||
# builder.row(InlineKeyboardButton(text="Назад", callback_data="buy_subscription"))
|
||||
# return builder.as_markup()
|
||||
|
||||
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 faq_keyboard():
|
||||
"""
|
||||
FAQ
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="Назад", callback_data="base"))
|
||||
return builder.as_markup()
|
||||
|
||||
def register_handlers(dp: Dispatcher):
|
||||
dp.message.register(start_command, Command("start"))
|
||||
dp.callback_query.register(callback_handler)
|
||||
def tranhist_keyboard():
|
||||
"""
|
||||
История транзакций
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="Назад",callback_data="profile"))
|
||||
return builder.as_markup()
|
||||
|
||||
def tarif_confirm_keyboard(name,amount,classif):
|
||||
"""
|
||||
Подтверждение покупки тарифа
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="Подтвердить", callback_data=f"confirm:{name}_{classif}_{amount}"))
|
||||
builder.row(InlineKeyboardButton(text="Отменить",callback_data="buy_subscription"))
|
||||
return builder.as_markup()
|
||||
|
||||
def confirm_popup_keyboard():
|
||||
"""
|
||||
Подтверждение пополнения
|
||||
"""
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text="Теперь иди нахуй", callback_data="profile"))
|
||||
return builder.as_markup()
|
||||
|
||||
Reference in New Issue
Block a user