From c6ad144205463642e52b1b0aa4fb5c79255d0e0c Mon Sep 17 00:00:00 2001 From: danthe1st Date: Sun, 7 Jan 2024 16:34:17 +0100 Subject: [PATCH 1/3] use java codeblock when autoformatting code in help channels --- .../discordjug/javabot/systems/help/AutoCodeFormatter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java b/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java index 28f83d1fc..78f0720e9 100644 --- a/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java +++ b/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java @@ -131,11 +131,11 @@ private void sendFormatHint(MessageReceivedEvent event) { private void replaceUnformattedCode(String msg, int codeStartIndex, int codeEndIndex, MessageReceivedEvent event) { // default case: a "normal", non-ping containing, non first message of a forum-thread containing "{" and "}". // user must also have set their preferences to allow this. - if (msg.length() > 1992) { // can't exceed discord's char limit + if (msg.length() > 1988) { // can't exceed discord's char limit sendFormatHint(event); return; } - String messageContent = msg.substring(0, codeStartIndex) + " ```" + + String messageContent = msg.substring(0, codeStartIndex) + " ```java" + msg.substring(codeStartIndex, codeEndIndex) + " ```" + msg.substring(codeEndIndex); EmbedBuilder autoformatInfo = new EmbedBuilder().setDescription(botConfig.get(event.getGuild()) .getHelpConfig() From a9006c3fb82744959a36d53a849feb9a211a5854 Mon Sep 17 00:00:00 2001 From: danthe1st Date: Mon, 8 Jan 2024 14:07:50 +0100 Subject: [PATCH 2/3] use JDA constant for message length --- .../net/discordjug/javabot/systems/help/AutoCodeFormatter.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java b/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java index 78f0720e9..f9776e6bc 100644 --- a/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java +++ b/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java @@ -10,6 +10,7 @@ import net.discordjug.javabot.util.WebhookUtil; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.Guild; +import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; @@ -131,7 +132,7 @@ private void sendFormatHint(MessageReceivedEvent event) { private void replaceUnformattedCode(String msg, int codeStartIndex, int codeEndIndex, MessageReceivedEvent event) { // default case: a "normal", non-ping containing, non first message of a forum-thread containing "{" and "}". // user must also have set their preferences to allow this. - if (msg.length() > 1988) { // can't exceed discord's char limit + if (msg.length() > Message.MAX_CONTENT_LENGTH - 12) { // can't exceed discord's char limit sendFormatHint(event); return; } From ed1c7bb65d498783edda3d2938f446a7dab57054 Mon Sep 17 00:00:00 2001 From: danthe1st Date: Mon, 8 Jan 2024 14:09:43 +0100 Subject: [PATCH 3/3] create constants for codeblock prefix and suffix --- .../javabot/systems/help/AutoCodeFormatter.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java b/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java index f9776e6bc..fd717693a 100644 --- a/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java +++ b/src/main/java/net/discordjug/javabot/systems/help/AutoCodeFormatter.java @@ -28,6 +28,8 @@ @RequiredArgsConstructor @Component public class AutoCodeFormatter { + private static final String CODEBLOCK_PREFIX = " ```java"; + private static final String CODEBLOCK_SUFFIX = " ```"; private final AutoMod autoMod; private final BotConfig botConfig; private final UserPreferenceService preferenceService; @@ -129,15 +131,16 @@ private void sendFormatHint(MessageReceivedEvent event) { ).queue(); } + private void replaceUnformattedCode(String msg, int codeStartIndex, int codeEndIndex, MessageReceivedEvent event) { // default case: a "normal", non-ping containing, non first message of a forum-thread containing "{" and "}". // user must also have set their preferences to allow this. - if (msg.length() > Message.MAX_CONTENT_LENGTH - 12) { // can't exceed discord's char limit + if (msg.length() > Message.MAX_CONTENT_LENGTH - CODEBLOCK_PREFIX.length() - CODEBLOCK_SUFFIX.length()) { // can't exceed discord's char limit sendFormatHint(event); return; } - String messageContent = msg.substring(0, codeStartIndex) + " ```java" + - msg.substring(codeStartIndex, codeEndIndex) + " ```" + msg.substring(codeEndIndex); + String messageContent = msg.substring(0, codeStartIndex) + CODEBLOCK_PREFIX + + msg.substring(codeStartIndex, codeEndIndex) + CODEBLOCK_SUFFIX + msg.substring(codeEndIndex); EmbedBuilder autoformatInfo = new EmbedBuilder().setDescription(botConfig.get(event.getGuild()) .getHelpConfig() .getAutoFormatInfoMessage());