diff --git a/bridge/slack/helpers.go b/bridge/slack/helpers.go index 68f6d799..952d0890 100644 --- a/bridge/slack/helpers.go +++ b/bridge/slack/helpers.go @@ -266,15 +266,12 @@ var ( channelRE = regexp.MustCompile(`<#[a-zA-Z0-9]+\|(.+?)>`) variableRE = regexp.MustCompile(``) urlRE = regexp.MustCompile(`<(.*?)(\|.*?)?>`) - topicOrPurposeRE = regexp.MustCompile(`(?s)^@.+ set the channel (topic|purpose): (.+?)(\[nosync\])?$`) + topicOrPurposeRE = regexp.MustCompile(`(?s)^@.+ set the channel (topic|purpose): (.+?)$`) ) func (b *Bslack) extractTopicOrPurpose(text string) (updateType string, extracted string) { r := topicOrPurposeRE.FindStringSubmatch(text) - updateType, extracted, noSync := r[1], r[2], r[3] - if noSync != "" { - return "nosync", "" - } + updateType, extracted = r[1], r[2] return updateType, extracted } diff --git a/bridge/slack/slack.go b/bridge/slack/slack.go index ee8d76fa..bc40756f 100644 --- a/bridge/slack/slack.go +++ b/bridge/slack/slack.go @@ -293,8 +293,6 @@ func (b *Bslack) sendRTM(msg config.Message) (string, error) { break } b.rtm.SetPurposeOfConversation(channelInfo.ID, text) - case "nosync": - break } return "", nil } diff --git a/gateway/gateway.go b/gateway/gateway.go index 72a0f6a6..3f279dfa 100644 --- a/gateway/gateway.go +++ b/gateway/gateway.go @@ -269,9 +269,17 @@ func (gw *Gateway) handleMessage(msg config.Message, dest *bridge.Bridge) []*BrM // only relay topic change when configured if msg.Event == config.EventTopicChange && !gw.Bridges[dest.Account].GetBool("ShowTopicChange") { - return brMsgIDs + // don't relay topic/purpose change if disabled + if !gw.Bridges[dest.Account].GetBool("ShowTopicChange") { + return brMsgIDs + } + // don't relay topic/purpose update if sync is enabled, but msg marked as nosync + if gw.Bridges[dest.Account].GetBool("SyncTopicChange") && strings.HasSuffix(msg.Text, "[nosync]") { + return brMsgIDs + } } + // broadcast to every out channel (irc QUIT) if msg.Channel == "" && msg.Event != config.EventJoinLeave { flog.Debug("empty channel")