diff --git a/bridge/mattermost/mattermost.go b/bridge/mattermost/mattermost.go index 42843d00..51d32424 100644 --- a/bridge/mattermost/mattermost.go +++ b/bridge/mattermost/mattermost.go @@ -8,12 +8,14 @@ import ( "github.com/42wim/matterbridge/bridge/helper" "github.com/42wim/matterbridge/matterclient" "github.com/42wim/matterbridge/matterhook" + "github.com/rs/xid" "strings" ) type Bmattermost struct { mh *matterhook.Client mc *matterclient.MMClient + uuid string TeamID string *bridge.Config avatarMap map[string]string @@ -21,6 +23,7 @@ type Bmattermost struct { func New(cfg *bridge.Config) bridge.Bridger { b := &Bmattermost{Config: cfg, avatarMap: make(map[string]string)} + b.uuid = xid.New().String() return b } @@ -366,7 +369,7 @@ func (b *Bmattermost) sendWebhook(msg config.Message) (string, error) { // this sends a message only if we received a config.EVENT_FILE_FAILURE_SIZE for _, rmsg := range helper.HandleExtra(&msg, b.General) { matterMessage := matterhook.OMessage{IconURL: b.GetString("IconURL"), Channel: rmsg.Channel, UserName: rmsg.Username, Text: rmsg.Text, Props: make(map[string]interface{})} - matterMessage.Props["matterbridge_"+b.mc.User.Id] = true + matterMessage.Props["matterbridge_"+b.uuid] = true b.mh.Send(matterMessage) } @@ -385,7 +388,7 @@ func (b *Bmattermost) sendWebhook(msg config.Message) (string, error) { if msg.Avatar != "" { matterMessage.IconURL = msg.Avatar } - matterMessage.Props["matterbridge_"+b.mc.User.Id] = true + matterMessage.Props["matterbridge_"+b.uuid] = true err := b.mh.Send(matterMessage) if err != nil { b.Log.Info(err) @@ -415,7 +418,7 @@ func (b *Bmattermost) skipMessage(message *matterclient.Message) bool { // Ignore messages sent from matterbridge if message.Post.Props != nil { - if _, ok := message.Post.Props["matterbridge_"+b.mc.User.Id].(bool); ok { + if _, ok := message.Post.Props["matterbridge_"+b.uuid].(bool); ok { b.Log.Debugf("sent by matterbridge, ignoring") return true } diff --git a/bridge/slack/slack.go b/bridge/slack/slack.go index cedb18e7..1633d820 100644 --- a/bridge/slack/slack.go +++ b/bridge/slack/slack.go @@ -15,6 +15,7 @@ import ( "github.com/42wim/matterbridge/bridge/helper" "github.com/42wim/matterbridge/matterhook" "github.com/nlopes/slack" + "github.com/rs/xid" ) type Bslack struct { @@ -25,6 +26,7 @@ type Bslack struct { Usergroups []slack.UserGroup si *slack.Info channels []slack.Channel + uuid string *bridge.Config sync.RWMutex } @@ -32,7 +34,7 @@ type Bslack struct { const messageDeleted = "message_deleted" func New(cfg *bridge.Config) bridge.Bridger { - return &Bslack{Config: cfg} + return &Bslack{Config: cfg, uuid: xid.New().String()} } func (b *Bslack) Command(cmd string) string { @@ -177,7 +179,7 @@ func (b *Bslack) Send(msg config.Message) (string, error) { np.IconURL = msg.Avatar } // add a callback ID so we can see we created it - np.Attachments = append(np.Attachments, slack.Attachment{CallbackID: "matterbridge_" + b.si.User.ID}) + np.Attachments = append(np.Attachments, slack.Attachment{CallbackID: "matterbridge_" + b.uuid}) // add file attachments np.Attachments = append(np.Attachments, b.createAttach(msg.Extra)...) // add slack attachments (from another slack bridge) @@ -657,7 +659,7 @@ func (b *Bslack) skipMessageEvent(ev *slack.MessageEvent) bool { // skip messages we made ourselves if len(ev.Attachments) > 0 { - if ev.Attachments[0].CallbackID == "matterbridge_"+b.si.User.ID { + if ev.Attachments[0].CallbackID == "matterbridge_"+b.uuid { return true } }