commit b0bf7e1f91708550839ef36a7a56e4d56c298f67
Author: Wim <wim@42.be>
Date: Wed Feb 28 22:54:47 2018 +0000
diff --git a/bridge/slack/slack.go b/bridge/slack/slack.go
index 009a33a..e89954e 100644
--- a/bridge/slack/slack.go
+++ b/bridge/slack/slack.go
@@ -1612 +1613 @@ import (
)
type Bslack struct {
- mh *matterhook.Client
- sc *slack.Client
- rtm *slack.RTM
- Users []slack.User
- si *slack.Info
- channels []slack.Channel
+ mh *matterhook.Client
+ sc *slack.Client
+ rtm *slack.RTM
+ Users []slack.User
+ Usergroups []slack.UserGroup
+ si *slack.Info
+ channels []slack.Channel
*config.BridgeConfig
}
@@ -28310 +28412 @@ func (b *Bslack) handleSlackClient(messages chan *config.Message) {
b.Log.Debugf("%#v", ev.Error())
case *slack.ChannelJoinedEvent:
b.Users, _ = b.sc.GetUsers()
+ b.Usergroups, _ = b.sc.GetUserGroups()
case *slack.ConnectedEvent:
b.channels = ev.Info.Channels
b.si = ev.Info
b.Users, _ = b.sc.GetUsers()
+ b.Usergroups, _ = b.sc.GetUserGroups()
// add private channels
groups, _ := b.sc.GetGroups(true)
for _, g := range groups {
@@ -32712 +33024 @@ func (b *Bslack) userName(id string) string {
return ""
}
+func (b *Bslack) userGroupName(id string) string {
+ for _, u := range b.Usergroups {
+ if u.ID == id {
+ return u.Name
+ }
+ }
+ return ""
+}
+
// @see https://api.slack.com/docs/message-formatting#linking_to_channels_and_users
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)
}
+ for _, r := range results {
+ text = strings.Replace(text, "<@"+r[1]+">", "@"+b.userGroupName(r[1]), -1)
+ }
return text
}