private async Task <DataFileMember> ExportMember(PKMember member) => new DataFileMember { Id = member.Hid, Name = member.Name, Description = member.Description, Birthday = member.Birthday != null?Formats.DateExportFormat.Format(member.Birthday.Value) : null, Pronouns = member.Pronouns, Color = member.Color, AvatarUrl = member.AvatarUrl, Prefix = member.Prefix, Suffix = member.Suffix, Created = Formats.TimestampExportFormat.Format(member.Created), MessageCount = await _members.MessageCount(member) };
public async Task <Embed> CreateMemberEmbed(PKSystem system, PKMember member) { var name = member.Name; if (system.Name != null) { name = $"{member.Name} ({system.Name})"; } Color color; try { color = member.Color?.ToDiscordColor() ?? Color.Default; } catch (ArgumentException) { // Bad API use can cause an invalid color string // TODO: fix that in the API // for now we just default to a blank color, yolo color = Color.Default; } var messageCount = await _members.MessageCount(member); var eb = new EmbedBuilder() // TODO: add URL of website when that's up .WithAuthor(name, member.AvatarUrl) .WithColor(color) .WithFooter($"System ID: {system.Hid} | Member ID: {member.Hid}"); if (member.AvatarUrl != null) { eb.WithThumbnailUrl(member.AvatarUrl); } if (member.DisplayName != null) { eb.AddField("Display Name", member.DisplayName, true); } if (member.Birthday != null) { eb.AddField("Birthdate", member.BirthdayString, true); } if (member.Pronouns != null) { eb.AddField("Pronouns", member.Pronouns, true); } if (messageCount > 0) { eb.AddField("Message Count", messageCount, true); } if (member.HasProxyTags) { eb.AddField("Proxy Tags", $"{member.Prefix.EscapeMarkdown()}text{member.Suffix.EscapeMarkdown()}", true); } if (member.Color != null) { eb.AddField("Color", $"#{member.Color}", true); } if (member.Description != null) { eb.AddField("Description", member.Description, false); } return(eb.Build()); }