From 74140b59944ee3ec12a7e144027de14c92f68903 Mon Sep 17 00:00:00 2001 From: Starshine System Date: Mon, 19 Jul 2021 01:02:27 -0400 Subject: [PATCH] Message info embed improvements (#374) - Fetch the user if there's no member object, so users who left the server don't show up as deleted - Order roles by position (so potential staff roles show up first and aren't cut off) --- PluralKit.Bot/Services/EmbedService.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/PluralKit.Bot/Services/EmbedService.cs b/PluralKit.Bot/Services/EmbedService.cs index 61d4484b..a2bb460e 100644 --- a/PluralKit.Bot/Services/EmbedService.cs +++ b/PluralKit.Bot/Services/EmbedService.cs @@ -303,7 +303,9 @@ namespace PluralKit.Bot { userInfo = member.User; memberInfo = member; } - else userInfo = await _cache.GetOrFetchUser(_rest, msg.Message.Sender); + + if (userInfo == null) + userInfo = await _cache.GetOrFetchUser(_rest, msg.Message.Sender); // Calculate string displayed under "Sent by" string userStr; @@ -327,7 +329,10 @@ namespace PluralKit.Bot { if (roles != null && roles.Count > 0) { // TODO: what if role isn't in cache? figure out a fallback - var rolesString = string.Join(", ", roles.Select(id => _cache.GetRole(id).Name)); + var rolesString = string.Join(", ", roles + .Select(id => _cache.GetRole(id)) + .OrderByDescending(role => role.Position) + .Select(role => role.Name)); eb.Field(new($"Account roles ({roles.Count})", rolesString.Truncate(1024))); }