Add support for edited messages (mattermost)
This commit is contained in:
parent
7469732bbc
commit
fdb57230a3
|
@ -143,12 +143,16 @@ func (b *Bmattermost) handleMatterClient(mchan chan *MMMessage) {
|
||||||
}
|
}
|
||||||
// do not post our own messages back to irc
|
// do not post our own messages back to irc
|
||||||
// only listen to message from our team
|
// 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)
|
flog.Debugf("Receiving from matterclient %#v", message)
|
||||||
m := &MMMessage{}
|
m := &MMMessage{}
|
||||||
m.Username = message.Username
|
m.Username = message.Username
|
||||||
m.Channel = message.Channel
|
m.Channel = message.Channel
|
||||||
m.Text = message.Text
|
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 {
|
if len(message.Post.FileIds) > 0 {
|
||||||
for _, link := range b.mc.GetPublicLinks(message.Post.FileIds) {
|
for _, link := range b.mc.GetPublicLinks(message.Post.FileIds) {
|
||||||
m.Text = m.Text + "\n" + link
|
m.Text = m.Text + "\n" + link
|
||||||
|
|
|
@ -241,6 +241,14 @@ NicksPerRow=4
|
||||||
#OPTIONAL (default false)
|
#OPTIONAL (default false)
|
||||||
PrefixMessagesWithNick=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.
|
#Nicks you want to ignore.
|
||||||
#Messages from those users will not be sent to other bridges.
|
#Messages from those users will not be sent to other bridges.
|
||||||
#OPTIONAL
|
#OPTIONAL
|
||||||
|
|
|
@ -251,7 +251,7 @@ func (m *MMClient) WsReceiver() {
|
||||||
|
|
||||||
func (m *MMClient) parseMessage(rmsg *Message) {
|
func (m *MMClient) parseMessage(rmsg *Message) {
|
||||||
switch rmsg.Raw.Event {
|
switch rmsg.Raw.Event {
|
||||||
case model.WEBSOCKET_EVENT_POSTED:
|
case model.WEBSOCKET_EVENT_POSTED, model.WEBSOCKET_EVENT_POST_EDITED:
|
||||||
m.parseActionPost(rmsg)
|
m.parseActionPost(rmsg)
|
||||||
/*
|
/*
|
||||||
case model.ACTION_USER_REMOVED:
|
case model.ACTION_USER_REMOVED:
|
||||||
|
@ -280,7 +280,17 @@ func (m *MMClient) parseActionPost(rmsg *Message) {
|
||||||
rmsg.Username = m.GetUser(data.UserId).Username
|
rmsg.Username = m.GetUser(data.UserId).Username
|
||||||
rmsg.Channel = m.GetChannelName(data.ChannelId)
|
rmsg.Channel = m.GetChannelName(data.ChannelId)
|
||||||
rmsg.Type = data.Type
|
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
|
// direct message
|
||||||
if rmsg.Raw.Data["channel_type"] == "D" {
|
if rmsg.Raw.Data["channel_type"] == "D" {
|
||||||
rmsg.Channel = m.GetUser(data.UserId).Username
|
rmsg.Channel = m.GetUser(data.UserId).Username
|
||||||
|
|
Loading…
Reference in New Issue