Короче опять дохуя изменений:
1. Оно перво на перво работает 2.Реализовано почти всё вроде из кнопок, осталось ток оплату подписок, выдачу URI и пополнение конечно. 3.Убрал .json конфиг и сделал всё через переменные окружения
This commit is contained in:
@@ -3,7 +3,7 @@ from aiogram.filters import Command
|
||||
from databases.postgresql import DatabaseManager
|
||||
from databases.model import User, Subscription, Transaction, Administrators
|
||||
from databases.db_config import get_postgres_session
|
||||
from keyboard.keyboards import subhist_keyboard, popup_keyboard, main_keyboard,faq_keyboard,about_tarifs_keyboard, account_keyboard, buy_keyboard,balance_keyboard,guide_keyboard,tarif_Lark_keyboard,tarif_Lark_pro_keyboard,tranhist_keyboard
|
||||
from keyboard.keyboards import subhist_keyboard,tarif_confirm_keyboard, popup_keyboard, main_keyboard,faq_keyboard,about_tarifs_keyboard, account_keyboard, buy_keyboard,balance_keyboard,guide_keyboard,tarif_Lark_keyboard,tarif_Lark_pro_keyboard,tranhist_keyboard
|
||||
|
||||
# Инициализируем менеджер базы данных
|
||||
db_manager = DatabaseManager(get_postgres_session)
|
||||
@@ -219,6 +219,64 @@ async def faq_callback_handler(callback:types.CallbackQuery):
|
||||
reply_markup=faq_keyboard()
|
||||
)
|
||||
|
||||
async def lark_tariff_callback_handler(callback: types.CallbackQuery):
|
||||
"""
|
||||
Обработчик для выбора тарифа Lark.
|
||||
"""
|
||||
data = callback.data.split(":")
|
||||
tariff_name = data[0]
|
||||
tariff_class = data[1]
|
||||
tariff_time = int(data[2])
|
||||
|
||||
# Определение окончания для месяцев
|
||||
if tariff_time == 1:
|
||||
months = f"{tariff_time} месяц"
|
||||
elif 2 <= tariff_time <= 4:
|
||||
months = f"{tariff_time} месяца"
|
||||
else:
|
||||
months = f"{tariff_time} месяцев"
|
||||
|
||||
text = f"Тариф {tariff_name} на {months}. Продолжите покупку..."
|
||||
|
||||
# Рендеринг клавиатуры
|
||||
keyboard = tarif_confirm_keyboard(tariff_name, tariff_time, tariff_class)
|
||||
await callback.message.edit_text(text=text, reply_markup=keyboard)
|
||||
|
||||
async def confirm_callback_handler(callback: types.CallbackQuery):
|
||||
"""
|
||||
Обработчик подтверждения покупки тарифа.
|
||||
"""
|
||||
tariff_info = callback.data.split(":")[1].split("_")
|
||||
tariff_name = tariff_info[0]
|
||||
tariff_class = tariff_info[1]
|
||||
tariff_amount = int(tariff_info[2])
|
||||
|
||||
sub = await db_manager.buy_sub(callback.from_user.id, f"{tariff_name}_{tariff_class}_{tariff_amount}")
|
||||
if sub == "ERROR":
|
||||
await callback.message.answer(
|
||||
"Произошла ошибка, попробуйте позже или свяжитесь с администрацией."
|
||||
)
|
||||
await callback.answer()
|
||||
return
|
||||
elif sub == "INSUFFICIENT_FUNDS":
|
||||
await callback.message.answer(
|
||||
"Произошла ошибка, не достаточно средств на балансе."
|
||||
)
|
||||
await callback.answer()
|
||||
return
|
||||
add_to_server = await db_manager.add_to_server(callback.from_user.id)
|
||||
if add_to_server == "ERROR":
|
||||
await callback.message.answer(
|
||||
"Произошла ошибка, попробуйте позже или свяжитесь с администрацией."
|
||||
)
|
||||
await callback.answer()
|
||||
return
|
||||
|
||||
# Текст подтверждения на основе тарифа
|
||||
months_text = f"{tariff_amount} месяцев" if tariff_amount > 1 else f"{tariff_amount} месяц"
|
||||
text = f"Вы успешно оформили тариф {tariff_name} на {months_text}. Спасибо за покупку!"
|
||||
|
||||
await callback.message.edit_text(text=text)
|
||||
|
||||
def register_handlers(dp: Dispatcher):
|
||||
"""
|
||||
@@ -236,4 +294,5 @@ def register_handlers(dp: Dispatcher):
|
||||
dp.callback_query.register(balance_callback_handler, lambda c: c.data == "balance")
|
||||
dp.callback_query.register(guide_callback_handler, lambda c: c.data == "guide")
|
||||
dp.callback_query.register(about_tarifs_callback_handler, lambda c: c.data == "about_tarifs")
|
||||
|
||||
dp.callback_query.register(lark_tariff_callback_handler, lambda c: c.data.startswith("Lark:"))
|
||||
dp.callback_query.register(confirm_callback_handler, lambda c: c.data.startswith("confirm:"))
|
||||
Reference in New Issue
Block a user