Skip to content

Commit

Permalink
slack bridge: Add logic to prevent looping messages.
Browse files Browse the repository at this point in the history
When using Slack Webhook integration to get messages from Slack to
Zulip, we don't want to send back messages from the Slack integration
bot.

This prevents that by filtering out any messages from the Slack Webhook
bots when sending messages from Zulip to Slack..

Fixes #825.
  • Loading branch information
PieterCK authored and timabbott committed Dec 16, 2024
1 parent 864f2e2 commit ddc1dcc
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion zulip/integrations/bridge_with_slack/run-slack-bridge
Original file line number Diff line number Diff line change
Expand Up @@ -84,12 +84,18 @@ class SlackBridge:
if w.startswith("@"):
zulip_msg["content"] = zulip_msg["content"].replace(w, "<" + w + ">")

def is_message_from_slack(self, msg: Dict[str, Any]) -> bool:
# Check whether or not this message is from Slack to prevent
# them from being tossed back to Zulip.
return msg["sender_email"] == self.zulip_config.get("email")

def zulip_to_slack(self) -> Callable[[Dict[str, Any]], None]:
def _zulip_to_slack(msg: Dict[str, Any]) -> None:
slack_channel = get_slack_channel_for_zulip_message(
msg, self.zulip_to_slack_map, self.zulip_config["email"]
)
if slack_channel is not None:

if slack_channel is not None and not self.is_message_from_slack(msg):
self.wrap_slack_mention_with_bracket(msg)
slack_text = SLACK_MESSAGE_TEMPLATE.format(
username=msg["sender_full_name"], message=msg["content"]
Expand Down

0 comments on commit ddc1dcc

Please sign in to comment.