@@ -29,31 +29,6 @@ public class HugListener extends ListenerAdapter {
2929
3030 private static final Pattern FUCKER = Pattern .compile ("(fuck)(ing|er|k+)?" , Pattern .CASE_INSENSITIVE );
3131
32- private static String processFuck (String str ) {
33- return FUCKER .matcher (str ).replaceAll (matchResult -> {
34- String theFuck = matchResult .group (1 );
35- String suffix = Objects .requireNonNullElse (matchResult .group (2 ), "" );
36- String processedSuffix = switch (suffix .toLowerCase ()) {
37- case "er" , "ing" -> copyCase (suffix , 0 , 'g' ) + suffix ;
38- default -> suffix .toLowerCase ().startsWith ("k" ) ? copyCase (suffix , "g" .repeat (suffix .length ())) : "" ;
39- };
40- return processHug (theFuck ) + processedSuffix ;
41- });
42- }
43-
44- private static String copyCase (String source , String toChange ) {
45- if (source .length () != toChange .length ()) throw new IllegalArgumentException ("lengths differ" );
46- StringBuilder sb = new StringBuilder ();
47- for (int i = 0 ; i < source .length (); i ++) {
48- char a = source .charAt (i );
49- char b = toChange .charAt (i );
50- if (Character .isUpperCase (a )) b = Character .toUpperCase (b );
51- else b = Character .toLowerCase (b );
52- sb .append (b );
53- }
54- return sb .toString ();
55- }
56-
5732 @ Override
5833 public void onMessageReceived (@ Nonnull MessageReceivedEvent event ) {
5934 if (!event .isFromGuild ()) {
@@ -85,12 +60,11 @@ public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
8560 if (tc == null ) {
8661 return ;
8762 }
88- final TextChannel textChannel = tc ;
8963 String content = event .getMessage ().getContentRaw ();
9064 if (FUCKER .matcher (content ).find ()) {
9165 long threadId = event .isFromThread () ? event .getChannel ().getIdLong () : 0 ;
92- WebhookUtil .ensureWebhookExists (textChannel ,
93- wh -> sendWebhookMessage (wh , event .getMessage (), processFuck (content ), threadId ),
66+ WebhookUtil .ensureWebhookExists (tc ,
67+ wh -> sendWebhookMessage (wh , event .getMessage (), replaceFucks (content ), threadId ),
9468 e -> ExceptionLogger .capture (e , getClass ().getSimpleName ()));
9569 }
9670 }
@@ -102,6 +76,32 @@ private static String processHug(String originalText) {
10276 + copyCase (originalText , 3 , 'g' );
10377 }
10478
79+ private static String replaceFucks (String str ) {
80+ return FUCKER .matcher (str ).replaceAll (matchResult -> {
81+ String theFuck = matchResult .group (1 );
82+ String suffix = Objects .requireNonNullElse (matchResult .group (2 ), "" );
83+ String processedSuffix = switch (suffix .toLowerCase ()) {
84+ case "er" , "ing" -> copyCase (suffix , 0 , 'g' ) + suffix ; // fucking, fucker
85+ case "" -> "" ; // just fuck
86+ default -> copyCase (suffix , "g" .repeat (suffix .length ())); // fuckkkkk...
87+ };
88+ return processHug (theFuck ) + processedSuffix ;
89+ });
90+ }
91+
92+ private static String copyCase (String source , String toChange ) {
93+ if (source .length () != toChange .length ()) throw new IllegalArgumentException ("lengths differ" );
94+ StringBuilder sb = new StringBuilder ();
95+ for (int i = 0 ; i < source .length (); i ++) {
96+ char a = source .charAt (i );
97+ char b = toChange .charAt (i );
98+ if (Character .isUpperCase (a )) b = Character .toUpperCase (b );
99+ else b = Character .toLowerCase (b );
100+ sb .append (b );
101+ }
102+ return sb .toString ();
103+ }
104+
105105 private static char copyCase (String original , int index , char newChar ) {
106106 if (Character .isUpperCase (original .charAt (index ))) {
107107 return Character .toUpperCase (newChar );
0 commit comments