Thumbnail

rani/matterbridge.git

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

commit db1c1b6a30241df9edb199b1cd21011452d11f22 Author: Wim <wim@42.be> Date: Sun Jun 18 15:44:54 2017 +0000 Add UserID to each message. Closes #200 diff --git a/bridge/api/api.go b/bridge/api/api.go index eb27b2c..26ff332 100644 --- a/bridge/api/api.go +++ b/bridge/api/api.go @@ -216 +217 @@ type Api struct {  type ApiMessage struct {   Text string `json:"text"`   Username string `json:"username"` + UserID string `json:"userid"`   Avatar string `json:"avatar"`   Gateway string `json:"gateway"`  } @@ -816 +827 @@ func (b *Api) handlePostMessage(c echo.Context) error {   b.Remote <- config.Message{   Text: message.Text,   Username: message.Username, + UserID: message.UserID,   Channel: "api",   Avatar: message.Avatar,   Account: b.Account, diff --git a/bridge/config/config.go b/bridge/config/config.go index f79c40d..79715b5 100644 --- a/bridge/config/config.go +++ b/bridge/config/config.go @@ -196 +197 @@ type Message struct {   Text string `json:"text"`   Channel string `json:"channel"`   Username string `json:"username"` + UserID string `json:"userid"` // userid on the bridge   Avatar string `json:"avatar"`   Account string `json:"account"`   Event string `json:"event"` diff --git a/bridge/discord/discord.go b/bridge/discord/discord.go index 66e2725..3d24496 100644 --- a/bridge/discord/discord.go +++ b/bridge/discord/discord.go @@ -1427 +1428 @@ func (b *bdiscord) messageCreate(s *discordgo.Session, m *discordgo.MessageCreat   m.Message.Content = b.stripCustomoji(m.Message.Content)   m.Message.Content = b.replaceChannelMentions(m.Message.Content)   b.Remote <- config.Message{Username: username, Text: m.ContentWithMentionsReplaced(), Channel: channelName, - Account: b.Account, Avatar: "https://cdn.discordapp.com/avatars/" + m.Author.ID + "/" + m.Author.Avatar + ".jpg"} + Account: b.Account, Avatar: "https://cdn.discordapp.com/avatars/" + m.Author.ID + "/" + m.Author.Avatar + ".jpg", + UserID: m.Author.ID}  }    func (b *bdiscord) memberUpdate(s *discordgo.Session, m *discordgo.GuildMemberUpdate) { diff --git a/bridge/gitter/gitter.go b/bridge/gitter/gitter.go index af71d89..973a730 100644 --- a/bridge/gitter/gitter.go +++ b/bridge/gitter/gitter.go @@ -827 +827 @@ func (b *Bgitter) JoinChannel(channel string) error {   if !strings.HasSuffix(ev.Message.Text, "​") {   flog.Debugf("Sending message from %s on %s to gateway", ev.Message.From.Username, b.Account)   b.Remote <- config.Message{Username: ev.Message.From.Username, Text: ev.Message.Text, Channel: room, - Account: b.Account, Avatar: b.getAvatar(ev.Message.From.Username)} + Account: b.Account, Avatar: b.getAvatar(ev.Message.From.Username), UserID: ev.Message.From.ID}   }   case *gitter.GitterConnectionClosed:   flog.Errorf("connection with gitter closed for room %s", room) diff --git a/bridge/irc/irc.go b/bridge/irc/irc.go index feb88a5..6d85e7b 100644 --- a/bridge/irc/irc.go +++ b/bridge/irc/irc.go @@ -2527 +2527 @@ func (b *Birc) handlePrivMsg(event *irc.Event) {   re := regexp.MustCompile(`[[:cntrl:]](\d+,|)\d+`)   msg = re.ReplaceAllString(msg, "")   flog.Debugf("Sending message from %s on %s to gateway", event.Arguments[0], b.Account) - b.Remote <- config.Message{Username: event.Nick, Text: msg, Channel: event.Arguments[0], Account: b.Account} + b.Remote <- config.Message{Username: event.Nick, Text: msg, Channel: event.Arguments[0], Account: b.Account, UserID: event.User + "@" + event.Host}  }    func (b *Birc) handleTopicWhoTime(event *irc.Event) { diff --git a/bridge/matrix/matrix.go b/bridge/matrix/matrix.go index 628e8d9..2fd91b3 100644 --- a/bridge/matrix/matrix.go +++ b/bridge/matrix/matrix.go @@ -1097 +1097 @@ func (b *Bmatrix) handlematrix() error {   username = re.ReplaceAllString(username, `$1`)   }   flog.Debugf("Sending message from %s on %s to gateway", ev.Sender, b.Account) - b.Remote <- config.Message{Username: username, Text: ev.Content["body"].(string), Channel: channel, Account: b.Account} + b.Remote <- config.Message{Username: username, Text: ev.Content["body"].(string), Channel: channel, Account: b.Account, UserID: ev.Sender}   }   flog.Debugf("Received: %#v", ev)   }) diff --git a/bridge/mattermost/mattermost.go b/bridge/mattermost/mattermost.go index 3db880b..e88bf83 100644 --- a/bridge/mattermost/mattermost.go +++ b/bridge/mattermost/mattermost.go @@ -216 +217 @@ type MMMessage struct {   Text string   Channel string   Username string + UserID string  }    type Bmattermost struct { @@ -1277 +1287 @@ func (b *Bmattermost) handleMatter() {   }   for message := range mchan {   flog.Debugf("Sending message from %s on %s to gateway", message.Username, b.Account) - b.Remote <- config.Message{Text: message.Text, Username: message.Username, Channel: message.Channel, Account: b.Account} + b.Remote <- config.Message{Text: message.Text, Username: message.Username, Channel: message.Channel, Account: b.Account, UserID: message.UserID}   }  }   @@ -1506 +1517 @@ func (b *Bmattermost) handleMatterClient(mchan chan *MMMessage) {   b.mc.User.Username != message.Username && message.Raw.Data["team_id"].(string) == b.TeamId {   flog.Debugf("Receiving from matterclient %#v", message)   m := &MMMessage{} + m.UserID = message.UserID   m.Username = message.Username   m.Channel = message.Channel   m.Text = message.Text @@ -1716 +1737 @@ func (b *Bmattermost) handleMatterHook(mchan chan *MMMessage) {   message := b.mh.Receive()   flog.Debugf("Receiving from matterhook %#v", message)   m := &MMMessage{} + m.UserID = message.UserID   m.Username = message.UserName   m.Text = message.Text   m.Channel = message.ChannelName diff --git a/bridge/rocketchat/rocketchat.go b/bridge/rocketchat/rocketchat.go index 4590a89..15cac55 100644 --- a/bridge/rocketchat/rocketchat.go +++ b/bridge/rocketchat/rocketchat.go @@ -826 +826 @@ func (b *Brocketchat) handleRocketHook() {   continue   }   flog.Debugf("Sending message from %s on %s to gateway", message.UserName, b.Account) - b.Remote <- config.Message{Text: message.Text, Username: message.UserName, Channel: message.ChannelName, Account: b.Account} + b.Remote <- config.Message{Text: message.Text, Username: message.UserName, Channel: message.ChannelName, Account: b.Account, UserID: message.UserID}   }  } diff --git a/bridge/slack/slack.go b/bridge/slack/slack.go index eb08500..fd4b9e1 100644 --- a/bridge/slack/slack.go +++ b/bridge/slack/slack.go @@ -156 +157 @@ type MMMessage struct {   Text string   Channel string   Username string + UserID string   Raw *slack.MessageEvent  }   @@ -1857 +1867 @@ func (b *Bslack) handleSlack() {   texts := strings.Split(message.Text, "\n")   for _, text := range texts {   flog.Debugf("Sending message from %s on %s to gateway", message.Username, b.Account) - b.Remote <- config.Message{Text: text, Username: message.Username, Channel: message.Channel, Account: b.Account, Avatar: b.getAvatar(message.Username)} + b.Remote <- config.Message{Text: text, Username: message.Username, Channel: message.Channel, Account: b.Account, Avatar: b.getAvatar(message.Username), UserID: message.UserID}   }   }  } @@ -2136 +2147 @@ func (b *Bslack) handleSlackClient(mchan chan *MMMessage) {   continue   }   m := &MMMessage{} + m.UserID = user.ID   m.Username = user.Name   m.Channel = channel.Name   m.Text = ev.Text diff --git a/bridge/telegram/telegram.go b/bridge/telegram/telegram.go index d6b7597..9f7af28 100644 --- a/bridge/telegram/telegram.go +++ b/bridge/telegram/telegram.go @@ -1327 +1327 @@ func (b *Btelegram) handleRecv(updates <-chan tgbotapi.Update) {   }   if text != "" {   flog.Debugf("Sending message from %s on %s to gateway", username, b.Account) - b.Remote <- config.Message{Username: username, Text: text, Channel: channel, Account: b.Account} + b.Remote <- config.Message{Username: username, Text: text, Channel: channel, Account: b.Account, UserID: strconv.Itoa(message.From.ID)}   }   }  } diff --git a/bridge/xmpp/xmpp.go b/bridge/xmpp/xmpp.go index 3756f5b..0bd664d 100644 --- a/bridge/xmpp/xmpp.go +++ b/bridge/xmpp/xmpp.go @@ -1287 +1287 @@ func (b *Bxmpp) handleXmpp() error {   }   if nick != b.Config.Nick && v.Stamp == nodelay && v.Text != "" {   flog.Debugf("Sending message from %s on %s to gateway", nick, b.Account) - b.Remote <- config.Message{Username: nick, Text: v.Text, Channel: channel, Account: b.Account} + b.Remote <- config.Message{Username: nick, Text: v.Text, Channel: channel, Account: b.Account, UserID: v.Remote}   }   }   case xmpp.Presence: diff --git a/gateway/gateway.go b/gateway/gateway.go index d2c6c22..7d53069 100644 --- a/gateway/gateway.go +++ b/gateway/gateway.go @@ -1989 +1986 @@ func (gw *Gateway) handleMessage(msg config.Message, dest *bridge.Bridge) {   log.Debug("empty channel")   return   } - // hide message from bridge - //if msg.Text HideMessagesPrefix -   originchannel := msg.Channel   origmsg := msg   for _, channel := range gw.DestChannelFunc(&msg, *dest) { diff --git a/matterclient/matterclient.go b/matterclient/matterclient.go index 927518e..de2aa94 100644 --- a/matterclient/matterclient.go +++ b/matterclient/matterclient.go @@ -376 +377 @@ type Message struct {   Username string   Text string   Type string + UserID string  }    type Team struct { @@ -2906 +2917 @@ func (m *MMClient) parseActionPost(rmsg *Message) {   }   rmsg.Username = m.GetUserName(data.UserId)   rmsg.Channel = m.GetChannelName(data.ChannelId) + rmsg.UserID = data.UserId   rmsg.Type = data.Type   teamid, _ := rmsg.Raw.Data["team_id"].(string)   // edit messsages have no team_id for some reason