From a995510f0c987e51a74c1e71e917ec2c370cbc79 Mon Sep 17 00:00:00 2001 From: PieterCK Date: Fri, 22 Nov 2024 15:25:20 +0700 Subject: [PATCH] worker: Flag messages processed by embedded bot. This commit updates embedded bots to mark messages they have process as read. Since the service bots have their own `UserMessage` rows, this change enables us to track whether the bot has in fact processed the message by adding the `read` flag to their `UserMessage`. Fixes #28869. --- zerver/tests/test_service_bot_system.py | 9 ++++----- zerver/worker/embedded_bots.py | 8 +++++++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/zerver/tests/test_service_bot_system.py b/zerver/tests/test_service_bot_system.py index 1f0ac3f887..cf2045c445 100644 --- a/zerver/tests/test_service_bot_system.py +++ b/zerver/tests/test_service_bot_system.py @@ -608,13 +608,12 @@ class TestServiceBotEventTriggers(ZulipTestCase): self.assertFalse(mock_queue_event_on_commit.called) @responses.activate - def test_flag_messages_outgoing_webhook_bot_has_processed(self) -> None: + @for_all_bot_types + def test_flag_messages_service_bots_has_processed(self) -> None: """ - Verifies that once an event has been processed by the outgoing webhook - bot's queue processor, the message is marked as processed (flagged with `read`). + Verifies that once an event has been processed by the service bot's + queue processor, the message is marked as processed (flagged with `read`). """ - self.bot_profile.bot_type = UserProfile.OUTGOING_WEBHOOK_BOT - self.bot_profile.save() sender = self.user_profile recipients = [self.user_profile, self.bot_profile, self.second_bot_profile] responses.add( diff --git a/zerver/worker/embedded_bots.py b/zerver/worker/embedded_bots.py index 7660cc3010..552bad63bd 100644 --- a/zerver/worker/embedded_bots.py +++ b/zerver/worker/embedded_bots.py @@ -6,7 +6,12 @@ from typing import Any from typing_extensions import override from zulip_bots.lib import extract_query_without_mention -from zerver.lib.bot_lib import EmbeddedBotHandler, EmbeddedBotQuitError, get_bot_handler +from zerver.lib.bot_lib import ( + EmbeddedBotHandler, + EmbeddedBotQuitError, + do_flag_service_bots_messages_as_processed, + get_bot_handler, +) from zerver.models import UserProfile from zerver.models.bots import get_bot_services from zerver.models.users import get_user_profile_by_id @@ -53,3 +58,4 @@ class EmbeddedBotWorker(QueueProcessingWorker): ) except EmbeddedBotQuitError as e: logging.warning("%s", e) + do_flag_service_bots_messages_as_processed(user_profile, [message["id"]])