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());
}
}