diff --git a/src/Discord.Net.Core/Discord.Net.Core.xml b/src/Discord.Net.Core/Discord.Net.Core.xml
index b73b58fb3..5ace1922d 100644
--- a/src/Discord.Net.Core/Discord.Net.Core.xml
+++ b/src/Discord.Net.Core/Discord.Net.Core.xml
@@ -10056,6 +10056,11 @@
Whether the user has passed the guild's Membership Screening requirements.
+
+
+ Gets the users position within the role hierarchy.
+
+
Gets the level permissions granted to this user to a given channel.
diff --git a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs
index 492cb9566..e131a6a61 100644
--- a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs
+++ b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs
@@ -73,6 +73,11 @@ namespace Discord
///
bool? IsPending { get; }
+ ///
+ /// Gets the users position within the role hierarchy.
+ ///
+ int Hierarchy { get; }
+
///
/// Gets the level permissions granted to this user to a given channel.
///
diff --git a/src/Discord.Net.Rest/Discord.Net.Rest.xml b/src/Discord.Net.Rest/Discord.Net.Rest.xml
index 92a1734af..4e2846c9e 100644
--- a/src/Discord.Net.Rest/Discord.Net.Rest.xml
+++ b/src/Discord.Net.Rest/Discord.Net.Rest.xml
@@ -4711,6 +4711,9 @@
+
+
+
Resolving permissions requires the parent guild to be downloaded.
@@ -4954,6 +4957,9 @@
+
+
+
diff --git a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs
index d094be618..9ad36a074 100644
--- a/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs
+++ b/src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs
@@ -31,6 +31,18 @@ namespace Discord.Rest
public ulong GuildId => Guild.Id;
///
public bool? IsPending { get; private set; }
+ ///
+ public int Hierarchy
+ {
+ get
+ {
+ if (Guild.OwnerId == Id)
+ return int.MaxValue;
+
+ var orderedRoles = Guild.Roles.OrderByDescending(x => x.Position);
+ return orderedRoles.Where(x => RoleIds.Contains(x.Id)).Max(x => x.Position);
+ }
+ }
///
/// Resolving permissions requires the parent guild to be downloaded.
diff --git a/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs b/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs
index 9297f9af9..40a173976 100644
--- a/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs
+++ b/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs
@@ -54,6 +54,8 @@ namespace Discord.Rest
///
bool? IGuildUser.IsPending => null;
///
+ int IGuildUser.Hierarchy => 0;
+ ///
GuildPermissions IGuildUser.GuildPermissions => GuildPermissions.Webhook;
///