From f1e84db1a6dd15c64662dee60311545e7e451bb4 Mon Sep 17 00:00:00 2001 From: threeoh6000 Date: Thu, 15 Aug 2024 18:39:01 +0100 Subject: [PATCH] Escape username markdown directly. --- PluralKit.Bot/Services/EmbedService.cs | 6 +++--- PluralKit.Bot/Utils/DiscordUtils.cs | 9 +-------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/PluralKit.Bot/Services/EmbedService.cs b/PluralKit.Bot/Services/EmbedService.cs index e19c9495..fe4e9c0c 100644 --- a/PluralKit.Bot/Services/EmbedService.cs +++ b/PluralKit.Bot/Services/EmbedService.cs @@ -43,7 +43,7 @@ public class EmbedService { // Fetch/render info for all accounts simultaneously var accounts = await _repo.GetSystemAccounts(system.Id); - var users = (await GetUsers(accounts)).Select(x => x.User?.NameAndMention().EscapeMarkdownExcludingMentions() ?? $"(deleted account {x.Id})"); + var users = (await GetUsers(accounts)).Select(x => x.User?.NameAndMention() ?? $"(deleted account {x.Id})"); var countctx = LookupContext.ByNonOwner; if (cctx.MatchFlag("a", "all")) @@ -407,8 +407,8 @@ public class EmbedService // Calculate string displayed under "Sent by" string userStr; if (showContent && memberInfo != null && memberInfo.Nick != null) - userStr = $"**Username:** {userInfo.NameAndMention().EscapeMarkdownExcludingMentions()}\n**Nickname:** {memberInfo.Nick}"; - else if (userInfo != null) userStr = userInfo.NameAndMention().EscapeMarkdownExcludingMentions(); + userStr = $"**Username:** {userInfo.NameAndMention()}\n**Nickname:** {memberInfo.Nick}"; + else if (userInfo != null) userStr = userInfo.NameAndMention(); else userStr = $"*(deleted user {msg.Message.Sender})*"; var content = serverMsg?.Content?.NormalizeLineEndSpacing(); diff --git a/PluralKit.Bot/Utils/DiscordUtils.cs b/PluralKit.Bot/Utils/DiscordUtils.cs index 7ae42c39..2fca2e01 100644 --- a/PluralKit.Bot/Utils/DiscordUtils.cs +++ b/PluralKit.Bot/Utils/DiscordUtils.cs @@ -35,7 +35,7 @@ public static class DiscordUtils private static readonly Regex UNBROKEN_LINK_REGEX = new("?"); public static string NameAndMention(this User user) => - $"{user.Username}{(user.Discriminator == "0" ? "" : $"#{user.Discriminator}")} ({user.Mention()})"; + $"{user.Username.EscapeMarkdown()}{(user.Discriminator == "0" ? "" : $"#{user.Discriminator}")} ({user.Mention()})"; public static Instant SnowflakeToInstant(ulong snowflake) => Instant.FromUtc(2015, 1, 1, 0, 0, 0) + Duration.FromMilliseconds(snowflake >> 22); @@ -156,13 +156,6 @@ public static class DiscordUtils return input; } - public static string EscapeMarkdownExcludingMentions(this string input) - { - var pattern = new Regex(@"[*_~`(||)\\]", RegexOptions.Multiline); - if (input != null) return pattern.Replace(input, @"\$&"); - return input; - } - public static string EscapeBacktickPair(this string input) { if (input == null)