Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit e024d2df8196cbb58794c3cabda1e3dded6a55e1 Author: Duco van Amstel <duco.vanamstel@gmail.com> Date: Thu Nov 08 19:07:21 2018 +0000 Fix Slack edit usernames (#570) diff --git a/bridge/slack/handlers.go b/bridge/slack/handlers.go index 9bcafde..4307e7b 100644 --- a/bridge/slack/handlers.go +++ b/bridge/slack/handlers.go @@ -15016 +1506 @@ func (b *Bslack) handleMessageEvent(ev *slack.MessageEvent) (*config.Message, er   return rmsg, nil   }   - // Handle 'edit' messages. - if ev.SubMessage != nil && !b.GetBool(editDisableConfig) { - rmsg.ID = "slack " + ev.SubMessage.Timestamp - if ev.SubMessage.ThreadTimestamp != ev.SubMessage.Timestamp { - b.Log.Debugf("SubMessage %#v", ev.SubMessage) - rmsg.Username = ev.SubMessage.User - rmsg.Text = ev.SubMessage.Text + b.GetString(editSuffixConfig) - } - } -   b.handleAttachments(ev, rmsg)     // Verify that we have the right information and the message diff --git a/bridge/slack/helpers.go b/bridge/slack/helpers.go index e46a71a..19ac5d0 100644 --- a/bridge/slack/helpers.go +++ b/bridge/slack/helpers.go @@ -1676 +16715 @@ func (b *Bslack) populateReceivedMessage(ev *slack.MessageEvent) (*config.Messag   rmsg.Channel = "ID:" + channel.ID   }   + // Handle 'edit' messages. + if ev.SubMessage != nil && !b.GetBool(editDisableConfig) { + rmsg.ID = "slack " + ev.SubMessage.Timestamp + if ev.SubMessage.ThreadTimestamp != ev.SubMessage.Timestamp { + b.Log.Debugf("SubMessage %#v", ev.SubMessage) + rmsg.Text = ev.SubMessage.Text + b.GetString(editSuffixConfig) + } + } +   if err = b.populateMessageWithUserInfo(ev, rmsg); err != nil {   return nil, err   } @@ -1786 +1878 @@ func (b *Bslack) populateMessageWithUserInfo(ev *slack.MessageEvent, rmsg *confi   return nil   }   + // First, deal with bot-originating messages but only do so when not using webhooks: we + // would not be able to distinguish which bot would be sending them.   if ev.BotID != "" && b.GetString(outgoingWebhookConfig) == "" {   bot, err := b.rtm.GetBotInfo(ev.BotID)   if err != nil { @@ -19216 +20325 @@ func (b *Bslack) populateMessageWithUserInfo(ev *slack.MessageEvent, rmsg *confi   }   }   + // Second, deal with "real" users if we have the necessary information. + var userID string   if ev.User != "" { - user := b.getUser(ev.User) - if user == nil { - return fmt.Errorf("could not find information for user with id %s", ev.User) - } - rmsg.UserID = user.ID - rmsg.Username = user.Name - if user.Profile.DisplayName != "" { - rmsg.Username = user.Profile.DisplayName - } + userID = ev.User + } else if ev.SubMessage != nil && ev.SubMessage.User != "" { + userID = ev.SubMessage.User + } else { + return nil + } + + user := b.getUser(userID) + if user == nil { + return fmt.Errorf("could not find information for user with id %s", ev.User) + } + + rmsg.UserID = user.ID + rmsg.Username = user.Name + if user.Profile.DisplayName != "" { + rmsg.Username = user.Profile.DisplayName   }   return nil  }