11package org .togetherjava .tjbot .commands .code ;
22
3- import net .dv8tion .jda .api .entities .Member ;
43import net .dv8tion .jda .api .entities .Message ;
54import net .dv8tion .jda .api .entities .Role ;
65import net .dv8tion .jda .api .entities .channel .ChannelType ;
1211import org .togetherjava .tjbot .commands .utils .MessageUtils ;
1312import org .togetherjava .tjbot .config .Config ;
1413
14+ import java .util .Arrays ;
15+ import java .util .List ;
1516import java .util .Optional ;
1617import java .util .function .Predicate ;
1718import java .util .regex .Pattern ;
@@ -25,7 +26,7 @@ public final class CodeMessageAutoDetection extends MessageReceiverAdapter {
2526
2627 private final CodeMessageHandler codeMessageHandler ;
2728 private final Predicate <String > isHelpForumName ;
28- private final String ignoredRolePattern ;
29+ private final List < Predicate < String >> isIgnoredRolePattern ;
2930
3031 /**
3132 * Creates a new instance.
@@ -41,13 +42,16 @@ public CodeMessageAutoDetection(Config config, CodeMessageHandler codeMessageHan
4142 isHelpForumName =
4243 Pattern .compile (config .getHelpSystem ().getHelpForumPattern ()).asMatchPredicate ();
4344
44- ignoredRolePattern = config .getIgnoreMessageAutoDetectionRolePattern ();
45+ isIgnoredRolePattern =
46+ Arrays .stream (config .getIgnoreCodeAutoDetectionRolePattern ().split ("\\ |" ))
47+ .map (role -> Pattern .compile (role ).asMatchPredicate ())
48+ .toList ();
4549 }
4650
4751 @ Override
4852 public void onMessageReceived (MessageReceivedEvent event ) {
4953 if (event .isWebhookMessage () || event .getAuthor ().isBot () || !isHelpThread (event )
50- || isSentByIgnoredMember (event .getMember ())) {
54+ || isSentByExcludedRole (event .getMember (). getRoles ())) {
5155 return ;
5256 }
5357
@@ -68,11 +72,11 @@ public void onMessageReceived(MessageReceivedEvent event) {
6872 codeMessageHandler .addAndHandleCodeMessage (originalMessage , true );
6973 }
7074
71- private boolean isSentByIgnoredMember (Member member ) {
72- return member .getRoles ()
73- .stream ()
75+ private boolean isSentByExcludedRole (List <Role > roles ) {
76+ return roles .stream ()
7477 .map (Role ::getName )
75- .anyMatch (role -> role .matches (ignoredRolePattern ));
78+ .anyMatch (role -> isIgnoredRolePattern .stream ()
79+ .anyMatch (rolePattern -> rolePattern .test (role )));
7680 }
7781
7882 private boolean isHelpThread (MessageReceivedEvent event ) {
0 commit comments