From 735fce9039312debb20f202e5d4f4b1aa7c16af2 Mon Sep 17 00:00:00 2001 From: Neil Tomar Date: Mon, 10 Aug 2026 08:16:15 +0530 Subject: [PATCH 1/4] Unpigable name are now cahnged to properly formatted name (derived from username) if fails it fallback to randomly generated username. --- .../listener/PingableNameListener.java | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java b/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java index a4e4671fd..304a5e952 100644 --- a/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java +++ b/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java @@ -48,7 +48,7 @@ public PingableNameListener(NotificationService notificationService) { public void onGuildMemberJoin(GuildMemberJoinEvent event) { checkNickname(event.getMember()); } - + @Override public void onGuildMemberUpdate(GuildMemberUpdateEvent event) { checkNickname(event.getMember()); @@ -60,17 +60,17 @@ public void onGuildMemberUpdate(GuildMemberUpdateEvent event) { */ private void checkNickname(Member member) { if (!isPingable(member.getEffectiveName()) && !canBypassCheck(member)) { - changeName(member); + changeName(member); } } /** - * Changes the given {@link Member}s name to a randomly generated one. + * Changes the given {@link Member}s name to properly formatted name if fails then use random generated one. * @param member The Member whose name should be changed. */ private void changeName(Member member) { String oldName = member.getEffectiveName(); - String newName = generateRandomName(); + String newName = makeNewName(member.getUser().getName()); member.modifyNickname(newName.substring(0, Math.min(31, newName.length()))).queue(); member.getUser().openPrivateChannel() .flatMap(channel -> @@ -99,6 +99,30 @@ private String generateRandomName() { return StringUtils.capitalize(adjective) + StringUtils.capitalize(noun); } + private String makeNewName(String username){ + int startIndex = 0; + int endIndex = username.length()-1; + for(int i=0; i < username.length();i++){ + char character = username.charAt(i); + if (character >= 'a' && character <= 'z' || character >= 'A' && character <= 'Z'){ + startIndex = i; + break; + } + } + for(int i=username.length()-1; i >= 0;i--){ + char character = username.charAt(i); + if (character >= 'a' && character <='z' || character >= 'A' && character <= 'Z'){ + endIndex = i; + break; + } + } + String newUsername = StringUtils.capitalize(username.substring(startIndex,endIndex+1)); + if(!isPingable(newUsername)){ + newUsername = generateRandomName(); + } + return newUsername; + } + /** * Reads strings from the given URL to a {@link List}, removes words with a dash. * @param url The URL to read. From 02b4c70ed27b56cd6e8c94daafe08413b49735dc Mon Sep 17 00:00:00 2001 From: Neil Tomar Date: Mon, 10 Aug 2026 20:55:48 +0530 Subject: [PATCH 2/4] refactor & rename --- .../javabot/listener/PingableNameListener.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java b/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java index 304a5e952..c9fe65f2b 100644 --- a/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java +++ b/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java @@ -60,7 +60,7 @@ public void onGuildMemberUpdate(GuildMemberUpdateEvent event) { */ private void checkNickname(Member member) { if (!isPingable(member.getEffectiveName()) && !canBypassCheck(member)) { - changeName(member); + changeName(member); } } @@ -70,7 +70,7 @@ private void checkNickname(Member member) { */ private void changeName(Member member) { String oldName = member.getEffectiveName(); - String newName = makeNewName(member.getUser().getName()); + String newName = generateNewName(member.getUser().getName()); member.modifyNickname(newName.substring(0, Math.min(31, newName.length()))).queue(); member.getUser().openPrivateChannel() .flatMap(channel -> @@ -99,7 +99,7 @@ private String generateRandomName() { return StringUtils.capitalize(adjective) + StringUtils.capitalize(noun); } - private String makeNewName(String username){ + private String generateNewName(String username){ int startIndex = 0; int endIndex = username.length()-1; for(int i=0; i < username.length();i++){ @@ -116,11 +116,11 @@ private String makeNewName(String username){ break; } } - String newUsername = StringUtils.capitalize(username.substring(startIndex,endIndex+1)); - if(!isPingable(newUsername)){ - newUsername = generateRandomName(); + String newName = StringUtils.capitalize(username.substring(startIndex,endIndex+1)); + if(!isPingable(newName)){ + newName = generateRandomName(); } - return newUsername; + return newName; } /** From 39176263b0a7aa00f6f92097311d2a4bad22c6aa Mon Sep 17 00:00:00 2001 From: Neil Tomar Date: Mon, 10 Aug 2026 21:31:27 +0530 Subject: [PATCH 3/4] changed naming logic to regex --- .../javabot/listener/PingableNameListener.java | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java b/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java index c9fe65f2b..976ca6d90 100644 --- a/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java +++ b/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java @@ -100,23 +100,7 @@ private String generateRandomName() { } private String generateNewName(String username){ - int startIndex = 0; - int endIndex = username.length()-1; - for(int i=0; i < username.length();i++){ - char character = username.charAt(i); - if (character >= 'a' && character <= 'z' || character >= 'A' && character <= 'Z'){ - startIndex = i; - break; - } - } - for(int i=username.length()-1; i >= 0;i--){ - char character = username.charAt(i); - if (character >= 'a' && character <='z' || character >= 'A' && character <= 'Z'){ - endIndex = i; - break; - } - } - String newName = StringUtils.capitalize(username.substring(startIndex,endIndex+1)); + String newName = username.replaceAll("(?u)(?:^[^A-Za-z]++|[^A-Za-z]++$)",""); if(!isPingable(newName)){ newName = generateRandomName(); } From f5c4daba4a2573ad0c5c59ec7462f4813ff5ff81 Mon Sep 17 00:00:00 2001 From: Neil Tomar Date: Mon, 10 Aug 2026 21:48:01 +0530 Subject: [PATCH 4/4] fixed captialization. --- .../net/discordjug/javabot/listener/PingableNameListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java b/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java index 976ca6d90..20e1e148c 100644 --- a/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java +++ b/src/main/java/net/discordjug/javabot/listener/PingableNameListener.java @@ -100,7 +100,7 @@ private String generateRandomName() { } private String generateNewName(String username){ - String newName = username.replaceAll("(?u)(?:^[^A-Za-z]++|[^A-Za-z]++$)",""); + String newName = StringUtils.capitalize(username.replaceAll("(?u)(?:^[^A-Za-z]++|[^A-Za-z]++$)","")); if(!isPingable(newName)){ newName = generateRandomName(); }