Short Answer
In Discord.Net, most if not all ModifyAsync
takes an Action<T>
as its parameter, and its documentation and such usage is in its respective XProperties
documentation. In this case, RoleProperties.

Long Answer
Since these methods all take an Action<T>
, we can take a look at what Action is on Microsoft .NET API Documentation. From the documentation, we learn that it is a delegate, and the easiest way to make a delegate is with a lambda expression (also see Func vs. Action vs. Predicate).
From this, we can come up the following,
var role = guild.GetRole(id);
await role.ModifyAsync(role =>
{
// Assign the color to a new Discord.Color struct of color [123, 123, 123]
role.Color = new Color(123, 123, 123);
});
All ModifyAsync
s work more or less the same.