Skip to content

Commit a60adbe

Browse files
committed
fix upper- / lowercase detection
1 parent f86b939 commit a60adbe

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

src/main/java/net/javadiscord/javabot/listener/HugListener.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
import lombok.RequiredArgsConstructor;
44
import lombok.extern.slf4j.Slf4j;
5-
import net.dv8tion.jda.api.entities.*;
5+
import net.dv8tion.jda.api.entities.Message;
6+
import net.dv8tion.jda.api.entities.Webhook;
67
import net.dv8tion.jda.api.entities.channel.ChannelType;
78
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
89
import net.dv8tion.jda.api.entities.channel.middleman.StandardGuildChannel;
@@ -34,12 +35,25 @@ private static String processFuck(String str) {
3435
String suffix = Objects.requireNonNullElse(matchResult.group(2), "");
3536
String processedSuffix = switch(suffix.toLowerCase()) {
3637
case "er", "ing" -> copyCase(suffix, 0, 'g') + suffix;
37-
default -> suffix.startsWith("k") ? "g".repeat(suffix.length()) : "";
38+
default -> suffix.toLowerCase().startsWith("k") ? copyCase(suffix, "g".repeat(suffix.length())) : "";
3839
};
3940
return processHug(theFuck) + processedSuffix;
4041
});
4142
}
4243

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+
4357
@Override
4458
public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
4559
if (!event.isFromGuild()) {

0 commit comments

Comments
 (0)