Files
Telegram-bot-old/keyboard/keyboards.py

124 lines
6.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

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 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)