Thumbnail

rani/matterbridge.git

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

commit b0bf7e1f91708550839ef36a7a56e4d56c298f67 Author: Wim <wim@42.be> Date: Wed Feb 28 22:54:47 2018 +0000 Add usergroup support (slack). Closes #379 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  }