Add server-specific member avatars

This commit is contained in:
Ske
2020-02-12 17:42:12 +01:00
parent 6d5004bf54
commit d0d3579b17
10 changed files with 108 additions and 42 deletions

View File

@@ -92,21 +92,28 @@ namespace PluralKit.Bot {
var messageCount = await _data.GetMemberMessageCount(member);
string guildDisplayName = null;
if (guild != null)
guildDisplayName = (await _data.GetMemberGuildSettings(member, guild.Id)).DisplayName;
var guildSettings = guild != null ? await _data.GetMemberGuildSettings(member, guild.Id) : null;
var guildDisplayName = guildSettings?.DisplayName;
var avatar = guildSettings?.AvatarUrl ?? member.AvatarUrl;
var proxyTagsStr = string.Join('\n', member.ProxyTags.Select(t => $"`{t.ProxyString}`"));
var eb = new EmbedBuilder()
// TODO: add URL of website when that's up
.WithAuthor(name, member.AvatarUrl)
.WithAuthor(name, avatar)
.WithColor(member.MemberPrivacy.CanAccess(ctx) ? color : Color.Default)
.WithFooter($"System ID: {system.Hid} | Member ID: {member.Hid} | Created on {DateTimeFormats.ZonedDateTimeFormat.Format(member.Created.InZone(system.Zone))}");
if (member.MemberPrivacy == PrivacyLevel.Private) eb.WithDescription("*(this member is private)*");
var description = "";
if (member.MemberPrivacy == PrivacyLevel.Private) description += "*(this member is private)*\n";
if (guildSettings?.AvatarUrl != null)
if (member.AvatarUrl != null)
description += $"*(this member has a server-specific avatar set; [click here]({member.AvatarUrl}) to see the global avatar)*\n";
else
description += "*(this member has a server-specific avatar set)*\n";
if (description != "") eb.WithDescription(description);
if (member.AvatarUrl != null) eb.WithThumbnailUrl(member.AvatarUrl);
if (avatar != null) eb.WithThumbnailUrl(avatar);
if (member.DisplayName != null) eb.AddField("Display Name", member.DisplayName.Truncate(1024), true);
if (guild != null && guildDisplayName != null) eb.AddField($"Server Nickname (for {guild.Name})", guildDisplayName.Truncate(1024), true);