Fix: ignore replies quoting messages to ChatGPT

This fix addresses an issue where messages quoting another message
directed to ChatGPT were incorrectly treated as if they were addressed
themselves to ChatGPT.

Change-Id: I021ea7e90b26eba74831c487761048102ecab96c
Signed-off-by: Patrizio <patrizio.gelosi@amarulasolutions.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/ClientMessage.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/ClientMessage.java
index eac9527..dd4f130 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/ClientMessage.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/ClientMessage.java
@@ -93,8 +93,8 @@
     }
 
     private Pattern getBotMentionPattern() {
-        String emailRegex = "@" + getUserNameOrEmail() + "\\b";
-        return Pattern.compile(emailRegex);
+        String emailRegex = "^(?!>).*?(?:@" + getUserNameOrEmail() + ")\\b";
+        return Pattern.compile(emailRegex, Pattern.MULTILINE);
     }
 
     private String getUserNameOrEmail() {
diff --git a/src/test/resources/__files/gerritPatchSetComments.json b/src/test/resources/__files/gerritPatchSetComments.json
index a0a8f4f..42741cc 100644
--- a/src/test/resources/__files/gerritPatchSetComments.json
+++ b/src/test/resources/__files/gerritPatchSetComments.json
@@ -117,7 +117,7 @@
       },
       "in_reply_to": "63208cea_7f611216",
       "updated": "2023-11-06 11:47:51.000000000",
-      "message": "@gpt message 2",
+      "message": "> @gpt message 2",
       "commit_id": "f5433ac8b8650225de6d2912032689089e5d9f40"
     }
   ]
diff --git a/src/test/resources/__files/stateful/chatGptPromptTagRequests.json b/src/test/resources/__files/stateful/chatGptPromptTagRequests.json
index 106dfd4..0b11575 100644
--- a/src/test/resources/__files/stateful/chatGptPromptTagRequests.json
+++ b/src/test/resources/__files/stateful/chatGptPromptTagRequests.json
@@ -1 +1 @@
-[{"request":"can you suggest an alternative commit message?","id":0},{"request":"message","id":1},{"request":"message 2","id":2}]
\ No newline at end of file
+[{"request":"can you suggest an alternative commit message?","id":0},{"request":"message","id":1}]
\ No newline at end of file
diff --git a/src/test/resources/__files/stateless/chatGptExpectedRequestMessage.json b/src/test/resources/__files/stateless/chatGptExpectedRequestMessage.json
index f6e01d6..ce2f64b 100644
--- a/src/test/resources/__files/stateless/chatGptExpectedRequestMessage.json
+++ b/src/test/resources/__files/stateless/chatGptExpectedRequestMessage.json
@@ -1 +1 @@
-[{"request":"can you suggest an alternative commit message?","history":[{"role":"user","content":"comment"},{"role":"user","content":"comment 2"},{"role":"assistant","content":"The commit message \u0027Minor Fixes\u0027 is too vague and does not provide enough context about the changes made. A more descriptive message that outlines the specific fixes or improvements would be beneficial."},{"role":"assistant","content":"How about something like \"Corrected Indentation in Module-Class Retrieval Line\"?"}],"id":0},{"request":"message","id":1,"filename":"test_file.py","lineNumber":5,"codeSnippet":"TypeClassOrPath"},{"request":"message 2","history":[{"role":"assistant","content":"message from gpt"}],"id":2,"filename":"test_file.py","lineNumber":5,"codeSnippet":"TypeClassOrPath"}]
\ No newline at end of file
+[{"request":"can you suggest an alternative commit message?","history":[{"role":"user","content":"comment"},{"role":"user","content":"comment 2"},{"role":"assistant","content":"The commit message \u0027Minor Fixes\u0027 is too vague and does not provide enough context about the changes made. A more descriptive message that outlines the specific fixes or improvements would be beneficial."},{"role":"assistant","content":"How about something like \"Corrected Indentation in Module-Class Retrieval Line\"?"}],"id":0},{"request":"message","id":1,"filename":"test_file.py","lineNumber":5,"codeSnippet":"TypeClassOrPath"}]
\ No newline at end of file
diff --git a/src/test/resources/__files/stateless/chatGptPromptTagReview.json b/src/test/resources/__files/stateless/chatGptPromptTagReview.json
index 60198cc..2321234 100644
--- a/src/test/resources/__files/stateless/chatGptPromptTagReview.json
+++ b/src/test/resources/__files/stateless/chatGptPromptTagReview.json
@@ -1 +1 @@
-[{"history":[{"role":"assistant","content":"message from gpt"},{"role":"user","content":"message 2"}],"filename":"test_file.py","lineNumber":5,"codeSnippet":"TypeClassOrPath"},{"history":[{"role":"user","content":"comment"},{"role":"user","content":"comment 2"},{"role":"assistant","content":"The commit message \u0027Minor Fixes\u0027 is too vague and does not provide enough context about the changes made. A more descriptive message that outlines the specific fixes or improvements would be beneficial."},{"role":"user","content":"can you suggest an alternative commit message?"},{"role":"assistant","content":"How about something like \"Corrected Indentation in Module-Class Retrieval Line\"?"}]}]
\ No newline at end of file
+[{"history":[{"role":"assistant","content":"message from gpt"},{"role":"user","content":"\u003e @gpt message 2"}],"filename":"test_file.py","lineNumber":5,"codeSnippet":"TypeClassOrPath"},{"history":[{"role":"user","content":"comment"},{"role":"user","content":"comment 2"},{"role":"assistant","content":"The commit message \u0027Minor Fixes\u0027 is too vague and does not provide enough context about the changes made. A more descriptive message that outlines the specific fixes or improvements would be beneficial."},{"role":"user","content":"can you suggest an alternative commit message?"},{"role":"assistant","content":"How about something like \"Corrected Indentation in Module-Class Retrieval Line\"?"}]}]
\ No newline at end of file