@@ -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