diff --git a/portal.go b/portal.go index 58be0cf..7a2a85b 100644 --- a/portal.go +++ b/portal.go @@ -1968,11 +1968,24 @@ func (portal *Portal) UpdateInfo(source *User, meta *discordgo.Channel) *discord return meta } -func (portal *Portal) ForwardBackfill(source *User) error { +func (portal *Portal) ForwardBackfill(source *User, meta *discordgo.Channel) error { portal.log.Debugln("Checking for missing messages to fill") lastMessage := portal.bridge.DB.Message.GetLast(portal.Key) if lastMessage == nil { - portal.log.Debugln("No last message in portal, can't forward backfill") + return nil + } + + metaLastMessageID, err := strconv.ParseInt(meta.LastMessageID, 10, 0) + if err != nil { + portal.log.Errorfln("Last message ID %s isn't integer", meta.LastMessageID) + return err + } + dbLastMessageID, err := strconv.ParseInt(lastMessage.DiscordID, 10, 0) + if err != nil { + portal.log.Errorfln("Last message ID %s isn't integer", lastMessage.DiscordID) + return err + } + if metaLastMessageID <= dbLastMessageID { return nil } @@ -1995,14 +2008,11 @@ func (portal *Portal) ForwardBackfill(source *User) error { if len(messages) < 100 { // Assume that was all the missing messages - break + return nil } lastMessage = portal.bridge.DB.Message.GetLast(portal.Key) if lastMessage == nil { - portal.log.Debugln("No last message in portal, can't forward backfill") return nil } } - - return nil } diff --git a/user.go b/user.go index a1863a7..09fd639 100644 --- a/user.go +++ b/user.go @@ -728,7 +728,7 @@ func (user *User) handlePrivateChannel(portal *Portal, meta *discordgo.Channel, } } else { portal.UpdateInfo(user, meta) - portal.ForwardBackfill(user) + portal.ForwardBackfill(user, meta) } user.MarkInPortal(database.UserPortal{ DiscordID: portal.Key.ChannelID, @@ -843,7 +843,7 @@ func (user *User) handleGuild(meta *discordgo.Guild, timestamp time.Time, isInSp } } else { portal.UpdateInfo(user, ch) - portal.ForwardBackfill(user) + portal.ForwardBackfill(user, ch) } } }