Перенос части логики на бекенд rest api и изменение логики работы бота так же из за бекенда

This commit is contained in:
Disledg
2024-12-24 16:43:55 +03:00
parent 4151e2a546
commit 379da6cbba
14 changed files with 245 additions and 699 deletions

View File

@@ -1,140 +1,123 @@
from aiogram.utils.keyboard import InlineKeyboardBuilder
from aiogram.types import InlineKeyboardButton
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 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 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 account_keyboard():
"""
Аккаунт
"""
builder = InlineKeyboardBuilder()
builder.row(InlineKeyboardButton(text="Баланс", callback_data="balance"))
builder.row(InlineKeyboardButton(text="Приобрести подписку", callback_data="buy_subscription"))
builder.row(InlineKeyboardButton(text="Руководство по подключению", callback_data="guide"))
builder.row(InlineKeyboardButton(text="Назад", callback_data="base"))
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
# Тарифы 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
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()
# Тарифы 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 subhist_keyboard():
"""
Подписки
"""
builder = InlineKeyboardBuilder()
builder.button(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 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="balance"))
return builder.as_markup()
async def start_command(message: types.Message):
"""Обработчик команды /start."""
await message.answer("Главное меню", reply_markup=main_menu_keyboard())
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()
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 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()
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_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 == "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 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 == "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")
))
# def about_tarifs_keyboard():
# """
# О тарифах
# """
# builder = InlineKeyboardBuilder()
# builder.row(InlineKeyboardButton(text="Назад", callback_data="buy_subscription"))
# return builder.as_markup()
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())
def faq_keyboard():
"""
FAQ
"""
builder = InlineKeyboardBuilder()
builder.row(InlineKeyboardButton(text="Назад", callback_data="base"))
return builder.as_markup()
await callback.answer()
def tranhist_keyboard():
"""
История транзакций
"""
builder = InlineKeyboardBuilder()
builder.row(InlineKeyboardButton(text="Назад",callback_data="balance"))
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="balance"))
return builder.as_markup()
def register_handlers(dp: Dispatcher):
dp.message.register(start_command, Command("start"))
dp.callback_query.register(callback_handler)