Skip to content

Commit 5150b92

Browse files
committed
fix pingable name listener
1 parent e59239f commit 5150b92

File tree

1 file changed

+8
-15
lines changed

1 file changed

+8
-15
lines changed

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

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.util.List;
1616
import java.util.Random;
1717
import java.util.Scanner;
18+
import java.util.regex.Pattern;
1819
import java.util.stream.Collectors;
1920

2021
/**
@@ -25,6 +26,7 @@ public class PingableNameListener extends ListenerAdapter {
2526

2627
private static final String ADJECTIVES_URL = "https://gist.githubusercontent.com/karlbright/f91229b8c5ac6f4291dc/raw/4a69c2c50b88ee4559b021c443fee899535adc60/adjectives.txt";
2728
private static final String NOUNS_URL = "https://raw.githubusercontent.com/hugsy/stuff/main/random-word/english-nouns.txt";
29+
private static final Pattern PINGABLE_NAME_PATTERN = Pattern.compile("(\\W*\\w){3,}\\W*");
2830
private static final Random random = new Random();
2931
private final NotificationService notificationService;
3032
private final List<String> nouns;
@@ -58,7 +60,7 @@ public void onGuildMemberUpdateNickname(GuildMemberUpdateNicknameEvent event) {
5860
* @param nickname The {@link Member}'s new Nickname, null if that does not exist.
5961
*/
6062
private void checkNickname(Member member, String nickname) {
61-
if (!(nickname==null||isPingable(nickname)) && !isPingable(member.getUser().getName()) && !canBypassCheck(member)) {
63+
if (!isPingable(member.getEffectiveName()) && !canBypassCheck(member)) {
6264
changeName(member);
6365
}
6466
}
@@ -72,9 +74,9 @@ private void changeName(Member member) {
7274
String newName = generateRandomName();
7375
member.modifyNickname(newName.substring(0, Math.min(31, newName.length()))).queue();
7476
member.getUser().openPrivateChannel()
75-
.flatMap(channel -> channel.sendMessageFormat("Your nickname has been set to `%s` since both your user- and nickname's first three characters were deemed as not-pingable.", newName))
77+
.flatMap(channel -> channel.sendMessageFormat("Your display name in %s has been set to `%s` since your previous name was deemed as non-pingable.", member.getGuild().getName(), newName))
7678
.queue();
77-
notificationService.withGuild(member.getGuild()).sendToModerationLog(c -> c.sendMessageFormat("Changed %s's nickname from `%s` to `%s`.", member.getAsMention(), oldName, newName));
79+
notificationService.withGuild(member.getGuild()).sendToMessageLog(c -> c.sendMessageFormat("Changed %s's nickname from `%s` to `%s`.", member.getAsMention(), oldName, newName));
7880
}
7981

8082
/**
@@ -83,15 +85,7 @@ private void changeName(Member member) {
8385
* @return True if first three characters contain invalid characters, False if not.
8486
*/
8587
private boolean isPingable(String name) {
86-
if (name == null) return true;
87-
char[] nameChars = name.toCharArray();
88-
for (int i = 0; i < Math.min(2,name.length()); i++) {
89-
char c = nameChars[i];
90-
if (c < 32 || c > 126) {
91-
return false;
92-
}
93-
}
94-
return true;
88+
return PINGABLE_NAME_PATTERN.matcher(name).matches();
9589
}
9690

9791
/**
@@ -101,8 +95,7 @@ private boolean isPingable(String name) {
10195
private String generateRandomName() {
10296
String noun = nouns.get(random.nextInt(nouns.size()));
10397
String adjective = adjectives.get(random.nextInt(adjectives.size()));
104-
int number = random.nextInt(10000);
105-
return StringUtils.capitalize(adjective) + StringUtils.capitalize(noun) + number;
98+
return StringUtils.capitalize(adjective) + StringUtils.capitalize(noun);
10699
}
107100

108101
/**
@@ -130,6 +123,6 @@ private static List<String> readStrings(String url) {
130123
* @return Whether the Member can bypass name-checks or not.
131124
*/
132125
private static boolean canBypassCheck(Member member) {
133-
return member.getUser().isBot() || member.getUser().isSystem() || member.getGuild().getSelfMember().canInteract(member);
126+
return member.getUser().isBot() || member.getUser().isSystem() || !member.getGuild().getSelfMember().canInteract(member);
134127
}
135128
}

0 commit comments

Comments
 (0)