A method with the signature:
Task<iguilduser> AddGuildUserAsync(ulong userId, string accessToken, Action<addguilduserproperties> func = null, RequestOptions options = null)
Has the return type: Task<iguilduser>, with the IGuildUser implementation wrapped inside the Task object.
What you want to obtain, I assume, is the IGuildUser, so you have 3 options:
IGuildUser user = AddGuildUserAsync(ulong userId, string accessToken, Action<addguilduserproperties> func = null, RequestOptions options = null).Result;
This will run synchronously, and is not really what async is for.
Alternatively, you 'await' the menthod, which effectively does a similar thing, but will run asynchronously, and can only be done inside another async method:
IGuildUser user = await AddGuildUserAsync(ulong userId, string accessToken, Action<addguilduserproperties> func = null, RequestOptions options = null)
The third option, if you want to run from a non-ansync method, may be to fire it up in a separate task:
IGuildUser user = Task.Run(() => AddGuildUserAsync(ulong userId, string accessToken, Action<addguilduserproperties> func = null, RequestOptions options = null).Result;