Skip to content

Commit 735fce9

Browse files
committed
Unpigable name are now cahnged to properly formatted name (derived from username) if fails it fallback to randomly generated username.
1 parent b11ead7 commit 735fce9

1 file changed

Lines changed: 28 additions & 4 deletions

File tree

src/main/java/net/discordjug/javabot/listener/PingableNameListener.java

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public PingableNameListener(NotificationService notificationService) {
4848
public void onGuildMemberJoin(GuildMemberJoinEvent event) {
4949
checkNickname(event.getMember());
5050
}
51-
51+
5252
@Override
5353
public void onGuildMemberUpdate(GuildMemberUpdateEvent event) {
5454
checkNickname(event.getMember());
@@ -60,17 +60,17 @@ public void onGuildMemberUpdate(GuildMemberUpdateEvent event) {
6060
*/
6161
private void checkNickname(Member member) {
6262
if (!isPingable(member.getEffectiveName()) && !canBypassCheck(member)) {
63-
changeName(member);
63+
changeName(member);
6464
}
6565
}
6666

6767
/**
68-
* Changes the given {@link Member}s name to a randomly generated one.
68+
* Changes the given {@link Member}s name to properly formatted name if fails then use random generated one.
6969
* @param member The Member whose name should be changed.
7070
*/
7171
private void changeName(Member member) {
7272
String oldName = member.getEffectiveName();
73-
String newName = generateRandomName();
73+
String newName = makeNewName(member.getUser().getName());
7474
member.modifyNickname(newName.substring(0, Math.min(31, newName.length()))).queue();
7575
member.getUser().openPrivateChannel()
7676
.flatMap(channel ->
@@ -99,6 +99,30 @@ private String generateRandomName() {
9999
return StringUtils.capitalize(adjective) + StringUtils.capitalize(noun);
100100
}
101101

102+
private String makeNewName(String username){
103+
int startIndex = 0;
104+
int endIndex = username.length()-1;
105+
for(int i=0; i < username.length();i++){
106+
char character = username.charAt(i);
107+
if (character >= 'a' && character <= 'z' || character >= 'A' && character <= 'Z'){
108+
startIndex = i;
109+
break;
110+
}
111+
}
112+
for(int i=username.length()-1; i >= 0;i--){
113+
char character = username.charAt(i);
114+
if (character >= 'a' && character <='z' || character >= 'A' && character <= 'Z'){
115+
endIndex = i;
116+
break;
117+
}
118+
}
119+
String newUsername = StringUtils.capitalize(username.substring(startIndex,endIndex+1));
120+
if(!isPingable(newUsername)){
121+
newUsername = generateRandomName();
122+
}
123+
return newUsername;
124+
}
125+
102126
/**
103127
* Reads strings from the given URL to a {@link List}, removes words with a dash.
104128
* @param url The URL to read.

0 commit comments

Comments
 (0)