Move most references to PKMember.Name to go through helper extepsions for privacy
This commit is contained in:
		| @@ -76,7 +76,7 @@ namespace PluralKit.Bot | ||||
|             ctx.CheckOwnMember(member); | ||||
|  | ||||
|             await UpdateAutoproxy(ctx, AutoproxyMode.Member, member.Id); | ||||
|             await ctx.Reply($"{Emojis.Success} Autoproxy set to **{member.Name}** in this server."); | ||||
|             await ctx.Reply($"{Emojis.Success} Autoproxy set to **{member.NameFor(ctx)}** in this server."); | ||||
|         } | ||||
|  | ||||
|         private async Task<DiscordEmbed> CreateAutoproxyStatusEmbed(Context ctx) | ||||
| @@ -103,14 +103,14 @@ namespace PluralKit.Bot | ||||
|                     { | ||||
|                         if (relevantMember == null)  | ||||
|                             throw new ArgumentException("Attempted to print member autoproxy status, but the linked member ID wasn't found in the database. Should be handled appropriately."); | ||||
|                         eb.WithDescription($"Autoproxy is currently set to **front mode** in this server. The current (first) fronter is **{relevantMember.Name.EscapeMarkdown()}** (`{relevantMember.Hid}`). To disable, type `pk;autoproxy off`."); | ||||
|                         eb.WithDescription($"Autoproxy is currently set to **front mode** in this server. The current (first) fronter is **{relevantMember.NameFor(ctx).EscapeMarkdown()}** (`{relevantMember.Hid}`). To disable, type `pk;autoproxy off`."); | ||||
|                     } | ||||
|  | ||||
|                     break; | ||||
|                 } | ||||
|                 // AutoproxyMember is never null if Mode is Member, this is just to make the compiler shut up | ||||
|                 case AutoproxyMode.Member when relevantMember != null: { | ||||
|                     eb.WithDescription($"Autoproxy is active for member **{relevantMember.Name}** (`{relevantMember.Hid}`) in this server. To disable, type `pk;autoproxy off`."); | ||||
|                     eb.WithDescription($"Autoproxy is active for member **{relevantMember.NameFor(ctx)}** (`{relevantMember.Hid}`) in this server. To disable, type `pk;autoproxy off`."); | ||||
|                     break; | ||||
|                 } | ||||
|                 case AutoproxyMode.Latch: | ||||
|   | ||||
| @@ -28,7 +28,7 @@ namespace PluralKit.Bot | ||||
|             // Warn if there's already a member by this name | ||||
|             var existingMember = await _data.GetMemberByName(ctx.System, memberName); | ||||
|             if (existingMember != null) { | ||||
|                 var msg = await ctx.Reply($"{Emojis.Warn} You already have a member in your system with the name \"{existingMember.Name.SanitizeMentions()}\" (with ID `{existingMember.Hid}`). Do you want to create another member with the same name?"); | ||||
|                 var msg = await ctx.Reply($"{Emojis.Warn} You already have a member in your system with the name \"{existingMember.NameFor(ctx).SanitizeMentions()}\" (with ID `{existingMember.Hid}`). Do you want to create another member with the same name?"); | ||||
|                 if (!await ctx.PromptYesNo(msg)) throw new PKError("Member creation cancelled."); | ||||
|             } | ||||
|  | ||||
|   | ||||
| @@ -61,7 +61,7 @@ namespace PluralKit.Bot | ||||
|             } | ||||
|  | ||||
|             var eb = new DiscordEmbedBuilder() | ||||
|                 .WithTitle($"{target.Name.SanitizeMentions()}'s {field}") | ||||
|                 .WithTitle($"{target.NameFor(ctx).SanitizeMentions()}'s {field}") | ||||
|                 .WithImageUrl(currentValue); | ||||
|             if (target.System == ctx.System?.Id) | ||||
|                 eb.WithDescription($"To clear, use `pk;member {target.Hid} {cmd} clear`."); | ||||
|   | ||||
| @@ -35,7 +35,7 @@ namespace PluralKit.Bot | ||||
|             // Warn if there's already a member by this name | ||||
|             var existingMember = await _data.GetMemberByName(ctx.System, newName); | ||||
|             if (existingMember != null) { | ||||
|                 var msg = await ctx.Reply($"{Emojis.Warn} You already have a member in your system with the name \"{existingMember.Name.SanitizeMentions()}\" (`{existingMember.Hid}`). Do you want to rename this member to that name too?"); | ||||
|                 var msg = await ctx.Reply($"{Emojis.Warn} You already have a member in your system with the name \"{existingMember.NameFor(ctx).SanitizeMentions()}\" (`{existingMember.Hid}`). Do you want to rename this member to that name too?"); | ||||
|                 if (!await ctx.PromptYesNo(msg)) throw new PKError("Member renaming cancelled."); | ||||
|             } | ||||
|  | ||||
| @@ -124,7 +124,7 @@ namespace PluralKit.Bot | ||||
|                     else | ||||
|                         await ctx.Reply("This member does not have pronouns set."); | ||||
|                 else | ||||
|                     await ctx.Reply($"**{target.Name.SanitizeMentions()}**'s pronouns are **{target.Pronouns.SanitizeMentions()}**." | ||||
|                     await ctx.Reply($"**{target.NameFor(ctx).SanitizeMentions()}**'s pronouns are **{target.Pronouns.SanitizeMentions()}**." | ||||
|                         + (ctx.System?.Id == target.System ? $" To clear them, type `pk;member {target.Hid} pronouns -clear`." : "")); | ||||
|             } | ||||
|             else | ||||
| @@ -223,6 +223,8 @@ namespace PluralKit.Bot | ||||
|          | ||||
|         private async Task<DiscordEmbedBuilder> CreateMemberNameInfoEmbed(Context ctx, PKMember target) | ||||
|         { | ||||
|             var lcx = ctx.LookupContextFor(target); | ||||
|              | ||||
|             MemberGuildSettings memberGuildConfig = null; | ||||
|             if (ctx.Guild != null) | ||||
|                 memberGuildConfig = await _db.Execute(c => c.QueryOrInsertMemberGuildConfig(ctx.Guild.Id, target.Id)); | ||||
| @@ -231,14 +233,17 @@ namespace PluralKit.Bot | ||||
|                 .WithFooter($"Member ID: {target.Hid} | Active name in bold. Server name overrides display name, which overrides base name."); | ||||
|  | ||||
|             if (target.DisplayName == null && memberGuildConfig?.DisplayName == null) | ||||
|                 eb.AddField($"Name", $"**{target.Name}**"); | ||||
|                 eb.AddField("Name", $"**{target.NameFor(ctx)}**"); | ||||
|             else | ||||
|                 eb.AddField("Name", target.Name); | ||||
|              | ||||
|             if (target.DisplayName != null && memberGuildConfig?.DisplayName == null) | ||||
|                 eb.AddField($"Display Name", $"**{target.DisplayName}**"); | ||||
|             else | ||||
|                 eb.AddField("Display Name", target.DisplayName ?? "*(none)*"); | ||||
|                 eb.AddField("Name", target.NameFor(ctx)); | ||||
|  | ||||
|             if (target.NamePrivacy.CanAccess(lcx)) | ||||
|             { | ||||
|                 if (target.DisplayName != null && memberGuildConfig?.DisplayName == null) | ||||
|                     eb.AddField("Display Name", $"**{target.DisplayName}**"); | ||||
|                 else | ||||
|                     eb.AddField("Display Name", target.DisplayName ?? "*(none)*"); | ||||
|             } | ||||
|  | ||||
|             if (ctx.Guild != null) | ||||
|             { | ||||
| @@ -272,7 +277,7 @@ namespace PluralKit.Bot | ||||
|                  | ||||
|                 target.DisplayName = null; | ||||
|                 await _data.SaveMember(target); | ||||
|                 await PrintSuccess($"{Emojis.Success} Member display name cleared. This member will now be proxied using their member name \"{target.Name.SanitizeMentions()}\"."); | ||||
|                 await PrintSuccess($"{Emojis.Success} Member display name cleared. This member will now be proxied using their member name \"{target.NameFor(ctx).SanitizeMentions()}\"."); | ||||
|             } | ||||
|             else if (!ctx.HasNext()) | ||||
|             { | ||||
| @@ -309,7 +314,7 @@ namespace PluralKit.Bot | ||||
|                 if (target.DisplayName != null) | ||||
|                     await ctx.Reply($"{Emojis.Success} Member server name cleared. This member will now be proxied using their global display name \"{target.DisplayName.SanitizeMentions()}\" in this server ({ctx.Guild.Name.SanitizeMentions()})."); | ||||
|                 else | ||||
|                     await ctx.Reply($"{Emojis.Success} Member server name cleared. This member will now be proxied using their member name \"{target.Name.SanitizeMentions()}\" in this server ({ctx.Guild.Name.SanitizeMentions()})."); | ||||
|                     await ctx.Reply($"{Emojis.Success} Member server name cleared. This member will now be proxied using their member name \"{target.NameFor(ctx).SanitizeMentions()}\" in this server ({ctx.Guild.Name.SanitizeMentions()})."); | ||||
|             } | ||||
|             else if (!ctx.HasNext()) | ||||
|             { | ||||
| @@ -360,7 +365,7 @@ namespace PluralKit.Bot | ||||
|                 await ctx.Reply($"{Emojis.Success} Member proxy tags will now not be included in the resulting message when proxying."); | ||||
|         } | ||||
|  | ||||
|         private DiscordEmbed CreatePrivacyEmbed(PKMember member) | ||||
|         private DiscordEmbed CreatePrivacyEmbed(Context ctx, PKMember member) | ||||
|         { | ||||
|             string PrivacyLevelString(PrivacyLevel level) => level switch | ||||
|             { | ||||
| @@ -370,7 +375,7 @@ namespace PluralKit.Bot | ||||
|             }; | ||||
|  | ||||
|             var eb = new DiscordEmbedBuilder() | ||||
|                 .WithTitle($"Current privacy settings for {member.Name}") | ||||
|                 .WithTitle($"Current privacy settings for {member.NameFor(ctx)}") | ||||
|                 .AddField("Name (replaces name with display name if member has one)",PrivacyLevelString(member.NamePrivacy)) | ||||
|                 .AddField("Description", PrivacyLevelString(member.DescriptionPrivacy)) | ||||
|                 .AddField("Birthday", PrivacyLevelString(member.BirthdayPrivacy)) | ||||
| @@ -390,7 +395,7 @@ namespace PluralKit.Bot | ||||
|             // Display privacy settings | ||||
|             if (!ctx.HasNext() && newValueFromCommand == null) | ||||
|             { | ||||
|                 await ctx.Reply(embed: CreatePrivacyEmbed(target)); | ||||
|                 await ctx.Reply(embed: CreatePrivacyEmbed(ctx, target)); | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
| @@ -440,7 +445,7 @@ namespace PluralKit.Bot | ||||
|                     (MemberPrivacySubject.Visibility, PrivacyLevel.Public) => "This member is no longer hidden from member lists.", | ||||
|                 }; | ||||
|                  | ||||
|                 await ctx.Reply($"{Emojis.Success} {target.Name.SanitizeMentions()}'s {subject.Name()} has been set to **{newLevel.Name()}**. {explanation}"); | ||||
|                 await ctx.Reply($"{Emojis.Success} {target.NameFor(ctx).SanitizeMentions()}'s {subject.Name()} has been set to **{newLevel.Name()}**. {explanation}"); | ||||
|             } | ||||
|             else if (ctx.Match("all") || newValueFromCommand != null) | ||||
|             { | ||||
| @@ -449,9 +454,9 @@ namespace PluralKit.Bot | ||||
|                 await _data.SaveMember(target); | ||||
|                  | ||||
|                 if(newLevel == PrivacyLevel.Private) | ||||
|                     await ctx.Reply($"All {target.Name.SanitizeMentions()}'s privacy settings have been set to **{newLevel.Name()}**. Other accounts will now see nothing on the member card."); | ||||
|                     await ctx.Reply($"All {target.NameFor(ctx).SanitizeMentions()}'s privacy settings have been set to **{newLevel.Name()}**. Other accounts will now see nothing on the member card."); | ||||
|                 else  | ||||
|                     await ctx.Reply($"All {target.Name.SanitizeMentions()}'s privacy settings have been set to **{newLevel.Name()}**. Other accounts will now see everything on the member card."); | ||||
|                     await ctx.Reply($"All {target.NameFor(ctx).SanitizeMentions()}'s privacy settings have been set to **{newLevel.Name()}**. Other accounts will now see everything on the member card."); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
| @@ -469,7 +474,7 @@ namespace PluralKit.Bot | ||||
|             if (ctx.System == null) throw Errors.NoSystemError; | ||||
|             if (target.System != ctx.System.Id) throw Errors.NotOwnMemberError; | ||||
|              | ||||
|             await ctx.Reply($"{Emojis.Warn} Are you sure you want to delete \"{target.Name.SanitizeMentions()}\"? If so, reply to this message with the member's ID (`{target.Hid}`). __***This cannot be undone!***__"); | ||||
|             await ctx.Reply($"{Emojis.Warn} Are you sure you want to delete \"{target.NameFor(ctx).SanitizeMentions()}\"? If so, reply to this message with the member's ID (`{target.Hid}`). __***This cannot be undone!***__"); | ||||
|             if (!await ctx.ConfirmWithReply(target.Hid)) throw Errors.MemberDeleteCancelled; | ||||
|             await _data.DeleteMember(target); | ||||
|             await ctx.Reply($"{Emojis.Success} Member deleted."); | ||||
|   | ||||
| @@ -36,7 +36,7 @@ namespace PluralKit.Bot | ||||
|  | ||||
|                 if (conflicts.Count <= 0) return true; | ||||
|  | ||||
|                 var conflictList = conflicts.Select(m => $"- **{m.Name}**"); | ||||
|                 var conflictList = conflicts.Select(m => $"- **{m.NameFor(ctx)}**"); | ||||
|                 var msg = await ctx.Reply( | ||||
|                     $"{Emojis.Warn} The following members have conflicting proxy tags:\n{string.Join('\n', conflictList)}\nDo you want to proceed anyway?"); | ||||
|                 return await ctx.PromptYesNo(msg); | ||||
|   | ||||
| @@ -62,7 +62,7 @@ namespace PluralKit.Bot | ||||
|                 var lastSwitchMembers = _data.GetSwitchMembers(lastSwitch); | ||||
|                 // Make sure the requested switch isn't identical to the last one | ||||
|                 if (await lastSwitchMembers.Select(m => m.Id).SequenceEqualAsync(members.Select(m => m.Id).ToAsyncEnumerable())) | ||||
|                     throw Errors.SameSwitch(members); | ||||
|                     throw Errors.SameSwitch(members, ctx.LookupContextFor(ctx.System)); | ||||
|             } | ||||
|  | ||||
|             await _data.AddSwitch(ctx.System.Id, members); | ||||
| @@ -70,7 +70,7 @@ namespace PluralKit.Bot | ||||
|             if (members.Count == 0) | ||||
|                 await ctx.Reply($"{Emojis.Success} Switch-out registered."); | ||||
|             else | ||||
|                 await ctx.Reply($"{Emojis.Success} Switch registered. Current fronter is now {string.Join(", ", members.Select(m => m.Name)).SanitizeMentions()}."); | ||||
|                 await ctx.Reply($"{Emojis.Success} Switch registered. Current fronter is now {string.Join(", ", members.Select(m => m.NameFor(ctx))).SanitizeMentions()}."); | ||||
|         } | ||||
|          | ||||
|         public async Task SwitchMove(Context ctx) | ||||
| @@ -102,7 +102,7 @@ namespace PluralKit.Bot | ||||
|             // Now we can actually do the move, yay! | ||||
|             // But, we do a prompt to confirm. | ||||
|             var lastSwitchMembers = _data.GetSwitchMembers(lastTwoSwitches[0]); | ||||
|             var lastSwitchMemberStr = string.Join(", ", await lastSwitchMembers.Select(m => m.Name).ToListAsync()); | ||||
|             var lastSwitchMemberStr = string.Join(", ", await lastSwitchMembers.Select(m => m.NameFor(ctx)).ToListAsync()); | ||||
|             var lastSwitchTimeStr = DateTimeFormats.ZonedDateTimeFormat.Format(lastTwoSwitches[0].Timestamp.InZone(ctx.System.Zone)); | ||||
|             var lastSwitchDeltaStr = DateTimeFormats.DurationFormat.Format(SystemClock.Instance.GetCurrentInstant() - lastTwoSwitches[0].Timestamp); | ||||
|             var newSwitchTimeStr = DateTimeFormats.ZonedDateTimeFormat.Format(time); | ||||
| @@ -137,7 +137,7 @@ namespace PluralKit.Bot | ||||
|             if (lastTwoSwitches.Count == 0) throw Errors.NoRegisteredSwitches; | ||||
|  | ||||
|             var lastSwitchMembers = _data.GetSwitchMembers(lastTwoSwitches[0]); | ||||
|             var lastSwitchMemberStr = string.Join(", ", await lastSwitchMembers.Select(m => m.Name).ToListAsync()); | ||||
|             var lastSwitchMemberStr = string.Join(", ", await lastSwitchMembers.Select(m => m.NameFor(ctx)).ToListAsync()); | ||||
|             var lastSwitchDeltaStr = DateTimeFormats.DurationFormat.Format(SystemClock.Instance.GetCurrentInstant() - lastTwoSwitches[0].Timestamp); | ||||
|  | ||||
|             DiscordMessage msg; | ||||
| @@ -149,7 +149,7 @@ namespace PluralKit.Bot | ||||
|             else | ||||
|             { | ||||
|                 var secondSwitchMembers = _data.GetSwitchMembers(lastTwoSwitches[1]); | ||||
|                 var secondSwitchMemberStr = string.Join(", ", await secondSwitchMembers.Select(m => m.Name).ToListAsync()); | ||||
|                 var secondSwitchMemberStr = string.Join(", ", await secondSwitchMembers.Select(m => m.NameFor(ctx)).ToListAsync()); | ||||
|                 var secondSwitchDeltaStr = DateTimeFormats.DurationFormat.Format(SystemClock.Instance.GetCurrentInstant() - lastTwoSwitches[1].Timestamp); | ||||
|                 msg = await ctx.Reply( | ||||
|                     $"{Emojis.Warn} This will delete the latest switch ({lastSwitchMemberStr.SanitizeMentions()}, {lastSwitchDeltaStr} ago). The next latest switch is {secondSwitchMemberStr.SanitizeMentions()} ({secondSwitchDeltaStr} ago). Is this okay?"); | ||||
|   | ||||
| @@ -39,7 +39,7 @@ namespace PluralKit.Bot | ||||
|             var sw = await _data.GetLatestSwitch(system.Id); | ||||
|             if (sw == null) throw Errors.NoRegisteredSwitches; | ||||
|              | ||||
|             await ctx.Reply(embed: await _embeds.CreateFronterEmbed(sw, system.Zone)); | ||||
|             await ctx.Reply(embed: await _embeds.CreateFronterEmbed(sw, system.Zone, ctx.LookupContextFor(system))); | ||||
|         } | ||||
|  | ||||
|         public async Task SystemFrontHistory(Context ctx, PKSystem system) | ||||
| @@ -68,7 +68,7 @@ namespace PluralKit.Bot | ||||
|                         var sw = entry.ThisSwitch; | ||||
|                         // Fetch member list and format | ||||
|                         var members = await _data.GetSwitchMembers(sw).ToListAsync(); | ||||
|                         var membersStr = members.Any() ? string.Join(", ", members.Select(m => m.Name)) : "no fronter"; | ||||
|                         var membersStr = members.Any() ? string.Join(", ", members.Select(m => m.NameFor(ctx))) : "no fronter"; | ||||
|  | ||||
|                         var switchSince = SystemClock.Instance.GetCurrentInstant() - sw.Timestamp; | ||||
|  | ||||
| @@ -113,7 +113,7 @@ namespace PluralKit.Bot | ||||
|             if (rangeStart.Value.ToInstant() > now) throw Errors.FrontPercentTimeInFuture; | ||||
|              | ||||
|             var frontpercent = await _data.GetFrontBreakdown(system, rangeStart.Value.ToInstant(), now); | ||||
|             await ctx.Reply(embed: await _embeds.CreateFrontPercentEmbed(frontpercent, system.Zone)); | ||||
|             await ctx.Reply(embed: await _embeds.CreateFrontPercentEmbed(frontpercent, system.Zone, ctx.LookupContextFor(system))); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -24,7 +24,7 @@ namespace PluralKit.Bot | ||||
|             var renderer = GetRendererFor(ctx); | ||||
|             var opts = GetOptions(ctx, target); | ||||
|              | ||||
|             var members = (await _db.Execute(c => opts.Execute(c, target))).ToList(); | ||||
|             var members = (await _db.Execute(c => opts.Execute(c, target, ctx.LookupContextFor(target)))).ToList(); | ||||
|             await ctx.Paginate( | ||||
|                 members.ToAsyncEnumerable(), | ||||
|                 members.Count, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user