Players:GetFriendsAsync() gives a FriendPages object, which functions similar to regular Pages. In a page are necessary infos of a user’s friend.
Indexing a Page can be hard, so I suggest to iterate the page into a table before using it. If you want to get a random user’s friend details, this can be an example.
local players=game:GetService('Players')
local userId=players:GetUserIdFromNameAsync('YOUR USERNAME')
local friendPage=players:GetFriendsAsync(userId)
local friends={}
while not friends.IsFinished do
table.insert(friends,friendPage:GetCurrentPage())
friendPage:AdvanceToNextPage()
end
local randomFriend=friends[math.random(1,#friends)]
local Players = game:GetService("Players")
local USERNAME = Players.LocalPlayer.Name
local function iterPageItems(pages)
return coroutine.wrap(function()
local pagenum = 1
while true do
for _, item in ipairs(pages:GetCurrentPage()) do
coroutine.yield(item, pagenum)
end
if pages.IsFinished then
break
end
pages:AdvanceToNextPageAsync()
pagenum = pagenum + 1
end
end)
end
local userId = Players:GetUserIdFromNameAsync(USERNAME)
local friendPages = Players:GetFriendsAsync(userId)
local usernames = {}
for item, _pageNo in iterPageItems(friendPages) do
table.insert(usernames, item.Username)
end
local random = usernames[math.random(1, #usernames)]
local randomuserid = Players:GetUserIdFromNameAsync(random)
print(randomuserid)