minor fixes

This commit is contained in:
Vladless
2025-11-17 00:47:06 +03:00
parent f44bd9e4b6
commit 679e65ec44
3 changed files with 50 additions and 7 deletions
+4 -2
View File
@@ -82,7 +82,8 @@ async def check_user_exists(session: AsyncSession, tg_id: int) -> bool:
async def get_balance(session: AsyncSession, tg_id: int) -> float: async def get_balance(session: AsyncSession, tg_id: int) -> float:
result = await session.execute(select(func.coalesce(User.balance, 0.0)).where(User.tg_id == tg_id)) result = await session.execute(select(func.coalesce(User.balance, 0.0)).where(User.tg_id == tg_id))
return round(float(result.scalar_one()), 1) balance = result.scalar_one_or_none()
return round(float(balance or 0.0), 1)
async def set_user_balance(session: AsyncSession, tg_id: int, balance: float) -> None: async def set_user_balance(session: AsyncSession, tg_id: int, balance: float) -> None:
@@ -106,7 +107,8 @@ async def update_trial(session: AsyncSession, tg_id: int, status: int):
async def get_trial(session: AsyncSession, tg_id: int) -> int: async def get_trial(session: AsyncSession, tg_id: int) -> int:
result = await session.execute(select(func.coalesce(User.trial, 0)).where(User.tg_id == tg_id)) result = await session.execute(select(func.coalesce(User.trial, 0)).where(User.tg_id == tg_id))
return int(result.scalar_one()) trial = result.scalar_one_or_none()
return int(trial or 0)
async def upsert_user( async def upsert_user(
+9 -2
View File
@@ -59,12 +59,19 @@ async def apply_tariff_group(callback: CallbackQuery, callback_data: AdminCluste
group_code = row["group_code"] group_code = row["group_code"]
await session.execute(update(Server).where(Server.cluster_name == cluster_name).values(tariff_group=group_code)) await session.execute(
update(Server)
.where(Server.cluster_name == cluster_name)
.values(tariff_group=group_code)
)
await session.commit() await session.commit()
servers = await get_servers(session=session, include_enabled=True)
cluster_servers = servers.get(cluster_name, [])
await callback.message.edit_text( await callback.message.edit_text(
f"✅ Для кластера <code>{cluster_name}</code> установлена тарифная группа: <b>{group_code}</b>", f"✅ Для кластера <code>{cluster_name}</code> установлена тарифная группа: <b>{group_code}</b>",
reply_markup=build_manage_cluster_kb(cluster_name), reply_markup=build_manage_cluster_kb(cluster_servers, cluster_name),
) )
except Exception as e: except Exception as e:
+37 -3
View File
@@ -7,6 +7,7 @@ from aiogram import F, Router
from aiogram.types import CallbackQuery, InlineKeyboardButton, Message from aiogram.types import CallbackQuery, InlineKeyboardButton, Message
from aiogram.utils.keyboard import InlineKeyboardBuilder from aiogram.utils.keyboard import InlineKeyboardBuilder
from core.bootstrap import MODES_CONFIG
from config import ( from config import (
CONNECT_MACOS, CONNECT_MACOS,
CONNECT_WINDOWS, CONNECT_WINDOWS,
@@ -14,8 +15,10 @@ from config import (
DOWNLOAD_PC, DOWNLOAD_PC,
SUPPORT_CHAT_URL, SUPPORT_CHAT_URL,
WEBHOOK_HOST, WEBHOOK_HOST,
REMNAWAVE_WEBAPP,
HAPP_CRYPTOLINK,
) )
from database import get_subscription_link from database import get_subscription_link, get_key_details
from handlers.buttons import ( from handlers.buttons import (
BACK, BACK,
CONNECT_MACOS_BUTTON, CONNECT_MACOS_BUTTON,
@@ -38,7 +41,8 @@ from handlers.texts import (
ROUTER_MESSAGE, ROUTER_MESSAGE,
SUBSCRIPTION_DETAILS_TEXT, SUBSCRIPTION_DETAILS_TEXT,
) )
from handlers.utils import edit_or_send_message from handlers.utils import edit_or_send_message, is_full_remnawave_cluster
from hooks.processors import process_remnawave_webapp_override
router = Router() router = Router()
@@ -165,9 +169,39 @@ async def process_macos_menu(callback_query: CallbackQuery, session: Any):
async def process_connect_tv(callback_query: CallbackQuery, session: Any): async def process_connect_tv(callback_query: CallbackQuery, session: Any):
key_name = callback_query.data.split("|")[1] key_name = callback_query.data.split("|")[1]
record = await get_key_details(session, key_name)
final_link = None
is_full_remnawave = False
use_webapp = False
if record:
server_name = record["server_id"]
final_link = record.get("key") or record.get("remnawave_link")
is_full_remnawave = await is_full_remnawave_cluster(server_name, session)
remnawave_webapp_enabled = bool(MODES_CONFIG.get("REMNAWAVE_WEBAPP_ENABLED", REMNAWAVE_WEBAPP))
happ_cryptolink_enabled = bool(MODES_CONFIG.get("HAPP_CRYPTOLINK_ENABLED", HAPP_CRYPTOLINK))
use_webapp = remnawave_webapp_enabled
if is_full_remnawave and final_link and remnawave_webapp_enabled and not happ_cryptolink_enabled:
use_webapp = await process_remnawave_webapp_override(
remnawave_webapp=remnawave_webapp_enabled,
final_link=final_link,
session=session,
)
is_remnawave_webapp = bool(is_full_remnawave and final_link and use_webapp and not happ_cryptolink_enabled)
else:
is_remnawave_webapp = False
if is_remnawave_webapp:
back_callback = f"view_key|{key_name}"
else:
back_callback = f"connect_device|{key_name}"
builder = InlineKeyboardBuilder() builder = InlineKeyboardBuilder()
builder.row(InlineKeyboardButton(text=TV_CONTINUE, callback_data=f"continue_tv|{key_name}")) builder.row(InlineKeyboardButton(text=TV_CONTINUE, callback_data=f"continue_tv|{key_name}"))
builder.row(InlineKeyboardButton(text=BACK, callback_data=f"connect_device|{key_name}")) builder.row(InlineKeyboardButton(text=BACK, callback_data=back_callback))
builder.row(InlineKeyboardButton(text=MAIN_MENU, callback_data="profile")) builder.row(InlineKeyboardButton(text=MAIN_MENU, callback_data="profile"))
await edit_or_send_message( await edit_or_send_message(