Thumbnail

rani/matterbridge.git

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

commit f118f883b5bb34383d3625df02bfd6b451be1c22 Author: Wim <wim@42.be> Date: Sat Apr 15 20:21:57 2017 +0000 Add support for edited messages (mattermost) diff --git a/bridge/mattermost/mattermost.go b/bridge/mattermost/mattermost.go index b9d082e..31c8b60 100644 --- a/bridge/mattermost/mattermost.go +++ b/bridge/mattermost/mattermost.go @@ -14312 +14316 @@ func (b *Bmattermost) handleMatterClient(mchan chan *MMMessage) {   }   // do not post our own messages back to irc   // only listen to message from our team - if message.Raw.Event == "posted" && b.mc.User.Username != message.Username && message.Raw.Data["team_id"].(string) == b.TeamId { + if (message.Raw.Event == "posted" || message.Raw.Event == "post_edited") && + b.mc.User.Username != message.Username && message.Raw.Data["team_id"].(string) == b.TeamId {   flog.Debugf("Receiving from matterclient %#v", message)   m := &MMMessage{}   m.Username = message.Username   m.Channel = message.Channel   m.Text = message.Text + if message.Raw.Event == "post_edited" && !b.Config.EditDisable { + m.Text = message.Text + b.Config.EditSuffix + }   if len(message.Post.FileIds) > 0 {   for _, link := range b.mc.GetPublicLinks(message.Post.FileIds) {   m.Text = m.Text + "\n" + link diff --git a/matterbridge.toml.sample b/matterbridge.toml.sample index 69c1816..33a01fc 100644 --- a/matterbridge.toml.sample +++ b/matterbridge.toml.sample @@ -2416 +24114 @@ NicksPerRow=4  #OPTIONAL (default false)  PrefixMessagesWithNick=false   +#Disable sending of edits to other bridges +#OPTIONAL (default false) +EditDisable=false + +#Message to be appended to every edited message +#OPTIONAL (default empty) +EditSuffix=" (edited)" +  #Nicks you want to ignore.  #Messages from those users will not be sent to other bridges.  #OPTIONAL diff --git a/matterclient/matterclient.go b/matterclient/matterclient.go index a066d65..d234fb3 100644 --- a/matterclient/matterclient.go +++ b/matterclient/matterclient.go @@ -2517 +2517 @@ func (m *MMClient) WsReceiver() {    func (m *MMClient) parseMessage(rmsg *Message) {   switch rmsg.Raw.Event { - case model.WEBSOCKET_EVENT_POSTED: + case model.WEBSOCKET_EVENT_POSTED, model.WEBSOCKET_EVENT_POST_EDITED:   m.parseActionPost(rmsg)   /*   case model.ACTION_USER_REMOVED: @@ -2807 +28017 @@ func (m *MMClient) parseActionPost(rmsg *Message) {   rmsg.Username = m.GetUser(data.UserId).Username   rmsg.Channel = m.GetChannelName(data.ChannelId)   rmsg.Type = data.Type - rmsg.Team = m.GetTeamName(rmsg.Raw.Data["team_id"].(string)) + teamid, _ := rmsg.Raw.Data["team_id"].(string) + // edit messsages have no team_id for some reason + if teamid == "" { + // we can find the team_id from the channelid + result, _ := m.Client.GetChannel(data.ChannelId, "") + teamid = result.Data.(*model.ChannelData).Channel.TeamId + rmsg.Raw.Data["team_id"] = teamid + } + if teamid != "" { + rmsg.Team = m.GetTeamName(teamid) + }   // direct message   if rmsg.Raw.Data["channel_type"] == "D" {   rmsg.Channel = m.GetUser(data.UserId).Username