From 0116bbd06ee1e456433fdb13dd1f6effaf195aba Mon Sep 17 00:00:00 2001 From: Willian Meireles <91761339+wmeireles@users.noreply.github.com> Date: Mon, 22 Sep 2025 12:09:49 -0300 Subject: [PATCH] fix: detect sensitive data in edited messages - Add message_changed event listener to handle edited messages - Check for sensitive data patterns when messages are edited - Send warning notifications for edited messages with PII Fixes #20 --- src/listeners/messages/message_changed.py | 29 +++++++++++++++++++++++ src/listeners/register.py | 2 ++ 2 files changed, 31 insertions(+) create mode 100644 src/listeners/messages/message_changed.py diff --git a/src/listeners/messages/message_changed.py b/src/listeners/messages/message_changed.py new file mode 100644 index 0000000..01dcf18 --- /dev/null +++ b/src/listeners/messages/message_changed.py @@ -0,0 +1,29 @@ +from logging import getLogger + +from slack_bolt import App + +from src.config.language import language +from src.rules.pattern import pattern + +logger = getLogger(__name__) + + +async def register(app: App): + app.event("message")(message_changed_callback) + + +async def message_changed_callback(event, say): + try: + # Check if this is a message_changed event with edited text + if event.get("subtype") == "message_changed" and "message" in event: + edited_message = event["message"] + text = edited_message.get("text", "") + + # Check if the edited message contains sensitive data + if pattern.find_all(text) > 0: + user = edited_message.get("user") + if user: + warning_text = f'{language.translate("Hello")} <@{user}>, {language.translate("Do not send sensitive info")}' + await say(text=warning_text, thread_ts=edited_message.get("ts")) + except Exception as e: + logger.error(e) \ No newline at end of file diff --git a/src/listeners/register.py b/src/listeners/register.py index 45d19f4..ac29561 100644 --- a/src/listeners/register.py +++ b/src/listeners/register.py @@ -1,5 +1,7 @@ from src.listeners.messages.regex_message import register as register_regex_message +from src.listeners.messages.message_changed import register as register_message_changed async def register_listeners(app): await register_regex_message(app) + await register_message_changed(app)