mirror of
https://github.com/RPCS3/discord-bot.git
synced 2026-01-31 01:25:22 +01:00
try to use username when it's better than the nickname
This commit is contained in:
@@ -171,11 +171,9 @@ namespace CompatBot.Commands
|
||||
public async Task Cleanup(CommandContext ctx, [Description("Discord user to clean up")] DiscordMember discordUser)
|
||||
{
|
||||
var name = discordUser.DisplayName;
|
||||
var newName = UsernameZalgoMonitor.StripZalgo(name, discordUser.Id);
|
||||
var newName = UsernameZalgoMonitor.StripZalgo(name, discordUser.Username, discordUser.Id);
|
||||
if (name == newName)
|
||||
{
|
||||
await ctx.Channel.SendMessageAsync("Failed to remove any extra symbols").ConfigureAwait(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
|
||||
@@ -104,7 +104,7 @@ namespace CompatBot.Commands
|
||||
if (!UsernameZalgoMonitor.NeedsRename(displayName))
|
||||
continue;
|
||||
|
||||
var nickname = UsernameZalgoMonitor.StripZalgo(displayName, member.Id).Sanitize();
|
||||
var nickname = UsernameZalgoMonitor.StripZalgo(displayName, member.Username, member.Id).Sanitize();
|
||||
try
|
||||
{
|
||||
await member.ModifyAsync(m => m.Nickname = nickname).ConfigureAwait(false);
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace CompatBot.EventHandlers
|
||||
if (c.GetMember(args.UserAfter) is DiscordMember m
|
||||
&& NeedsRename(m.DisplayName))
|
||||
{
|
||||
var suggestedName = StripZalgo(m.DisplayName, m.Id).Sanitize();
|
||||
var suggestedName = StripZalgo(m.DisplayName, m.Username, m.Id).Sanitize();
|
||||
await c.ReportAsync("🔣 Potential display name issue",
|
||||
$"User {m.GetMentionWithNickname()} has changed their __username__ and is now shown as **{m.DisplayName.Sanitize()}**\nAutomatically renamed to: **{suggestedName}**",
|
||||
null,
|
||||
@@ -46,11 +46,19 @@ namespace CompatBot.EventHandlers
|
||||
try
|
||||
{
|
||||
//member object most likely will not be updated in client cache at this moment
|
||||
var name = args.NicknameAfter ?? args.Member.Username;
|
||||
string? fallback;
|
||||
if (args.NicknameAfter is string name)
|
||||
fallback = args.Member.Username;
|
||||
else
|
||||
{
|
||||
name = args.Member.Username;
|
||||
fallback = null;
|
||||
}
|
||||
|
||||
var member = await args.Guild.GetMemberAsync(args.Member.Id).ConfigureAwait(false) ?? args.Member;
|
||||
if (NeedsRename(name))
|
||||
{
|
||||
var suggestedName = StripZalgo(name, args.Member.Id).Sanitize();
|
||||
var suggestedName = StripZalgo(name, fallback, args.Member.Id).Sanitize();
|
||||
await c.ReportAsync("🔣 Potential display name issue",
|
||||
$"Member {member.GetMentionWithNickname()} has changed their __display name__ and is now shown as **{name.Sanitize()}**\nAutomatically renamed to: **{suggestedName}**",
|
||||
null,
|
||||
@@ -71,7 +79,7 @@ namespace CompatBot.EventHandlers
|
||||
var name = args.Member.DisplayName;
|
||||
if (NeedsRename(name))
|
||||
{
|
||||
var suggestedName = StripZalgo(name, args.Member.Id).Sanitize();
|
||||
var suggestedName = StripZalgo(name, args.Member.Username, args.Member.Id).Sanitize();
|
||||
await c.ReportAsync("🔣 Potential display name issue",
|
||||
$"New member joined the server: {args.Member.GetMentionWithNickname()} and is shown as **{name.Sanitize()}**\nAutomatically renamed to: **{suggestedName}**",
|
||||
null,
|
||||
@@ -88,7 +96,7 @@ namespace CompatBot.EventHandlers
|
||||
public static bool NeedsRename(string displayName)
|
||||
{
|
||||
displayName = displayName.Normalize().TrimEager();
|
||||
return displayName != StripZalgo(displayName, 0ul, NormalizationForm.FormC, 3);
|
||||
return displayName != StripZalgo(displayName, null, 0ul, NormalizationForm.FormC, 3);
|
||||
}
|
||||
|
||||
private static async Task DmAndRenameUserAsync(DiscordClient client, DiscordMember member, string suggestedName)
|
||||
@@ -111,9 +119,11 @@ namespace CompatBot.EventHandlers
|
||||
}
|
||||
}
|
||||
|
||||
public static string StripZalgo(string displayName, ulong userId, NormalizationForm normalizationForm = NormalizationForm.FormD, int level = 0)
|
||||
public static string StripZalgo(string displayName, string? userName, ulong userId, NormalizationForm normalizationForm = NormalizationForm.FormD, int level = 0)
|
||||
{
|
||||
displayName = displayName.Normalize(normalizationForm).TrimEager();
|
||||
if (displayName is null or {Length: <3} && userName is not null)
|
||||
displayName = userName.Normalize(normalizationForm).TrimEager();
|
||||
if (displayName is null or {Length: <3})
|
||||
return GenerateRandomName(userId);
|
||||
|
||||
@@ -177,8 +187,11 @@ namespace CompatBot.EventHandlers
|
||||
}
|
||||
var result = builder.ToString().TrimEager();
|
||||
if (result is null or {Length: <3})
|
||||
return GenerateRandomName(userId);
|
||||
|
||||
{
|
||||
if (userName is null)
|
||||
return GenerateRandomName(userId);
|
||||
return StripZalgo(userName, null, userId, normalizationForm, level);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace Tests
|
||||
[TestCase("jò̵͗s̷̑͠ẻ̵͝p̸̆̂h̸͐̿", "joseph")]
|
||||
public void StripZalgoTest(string input, string expected)
|
||||
{
|
||||
var stripped = UsernameZalgoMonitor.StripZalgo(input, 0ul);
|
||||
var stripped = UsernameZalgoMonitor.StripZalgo(input, null, 0ul);
|
||||
Assert.That(stripped, Is.EqualTo(expected));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user