fix improve trial bonus timing / add coupon button toggle
This commit is contained in:
@@ -8,6 +8,7 @@ from ..defaults import DEFAULT_BUTTONS_CONFIG
|
||||
|
||||
BUTTONS_CONFIG: dict[str, bool] = DEFAULT_BUTTONS_CONFIG.copy()
|
||||
BUTTONS_CONFIG.setdefault("ANDROID_TV_BUTTON_ENABLE", False)
|
||||
BUTTONS_CONFIG.setdefault("COUPON_BUTTON_ENABLE", True)
|
||||
|
||||
|
||||
async def load_buttons_config(session: AsyncSession) -> None:
|
||||
@@ -18,6 +19,7 @@ async def load_buttons_config(session: AsyncSession) -> None:
|
||||
if setting is None:
|
||||
buttons_config = DEFAULT_BUTTONS_CONFIG.copy()
|
||||
buttons_config.setdefault("ANDROID_TV_BUTTON_ENABLE", False)
|
||||
buttons_config.setdefault("COUPON_BUTTON_ENABLE", True)
|
||||
setting = Setting(
|
||||
key="BUTTONS_CONFIG",
|
||||
value=buttons_config,
|
||||
@@ -29,6 +31,7 @@ async def load_buttons_config(session: AsyncSession) -> None:
|
||||
buttons_config = DEFAULT_BUTTONS_CONFIG.copy()
|
||||
buttons_config.update(stored)
|
||||
buttons_config.setdefault("ANDROID_TV_BUTTON_ENABLE", False)
|
||||
buttons_config.setdefault("COUPON_BUTTON_ENABLE", True)
|
||||
setting.value = buttons_config
|
||||
|
||||
BUTTONS_CONFIG.clear()
|
||||
@@ -56,6 +59,7 @@ async def update_buttons_config(session: AsyncSession, new_values: dict[str, boo
|
||||
buttons_config = DEFAULT_BUTTONS_CONFIG.copy()
|
||||
buttons_config.update(new_values)
|
||||
buttons_config.setdefault("ANDROID_TV_BUTTON_ENABLE", False)
|
||||
buttons_config.setdefault("COUPON_BUTTON_ENABLE", True)
|
||||
|
||||
BUTTONS_CONFIG.clear()
|
||||
BUTTONS_CONFIG.update(buttons_config)
|
||||
|
||||
@@ -15,6 +15,7 @@ BUTTON_TITLES: Final[dict[str, str]] = {
|
||||
"QRCODE_BUTTON_ENABLE": "QR подписки",
|
||||
"HWID_RESET_BUTTON_ENABLE": "Сброс HWID",
|
||||
"ANDROID_TV_BUTTON_ENABLE": "Android TV",
|
||||
"COUPON_BUTTON_ENABLE": "Активировать купон",
|
||||
}
|
||||
|
||||
NOTIFICATION_TITLES: Final[dict[str, str]] = {
|
||||
|
||||
@@ -98,6 +98,11 @@ async def notify_inactive_trial_users(bot: Bot, session: AsyncSession):
|
||||
"notification_id": "inactive_trial",
|
||||
})
|
||||
|
||||
if users_to_extend:
|
||||
await session.execute(update(User).where(User.tg_id.in_(users_to_extend)).values(trial=-1))
|
||||
await session.commit()
|
||||
logger.info(f"Bulk: отмечено {len(users_to_extend)} пользователей с расширенным триалом")
|
||||
|
||||
if messages:
|
||||
results = await send_messages_with_limit(
|
||||
bot,
|
||||
@@ -117,12 +122,6 @@ async def notify_inactive_trial_users(bot: Bot, session: AsyncSession):
|
||||
await add_notification(session, tg_id, "inactive_trial")
|
||||
logger.info(f"Отправлено {len(sent_tg_ids)} уведомлений неактивным пользователям.")
|
||||
|
||||
extend_ids = [tg_id for tg_id in users_to_extend if tg_id in sent_tg_ids]
|
||||
if extend_ids:
|
||||
await session.execute(update(User).where(User.tg_id.in_(extend_ids)).values(trial=-1))
|
||||
await session.commit()
|
||||
logger.info(f"Bulk: отмечено {len(extend_ids)} пользователей с расширенным триалом")
|
||||
|
||||
logger.info("Проверка пользователей с неактивным пробным периодом завершена.")
|
||||
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ from sqlalchemy import select
|
||||
|
||||
from config import USE_NEW_PAYMENT_FLOW, TRIBUTE_LINK
|
||||
from core.bootstrap import PAYMENTS_CONFIG
|
||||
from core.settings.buttons_config import BUTTONS_CONFIG
|
||||
from core.settings.money_config import get_currency_mode
|
||||
from database import (
|
||||
check_coupon_usage,
|
||||
@@ -163,7 +164,8 @@ async def try_fast_payment_flow(
|
||||
for row in kept_rows:
|
||||
keyboard.row(*row)
|
||||
|
||||
keyboard.row(InlineKeyboardButton(text=btn.COUPON, callback_data="fastflow_coupon"))
|
||||
if BUTTONS_CONFIG.get("COUPON_BUTTON_ENABLE", True):
|
||||
keyboard.row(InlineKeyboardButton(text=btn.COUPON, callback_data="fastflow_coupon"))
|
||||
|
||||
if profile_row:
|
||||
keyboard.row(*profile_row)
|
||||
@@ -225,7 +227,8 @@ async def try_fast_payment_flow(
|
||||
)
|
||||
)
|
||||
|
||||
keyboard.row(InlineKeyboardButton(text=btn.COUPON, callback_data="fastflow_coupon"))
|
||||
if BUTTONS_CONFIG.get("COUPON_BUTTON_ENABLE", True):
|
||||
keyboard.row(InlineKeyboardButton(text=btn.COUPON, callback_data="fastflow_coupon"))
|
||||
keyboard.row(InlineKeyboardButton(text=btn.MAIN_MENU, callback_data="profile"))
|
||||
|
||||
lead_text = await shortfall_lead_text(
|
||||
@@ -481,7 +484,8 @@ async def fastflow_apply_coupon(message: Message, state: FSMContext, session: An
|
||||
for row in kept_rows:
|
||||
keyboard.row(*row)
|
||||
|
||||
keyboard.row(InlineKeyboardButton(text=btn.COUPON_RESTART, callback_data="fastflow_coupon"))
|
||||
if BUTTONS_CONFIG.get("COUPON_BUTTON_ENABLE", True):
|
||||
keyboard.row(InlineKeyboardButton(text=btn.COUPON_RESTART, callback_data="fastflow_coupon"))
|
||||
|
||||
if profile_row:
|
||||
keyboard.row(*profile_row)
|
||||
@@ -521,7 +525,8 @@ async def fastflow_apply_coupon(message: Message, state: FSMContext, session: An
|
||||
)
|
||||
)
|
||||
|
||||
keyboard.row(InlineKeyboardButton(text=btn.COUPON_RESTART, callback_data="fastflow_coupon"))
|
||||
if BUTTONS_CONFIG.get("COUPON_BUTTON_ENABLE", True):
|
||||
keyboard.row(InlineKeyboardButton(text=btn.COUPON_RESTART, callback_data="fastflow_coupon"))
|
||||
keyboard.row(InlineKeyboardButton(text=btn.MAIN_MENU, callback_data="profile"))
|
||||
|
||||
await message.answer(
|
||||
@@ -587,7 +592,8 @@ async def choose_payment_currency(callback_query: CallbackQuery, state: FSMConte
|
||||
)
|
||||
)
|
||||
|
||||
keyboard.row(InlineKeyboardButton(text=btn.COUPON, callback_data="fastflow_coupon"))
|
||||
if BUTTONS_CONFIG.get("COUPON_BUTTON_ENABLE", True):
|
||||
keyboard.row(InlineKeyboardButton(text=btn.COUPON, callback_data="fastflow_coupon"))
|
||||
keyboard.row(InlineKeyboardButton(text=btn.MAIN_MENU, callback_data="profile"))
|
||||
|
||||
lead_text = await shortfall_lead_text(
|
||||
|
||||
@@ -185,7 +185,8 @@ async def balance_handler(callback_query: CallbackQuery, session: AsyncSession):
|
||||
builder = InlineKeyboardBuilder()
|
||||
builder.row(InlineKeyboardButton(text=btn.PAYMENT, callback_data="pay"))
|
||||
builder.row(InlineKeyboardButton(text=btn.BALANCE_HISTORY, callback_data="balance_history"))
|
||||
builder.row(InlineKeyboardButton(text=btn.COUPON, callback_data="activate_coupon"))
|
||||
if BUTTONS_CONFIG.get("COUPON_BUTTON_ENABLE", True):
|
||||
builder.row(InlineKeyboardButton(text=btn.COUPON, callback_data="activate_coupon"))
|
||||
builder.row(InlineKeyboardButton(text=btn.MAIN_MENU, callback_data="profile"))
|
||||
|
||||
text = BALANCE_MANAGEMENT_TEXT.format(balance=balance_text)
|
||||
|
||||
Reference in New Issue
Block a user