Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions bridge/discord/handlers.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package bdiscord

import (
"time"

"github.com/42wim/matterbridge/bridge/config"
"github.com/bwmarrin/discordgo"
"github.com/davecgh/go-spew/spew"
Expand Down Expand Up @@ -63,6 +65,13 @@ func (b *Bdiscord) messageTyping(s *discordgo.Session, m *discordgo.TypingStart)
b.Remote <- rmsg
}

// Discord sends spurious updates for messages that haven't been edited, or
// haven't been edited recently. Messages from as far back as 5 years ago have
// been observed to be updated, always with a URL or embedded content.
//
// These need to be ignored because it's confusing when out of date messages
// are bridged as new messages with no context to protocols that don't support
// edits. Edited messages normally arrive as updates immediately.
func (b *Bdiscord) messageUpdate(s *discordgo.Session, m *discordgo.MessageUpdate) { //nolint:unparam
if m.GuildID != b.guildID {
b.Log.Debugf("Ignoring messageUpdate because it originates from a different guild")
Expand All @@ -73,6 +82,12 @@ func (b *Bdiscord) messageUpdate(s *discordgo.Session, m *discordgo.MessageUpdat
}
// only when message is actually edited
if m.Message.EditedTimestamp != nil {
// message must have been edited recently
delay := time.Now().Sub(*m.Message.EditedTimestamp)
if delay >= time.Duration(6) * time.Hour {
return
}

b.Log.Debugf("Sending edit message")
m.Content += b.GetString("EditSuffix")
msg := &discordgo.MessageCreate{
Expand Down