Thumbnail

rani/matterbridge.git

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

commit bc129f5b6c24a1fe59d382e126d6609e1cec64e5 Author: Wim <wim@42.be> Date: Sun Nov 20 22:40:09 2016 +0000 Replace id-mentions to usernames (slack). Closes #86 diff --git a/bridge/slack/slack.go b/bridge/slack/slack.go index 159204d..db8885c 100644 --- a/bridge/slack/slack.go +++ b/bridge/slack/slack.go @@ -66 +67 @@ import (   "github.com/42wim/matterbridge/matterhook"   log "github.com/Sirupsen/logrus"   "github.com/nlopes/slack" + "regexp"   "strings"   "time"  ) @@ -19111 +19214 @@ func (b *Bslack) handleSlackClient(mchan chan *MMMessage) {   m.Channel = channel.Name   m.Text = ev.Text   m.Raw = ev + m.Text = b.replaceMention(m.Text)   mchan <- m   }   count++   case *slack.OutgoingErrorEvent:   flog.Debugf("%#v", ev.Error()) + case *slack.ChannelJoinedEvent: + b.Users, _ = b.sc.GetUsers()   case *slack.ConnectedEvent:   b.channels = ev.Info.Channels   b.si = ev.Info @@ -2147 +21826 @@ func (b *Bslack) handleMatterHook(mchan chan *MMMessage) {   m := &MMMessage{}   m.Username = message.UserName   m.Text = message.Text + m.Text = b.replaceMention(m.Text)   m.Channel = message.ChannelName   mchan <- m   }  } + +func (b *Bslack) userName(id string) string { + for _, u := range b.Users { + if u.ID == id { + return u.Name + } + } + return "" +} + +func (b *Bslack) replaceMention(text string) string { + results := regexp.MustCompile(`<@([a-zA-z0-9]+)>`).FindAllStringSubmatch(text, -1) + for _, r := range results { + text = strings.Replace(text, "<@"+r[1]+">", "@"+b.userName(r[1]), -1) + + } + return text +}