I'm trying to make a system where the player can teleport to any server by typing in the username.

This code that I have does not work

Here is the code (made by @OptimisticSide):

local function GetServerData(UserId)
	local placeId, jobId
	
	PlayerFoundConnection = MessagingService:SubscribeAsync("PlayerFound", function(givenId, givenPlaceId, givenJobId)
		if UserId == givenId then
			placeId = givenPlaceId
			jobId = givenJobId
			PlayerFoundConnection:Disconnect()
		end
	end)
	
	MessagingService:PublishAsync("GetPlayer", UserId)
	repeat wait() until not PlayerFoundConnection.Connected
	return placeId, jobId
end

MessagingService:SubscribeAsync("GetPlayer", function(UserId)
	for _, player in pairs(game.Players:GetPlayers()) do
		print("UserId: " .. UserId) 
		if player.UserId ==  UserId then
			MessagingService:PublishAsync("PlayerFound", UserId, game.PlaceId, game.JobId)
			return
		end
	end
end)

local function TeleportPlayer(placeId, jobId, player)
	TeleportService:TeleportToPlaceInstance(placeId, jobId, player)
end

game.ReplicatedStorage.TeleportToPlayer.OnServerEvent:Connect(function(username)
	local UserId = game.Players:GetUserIdByNameAsync(username)
	loccal placeid, jobid = GetServerData(UserId)
	TeleportPlayer(placeid, jobid, player)
end)

Output:

UserId: 0x0434518381 -- The userId is a table instead of an integer value

Something is not working here. If anyone know's the answer please tell me. Thanks in advance.