From f187c8b60e37982cd70d2141492fc71ce08e7ce1 Mon Sep 17 00:00:00 2001 From: tmcdonnell2 Date: Sat, 18 Mar 2023 14:00:12 -0700 Subject: [PATCH 1/5] Update to SlashCommandEducator to exclude strings that end with ")" or ";" from potential incorrect commands. Also, updates to SlashCommandEducatorTest to include new tests. --- .../tjbot/features/basic/SlashCommandEducator.java | 4 +++- .../tjbot/features/basic/SlashCommandEducatorTest.java | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/basic/SlashCommandEducator.java b/application/src/main/java/org/togetherjava/tjbot/features/basic/SlashCommandEducator.java index 9a6e77464a..a9d2ace9b8 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/basic/SlashCommandEducator.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/basic/SlashCommandEducator.java @@ -35,7 +35,9 @@ public void onMessageReceived(MessageReceivedEvent event) { String content = event.getMessage().getContentRaw(); - if (IS_MESSAGE_COMMAND.test(content) && content.length() < MAX_COMMAND_LENGTH) { + if (IS_MESSAGE_COMMAND.test(content) && + content.length() < MAX_COMMAND_LENGTH && + (!content.endsWith(";") && !content.endsWith(")"))) { sendAdvice(event.getMessage()); } } diff --git a/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java b/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java index 261e1db3af..e76d47681d 100644 --- a/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java +++ b/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java @@ -61,13 +61,15 @@ void ignoresOtherMessages(String message) { } private static Stream provideMessageCommands() { - return Stream.of("!foo", ".foo", "?foo", ".test", "!whatever", "!this is a test"); + return Stream.of("!foo", ".foo", "?foo", ".test", "!whatever", + "!this is a test", "this is a test;"); } private static Stream provideOtherMessages() { return Stream.of(" a ", "foo", "#foo", "/foo", "!!!", "?!?!?", "?", ".,-", "!f", "! foo", "thisIsAWordWhichLengthIsMoreThanThirtyLetterSoItShouldNotReply", - ".isLetter and .isNumber are available"); + ".isLetter and .isNumber are available", + ".toString()", ".toString();"); } } From fb83cb3edb68747614bd384ac30b79374712dd1b Mon Sep 17 00:00:00 2001 From: tmcdonnell2 Date: Sun, 19 Mar 2023 11:08:15 -0700 Subject: [PATCH 2/5] Update to SlashCommandEducator|Test to include regex solution and correct formatting. RawReminderTestHelper I think was caught up in the whole project autoformat as well. --- .../features/basic/SlashCommandEducator.java | 16 +++++++--------- .../features/basic/SlashCommandEducatorTest.java | 1 - .../features/reminder/RawReminderTestHelper.java | 4 ++-- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/basic/SlashCommandEducator.java b/application/src/main/java/org/togetherjava/tjbot/features/basic/SlashCommandEducator.java index a9d2ace9b8..4244a61aa9 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/basic/SlashCommandEducator.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/basic/SlashCommandEducator.java @@ -24,7 +24,7 @@ public final class SlashCommandEducator extends MessageReceiverAdapter { private static final Predicate IS_MESSAGE_COMMAND = Pattern.compile(""" [.!?] #Start of message command [a-zA-Z]{2,15} #Name of message command, e.g. 'close' - .* #Rest of the message + .*[^);] #Rest of the message (don't end with code stuff) """, Pattern.COMMENTS).asMatchPredicate(); @Override @@ -36,8 +36,7 @@ public void onMessageReceived(MessageReceivedEvent event) { String content = event.getMessage().getContentRaw(); if (IS_MESSAGE_COMMAND.test(content) && - content.length() < MAX_COMMAND_LENGTH && - (!content.endsWith(";") && !content.endsWith(")"))) { + content.length() < MAX_COMMAND_LENGTH) { sendAdvice(event.getMessage()); } } @@ -50,24 +49,23 @@ private void sendAdvice(Message message) { Try starting your message with a forward-slash `/` and Discord should open a popup showing you all available commands. A command might then look like `/foo` 👍"""; - createReply(message, content, SLASH_COMMAND_POPUP_ADVICE_PATH).queue(); + createReply(message, content).queue(); } - private static MessageCreateAction createReply(Message messageToReplyTo, String content, - String imagePath) { + private static MessageCreateAction createReply(Message messageToReplyTo, String content) { boolean useImage = true; - InputStream imageData = HelpSystemHelper.class.getResourceAsStream("/" + imagePath); + InputStream imageData = HelpSystemHelper.class.getResourceAsStream("/" + SLASH_COMMAND_POPUP_ADVICE_PATH); if (imageData == null) { useImage = false; } MessageEmbed embed = new EmbedBuilder().setDescription(content) - .setImage(useImage ? "attachment://" + imagePath : null) + .setImage(useImage ? "attachment://" + SLASH_COMMAND_POPUP_ADVICE_PATH : null) .build(); MessageCreateAction action = messageToReplyTo.replyEmbeds(embed); if (useImage) { - action = action.addFiles(FileUpload.fromData(imageData, imagePath)); + action = action.addFiles(FileUpload.fromData(imageData, SLASH_COMMAND_POPUP_ADVICE_PATH)); } return action; diff --git a/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java b/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java index e76d47681d..7baa58dab9 100644 --- a/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java +++ b/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java @@ -70,6 +70,5 @@ private static Stream provideOtherMessages() { "thisIsAWordWhichLengthIsMoreThanThirtyLetterSoItShouldNotReply", ".isLetter and .isNumber are available", ".toString()", ".toString();"); - } } diff --git a/application/src/test/java/org/togetherjava/tjbot/features/reminder/RawReminderTestHelper.java b/application/src/test/java/org/togetherjava/tjbot/features/reminder/RawReminderTestHelper.java index 00ccfd09fe..c8cebdb8bc 100644 --- a/application/src/test/java/org/togetherjava/tjbot/features/reminder/RawReminderTestHelper.java +++ b/application/src/test/java/org/togetherjava/tjbot/features/reminder/RawReminderTestHelper.java @@ -14,8 +14,8 @@ import static org.togetherjava.tjbot.db.generated.tables.PendingReminders.PENDING_REMINDERS; final class RawReminderTestHelper { - private Database database; - private JdaTester jdaTester; + private final Database database; + private final JdaTester jdaTester; RawReminderTestHelper(Database database, JdaTester jdaTester) { this.database = database; From f58fec1f9848d9d3ec93a6630643ebab076cdd29 Mon Sep 17 00:00:00 2001 From: tmcdonnell2 Date: Sun, 19 Mar 2023 21:23:16 -0700 Subject: [PATCH 3/5] Update to SlashCommandEducator|Test to include regex solution and correct formatting. RawReminderTestHelper I think was caught up in the whole project autoformat as well. --- .../tjbot/features/basic/SlashCommandEducator.java | 9 +++++---- .../tjbot/features/basic/SlashCommandEducatorTest.java | 7 +++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/basic/SlashCommandEducator.java b/application/src/main/java/org/togetherjava/tjbot/features/basic/SlashCommandEducator.java index 4244a61aa9..f2c0d7e24b 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/basic/SlashCommandEducator.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/basic/SlashCommandEducator.java @@ -35,8 +35,7 @@ public void onMessageReceived(MessageReceivedEvent event) { String content = event.getMessage().getContentRaw(); - if (IS_MESSAGE_COMMAND.test(content) && - content.length() < MAX_COMMAND_LENGTH) { + if (IS_MESSAGE_COMMAND.test(content) && content.length() < MAX_COMMAND_LENGTH) { sendAdvice(event.getMessage()); } } @@ -54,7 +53,8 @@ private void sendAdvice(Message message) { private static MessageCreateAction createReply(Message messageToReplyTo, String content) { boolean useImage = true; - InputStream imageData = HelpSystemHelper.class.getResourceAsStream("/" + SLASH_COMMAND_POPUP_ADVICE_PATH); + InputStream imageData = + HelpSystemHelper.class.getResourceAsStream("/" + SLASH_COMMAND_POPUP_ADVICE_PATH); if (imageData == null) { useImage = false; } @@ -65,7 +65,8 @@ private static MessageCreateAction createReply(Message messageToReplyTo, String MessageCreateAction action = messageToReplyTo.replyEmbeds(embed); if (useImage) { - action = action.addFiles(FileUpload.fromData(imageData, SLASH_COMMAND_POPUP_ADVICE_PATH)); + action = action + .addFiles(FileUpload.fromData(imageData, SLASH_COMMAND_POPUP_ADVICE_PATH)); } return action; diff --git a/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java b/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java index 7baa58dab9..660aef7795 100644 --- a/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java +++ b/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java @@ -61,14 +61,13 @@ void ignoresOtherMessages(String message) { } private static Stream provideMessageCommands() { - return Stream.of("!foo", ".foo", "?foo", ".test", "!whatever", - "!this is a test", "this is a test;"); + return Stream.of("!foo", ".foo", "?foo", ".test", "!whatever", "!this is a test", + "this is a test;"); } private static Stream provideOtherMessages() { return Stream.of(" a ", "foo", "#foo", "/foo", "!!!", "?!?!?", "?", ".,-", "!f", "! foo", "thisIsAWordWhichLengthIsMoreThanThirtyLetterSoItShouldNotReply", - ".isLetter and .isNumber are available", - ".toString()", ".toString();"); + ".isLetter and .isNumber are available", ".toString()", ".toString();"); } } From 031073f09fcb1505d110c3ce7fad265db6fdd52c Mon Sep 17 00:00:00 2001 From: tmcdonnell2 Date: Mon, 20 Mar 2023 09:37:55 -0700 Subject: [PATCH 4/5] Update to SlashCommandEducatorTest to switch test condition. Revert changes to RawReminderTestHelper. --- .../tjbot/features/basic/SlashCommandEducatorTest.java | 3 +-- .../tjbot/features/reminder/RawReminderTestHelper.java | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java b/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java index 660aef7795..e5759890a6 100644 --- a/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java +++ b/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java @@ -61,8 +61,7 @@ void ignoresOtherMessages(String message) { } private static Stream provideMessageCommands() { - return Stream.of("!foo", ".foo", "?foo", ".test", "!whatever", "!this is a test", - "this is a test;"); + return Stream.of("!foo", ".foo", "?foo", ".test", "!whatever", "!this is a test"); } private static Stream provideOtherMessages() { diff --git a/application/src/test/java/org/togetherjava/tjbot/features/reminder/RawReminderTestHelper.java b/application/src/test/java/org/togetherjava/tjbot/features/reminder/RawReminderTestHelper.java index c8cebdb8bc..00ccfd09fe 100644 --- a/application/src/test/java/org/togetherjava/tjbot/features/reminder/RawReminderTestHelper.java +++ b/application/src/test/java/org/togetherjava/tjbot/features/reminder/RawReminderTestHelper.java @@ -14,8 +14,8 @@ import static org.togetherjava.tjbot.db.generated.tables.PendingReminders.PENDING_REMINDERS; final class RawReminderTestHelper { - private final Database database; - private final JdaTester jdaTester; + private Database database; + private JdaTester jdaTester; RawReminderTestHelper(Database database, JdaTester jdaTester) { this.database = database; From 26196ec81017330b73885fdc18dc36b2e9e58763 Mon Sep 17 00:00:00 2001 From: tmcdonnell2 Date: Mon, 20 Mar 2023 09:46:17 -0700 Subject: [PATCH 5/5] Update to SlashCommandEducatorTest to switch test condition. --- .../tjbot/features/basic/SlashCommandEducatorTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java b/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java index e5759890a6..3b7035dc20 100644 --- a/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java +++ b/application/src/test/java/org/togetherjava/tjbot/features/basic/SlashCommandEducatorTest.java @@ -67,6 +67,7 @@ private static Stream provideMessageCommands() { private static Stream provideOtherMessages() { return Stream.of(" a ", "foo", "#foo", "/foo", "!!!", "?!?!?", "?", ".,-", "!f", "! foo", "thisIsAWordWhichLengthIsMoreThanThirtyLetterSoItShouldNotReply", - ".isLetter and .isNumber are available", ".toString()", ".toString();"); + ".isLetter and .isNumber are available", ".toString()", ".toString();", + "this is a test;"); } }