From 118de5dd1d3e40c3c12bf155e17dd8cfce714502 Mon Sep 17 00:00:00 2001 From: quin lynch Date: Mon, 13 Sep 2021 04:37:14 -0300 Subject: [PATCH] Add Hierarchy to RestGuildUser --- src/Discord.Net.Core/Discord.Net.Core.xml | 5 +++++ src/Discord.Net.Core/Entities/Users/IGuildUser.cs | 5 +++++ src/Discord.Net.Rest/Discord.Net.Rest.xml | 6 ++++++ src/Discord.Net.Rest/Entities/Users/RestGuildUser.cs | 12 ++++++++++++ .../Entities/Users/RestWebhookUser.cs | 2 ++ 5 files changed, 30 insertions(+) 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; ///