diff --git a/handlers/admin/servers/servers_handler.py b/handlers/admin/servers/servers_handler.py index 10abd580..cf96be40 100644 --- a/handlers/admin/servers/servers_handler.py +++ b/handlers/admin/servers/servers_handler.py @@ -136,10 +136,19 @@ async def process_callback_delete_server( if all_servers: builder = InlineKeyboardBuilder() for s_name, key_count in all_servers: + callback_data = f"transfer_to_server|{s_name}|{server_name}" + if len(callback_data.encode('utf-8')) > 64: + await callback_query.message.edit_text( + text=f"❌ Ошибка: название сервера '{s_name}' слишком длинное.\n\n" + f"Пожалуйста, переименуйте сервер в более короткое название и попробуйте снова.", + reply_markup=build_admin_back_kb("clusters"), + ) + return + builder.row( InlineKeyboardButton( text=f"{s_name} ({key_count})", - callback_data=f"transfer_to_server|{s_name}|{server_name}", + callback_data=callback_data, ) ) builder.row( @@ -189,10 +198,19 @@ async def process_callback_delete_server( builder = InlineKeyboardBuilder() for cl_name, key_count in all_clusters: + callback_data = f"transfer_to_cluster|{cl_name}|{cluster_name}|{server_name}" + if len(callback_data.encode('utf-8')) > 64: + await callback_query.message.edit_text( + text=f"❌ Ошибка: название сервера '{server_name}' или кластера '{cl_name}' слишком длинное.\n\n" + f"Пожалуйста, переименуйте сервер в более короткое название и попробуйте снова.", + reply_markup=build_admin_back_kb("clusters"), + ) + return + builder.row( InlineKeyboardButton( text=f"{cl_name} ({key_count})", - callback_data=f"transfer_to_cluster|{cl_name}|{cluster_name}|{server_name}", + callback_data=callback_data, ) ) builder.row( @@ -424,6 +442,13 @@ async def apply_field_edit(message: types.Message, state: FSMContext, session: A value = message.text.strip() if field == "server_name": + if len(value) > 12: + await message.answer( + text="❌ Имя сервера не должно превышать 12 символов. Попробуйте снова.", + reply_markup=build_admin_back_kb("clusters"), + ) + return + success = await update_server_name_with_keys(session, server_name, value) if success: server_name = value diff --git a/handlers/keys/key_renew.py b/handlers/keys/key_renew.py index 5769510a..429c3f03 100644 --- a/handlers/keys/key_renew.py +++ b/handlers/keys/key_renew.py @@ -74,6 +74,19 @@ async def process_callback_renew_key(callback_query: CallbackQuery, state: FSMCo dt_msk = available_from_utc.astimezone(moscow_tz).strftime("%d.%m.%Y %H:%M") kb = InlineKeyboardBuilder() kb.row(InlineKeyboardButton(text=BACK, callback_data=f"view_key|{key_name}")) + + try: + hook_commands = await run_hooks( + "process_callback_renew_key", + callback_query=callback_query, + state=state, + session=session + ) + if hook_commands: + kb = insert_hook_buttons(kb, hook_commands) + except Exception as e: + logger.warning(f"[RENEW] Ошибка при применении хуков: {e}") + await edit_or_send_message( target_message=callback_query.message, text=f"Продление доступно с {dt_msk}",