diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/tophelper/TopHelpersMessageListener.java b/application/src/main/java/org/togetherjava/tjbot/commands/tophelper/TopHelpersMessageListener.java index 58603474cd..52815bbdb6 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/tophelper/TopHelpersMessageListener.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/tophelper/TopHelpersMessageListener.java @@ -18,6 +18,14 @@ * {@link TopHelpersCommand} to pick them up. */ public final class TopHelpersMessageListener extends MessageReceiverAdapter { + /** + * Matches invisible control characters and unused code points + * + * @see Unicode + * Categories + */ + private static final String UNCOUNTED_CHARS = "\\P{C}"; + private final Database database; private final Predicate isStagingChannelName; @@ -65,13 +73,16 @@ private boolean isHelpThread(MessageReceivedEvent event) { } private void addMessageRecord(MessageReceivedEvent event) { + String messageContent = event.getMessage().getContentRaw(); + long messageLength = messageContent.replaceAll(UNCOUNTED_CHARS, "").length(); + database.write(context -> context.newRecord(HELP_CHANNEL_MESSAGES) .setMessageId(event.getMessage().getIdLong()) .setGuildId(event.getGuild().getIdLong()) .setChannelId(event.getChannel().getIdLong()) .setAuthorId(event.getAuthor().getIdLong()) .setSentAt(event.getMessage().getTimeCreated().toInstant()) - .setMessageLength((long) event.getMessage().getContentRaw().length()) + .setMessageLength(messageLength) .insert()); } }