mirror of
https://github.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot.git
synced 2026-02-19 02:42:27 +00:00
Add files via upload
This commit is contained in:
@@ -195,6 +195,16 @@ def get_tariff_view_keyboard(
|
||||
InlineKeyboardButton(text="👥 Промогруппы", callback_data=f"admin_tariff_edit_promo:{tariff.id}"),
|
||||
])
|
||||
|
||||
# Переключение триала
|
||||
if tariff.is_trial_available:
|
||||
buttons.append([
|
||||
InlineKeyboardButton(text="🎁 ❌ Убрать триал", callback_data=f"admin_tariff_toggle_trial:{tariff.id}")
|
||||
])
|
||||
else:
|
||||
buttons.append([
|
||||
InlineKeyboardButton(text="🎁 Сделать триальным", callback_data=f"admin_tariff_toggle_trial:{tariff.id}")
|
||||
])
|
||||
|
||||
# Переключение активности
|
||||
if tariff.is_active:
|
||||
buttons.append([
|
||||
@@ -413,6 +423,43 @@ async def toggle_tariff(
|
||||
)
|
||||
|
||||
|
||||
@admin_required
|
||||
@error_handler
|
||||
async def toggle_trial_tariff(
|
||||
callback: types.CallbackQuery,
|
||||
db_user: User,
|
||||
db: AsyncSession,
|
||||
):
|
||||
"""Переключает тариф как триальный."""
|
||||
from app.database.crud.tariff import set_trial_tariff, clear_trial_tariff
|
||||
|
||||
tariff_id = int(callback.data.split(":")[1])
|
||||
tariff = await get_tariff_by_id(db, tariff_id)
|
||||
|
||||
if not tariff:
|
||||
await callback.answer("Тариф не найден", show_alert=True)
|
||||
return
|
||||
|
||||
if tariff.is_trial_available:
|
||||
# Снимаем флаг триала
|
||||
await clear_trial_tariff(db)
|
||||
await callback.answer("Триал снят с тарифа", show_alert=True)
|
||||
else:
|
||||
# Устанавливаем этот тариф как триальный (снимает флаг с других)
|
||||
await set_trial_tariff(db, tariff_id)
|
||||
await callback.answer(f"Тариф «{tariff.name}» установлен как триальный", show_alert=True)
|
||||
|
||||
# Перезагружаем тариф
|
||||
tariff = await get_tariff_by_id(db, tariff_id)
|
||||
subs_count = await get_tariff_subscriptions_count(db, tariff_id)
|
||||
|
||||
await callback.message.edit_text(
|
||||
format_tariff_info(tariff, db_user.language, subs_count),
|
||||
reply_markup=get_tariff_view_keyboard(tariff, db_user.language),
|
||||
parse_mode="HTML"
|
||||
)
|
||||
|
||||
|
||||
# ============ СОЗДАНИЕ ТАРИФА ============
|
||||
|
||||
@admin_required
|
||||
@@ -1665,7 +1712,8 @@ def register_handlers(dp: Dispatcher):
|
||||
|
||||
# Просмотр и переключение
|
||||
dp.callback_query.register(view_tariff, F.data.startswith("admin_tariff_view:"))
|
||||
dp.callback_query.register(toggle_tariff, F.data.startswith("admin_tariff_toggle:"))
|
||||
dp.callback_query.register(toggle_tariff, F.data.startswith("admin_tariff_toggle:") & ~F.data.startswith("admin_tariff_toggle_trial:"))
|
||||
dp.callback_query.register(toggle_trial_tariff, F.data.startswith("admin_tariff_toggle_trial:"))
|
||||
|
||||
# Создание тарифа
|
||||
dp.callback_query.register(start_create_tariff, F.data == "admin_tariff_create")
|
||||
|
||||
@@ -5083,7 +5083,7 @@ async def show_admin_tariff_change(
|
||||
return
|
||||
|
||||
# Получаем все активные тарифы
|
||||
tariffs = await get_all_tariffs(db, only_active=True)
|
||||
tariffs = await get_all_tariffs(db, include_inactive=False)
|
||||
|
||||
if not tariffs:
|
||||
await callback.message.edit_text(
|
||||
|
||||
Reference in New Issue
Block a user