minor fixes
This commit is contained in:
+4
-2
@@ -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:
|
||||
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:
|
||||
@@ -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:
|
||||
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(
|
||||
|
||||
@@ -59,12 +59,19 @@ async def apply_tariff_group(callback: CallbackQuery, callback_data: AdminCluste
|
||||
|
||||
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()
|
||||
|
||||
servers = await get_servers(session=session, include_enabled=True)
|
||||
cluster_servers = servers.get(cluster_name, [])
|
||||
|
||||
await callback.message.edit_text(
|
||||
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:
|
||||
|
||||
@@ -7,6 +7,7 @@ from aiogram import F, Router
|
||||
from aiogram.types import CallbackQuery, InlineKeyboardButton, Message
|
||||
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||||
|
||||
from core.bootstrap import MODES_CONFIG
|
||||
from config import (
|
||||
CONNECT_MACOS,
|
||||
CONNECT_WINDOWS,
|
||||
@@ -14,8 +15,10 @@ from config import (
|
||||
DOWNLOAD_PC,
|
||||
SUPPORT_CHAT_URL,
|
||||
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 (
|
||||
BACK,
|
||||
CONNECT_MACOS_BUTTON,
|
||||
@@ -38,7 +41,8 @@ from handlers.texts import (
|
||||
ROUTER_MESSAGE,
|
||||
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()
|
||||
@@ -165,9 +169,39 @@ async def process_macos_menu(callback_query: CallbackQuery, session: Any):
|
||||
async def process_connect_tv(callback_query: CallbackQuery, session: Any):
|
||||
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.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"))
|
||||
|
||||
await edit_or_send_message(
|
||||
|
||||
Reference in New Issue
Block a user