commit bc129f5b6c24a1fe59d382e126d6609e1cec64e5
Author: Wim <wim@42.be>
Date: Sun Nov 20 22:40:09 2016 +0000
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
+}