Add server-specific display names

This commit is contained in:
Ske
2019-12-26 20:39:47 +01:00
parent cd09c9758c
commit 4d07886ec8
9 changed files with 120 additions and 24 deletions

View File

@@ -62,7 +62,7 @@ namespace PluralKit.Bot {
.Build();
}
public async Task<Embed> CreateMemberEmbed(PKSystem system, PKMember member)
public async Task<Embed> CreateMemberEmbed(PKSystem system, PKMember member, IGuild guild)
{
var name = member.Name;
if (system.Name != null) name = $"{member.Name} ({system.Name})";
@@ -82,6 +82,10 @@ namespace PluralKit.Bot {
var messageCount = await _data.GetMemberMessageCount(member);
string guildDisplayName = null;
if (guild != null)
guildDisplayName = (await _data.GetMemberGuildSettings(member, guild.Id)).DisplayName;
var proxyTagsStr = string.Join('\n', member.ProxyTags.Select(t => $"`{t.ProxyString}`"));
var eb = new EmbedBuilder()
@@ -92,11 +96,12 @@ namespace PluralKit.Bot {
if (member.AvatarUrl != null) eb.WithThumbnailUrl(member.AvatarUrl);
if (member.DisplayName != null) eb.AddField("Display Name", member.DisplayName, true);
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);
if (member.Birthday != null) eb.AddField("Birthdate", member.BirthdayString, true);
if (member.Pronouns != null) eb.AddField("Pronouns", member.Pronouns, true);
if (member.Pronouns != null) eb.AddField("Pronouns", member.Pronouns.Truncate(1024), true);
if (messageCount > 0) eb.AddField("Message Count", messageCount, true);
if (member.HasProxyTags) eb.AddField("Proxy Tags", string.Join('\n', proxyTagsStr), true);
if (member.HasProxyTags) eb.AddField("Proxy Tags", string.Join('\n', proxyTagsStr).Truncate(1024), true);
if (member.Color != null) eb.AddField("Color", $"#{member.Color}", true);
if (member.Description != null) eb.AddField("Description", member.Description, false);

View File

@@ -99,6 +99,10 @@ namespace PluralKit.Bot
// Make sure the system hasn't blacklisted the guild either
var systemGuildCfg = await _data.GetSystemGuildSettings(match.System, channel.GuildId);
if (!systemGuildCfg.ProxyEnabled) return;
// Also, check if the member has a guild nickname
// TODO: roll this into the cached results as well as system/guild settings, maybe? Add a separate cache or something.
var memberGuildCfg = await _data.GetMemberGuildSettings(match.Member, channel.GuildId);
// We know message.Channel can only be ITextChannel as PK doesn't work in DMs/groups
// Afterwards we ensure the bot has the right permissions, otherwise bail early
@@ -109,7 +113,7 @@ namespace PluralKit.Bot
return;
// Get variables in order and all
var proxyName = match.Member.ProxyName(match.System.Tag);
var proxyName = match.Member.ProxyName(match.System.Tag, memberGuildCfg.DisplayName);
var avatarUrl = match.Member.AvatarUrl ?? match.System.AvatarUrl;
// If the name's too long (or short), bail