From acb052bea3af39091510a28aae887bc6d8f8d816 Mon Sep 17 00:00:00 2001 From: Noi Date: Mon, 4 Sep 2023 16:58:45 -0700 Subject: [PATCH] Drop use of discriminator if none exists --- ApplicationCommands/ExportModule.cs | 6 +++--- Common.cs | 16 ++++++++++++---- ShardManager.cs | 3 ++- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/ApplicationCommands/ExportModule.cs b/ApplicationCommands/ExportModule.cs index 77ca85b..0672307 100644 --- a/ApplicationCommands/ExportModule.cs +++ b/ApplicationCommands/ExportModule.cs @@ -40,7 +40,7 @@ public class ExportModule : BotModuleBase { if (user == null) continue; // User disappeared in the instant between getting list and processing writer.Write($"● {Common.MonthNames[item.BirthMonth]}-{item.BirthDay:00}: "); writer.Write(item.UserId); - writer.Write(" " + user.Username + "#" + user.Discriminator); + writer.Write(" " + user.ToString()); if (user.Nickname != null) writer.Write(" - Nickname: " + user.Nickname); if (item.TimeZone != null) writer.Write(" | Time zone: " + item.TimeZone); writer.WriteLine(); @@ -74,9 +74,9 @@ public class ExportModule : BotModuleBase { if (user == null) continue; // User disappeared in the instant between getting list and processing writer.Write(item.UserId); writer.Write(','); - writer.Write(csvEscape(user.Username + "#" + user.Discriminator)); + writer.Write(csvEscape(user.ToString())); writer.Write(','); - if (user.Nickname != null) writer.Write(user.Nickname); + if (user.Nickname != null) writer.Write(csvEscape(user.Nickname)); writer.Write(','); writer.Write($"{Common.MonthNames[item.BirthMonth]}-{item.BirthDay:00}"); writer.Write(','); diff --git a/Common.cs b/Common.cs index f1d7bf3..e88791c 100644 --- a/Common.cs +++ b/Common.cs @@ -19,11 +19,19 @@ static class Common { return result.ToString(); } - var username = escapeFormattingCharacters(member.Username); - if (member.Nickname != null) { - return $"**{escapeFormattingCharacters(member.Nickname)}** ({username}#{member.Discriminator})"; + // We do a little bit of special formatting here to try to emphasize the username/nickname over the discriminator + if (member.DiscriminatorValue == 0) { + if (member.Nickname != null) { + return $"**{escapeFormattingCharacters(member.Nickname)}** ({member.Username})"; + } + return member.Username; + } else { + var username = escapeFormattingCharacters(member.Username); + if (member.Nickname != null) { + return $"**{escapeFormattingCharacters(member.Nickname)}** ({username}#{member.Discriminator})"; + } + return $"**{username}**" + (member.DiscriminatorValue == 0 ? $"#{member.Discriminator}" : ""); } - return $"**{username}**#{member.Discriminator}"; } public static Dictionary MonthNames { get; } = new() { diff --git a/ShardManager.cs b/ShardManager.cs index d742725..7a1e5e2 100644 --- a/ShardManager.cs +++ b/ShardManager.cs @@ -79,7 +79,8 @@ class ShardManager : IDisposable { DefaultRetryMode = RetryMode.Retry502 | RetryMode.RetryTimeouts, GatewayIntents = GatewayIntents.Guilds | GatewayIntents.GuildMembers, SuppressUnknownDispatchWarnings = true, - LogGatewayIntentWarnings = false + LogGatewayIntentWarnings = false, + FormatUsersInBidirectionalUnicode = false }; var services = new ServiceCollection() .AddSingleton(s => new ShardInstance(this, s))