Skip to content

Commit

Permalink
Add potential fix for Discord API returning empty pages
Browse files Browse the repository at this point in the history
  • Loading branch information
cedws committed Nov 24, 2019
1 parent baa82d9 commit c61c770
Showing 1 changed file with 26 additions and 6 deletions.
32 changes: 26 additions & 6 deletions discord/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,18 @@ func (c Client) DeleteFromChannel(me *Me, channel *Channel) error {
if err != nil {
return errors.Wrap(err, "Error fetching messages for channel")
}

// As of some date ~24-11-19, Discord's API doesn't move messages down the 'stack'
// as they are deleted, and instead returns an empty array.
// Hence, we have to iterate over all pages to determine whether or not there are
// any messages to delete.
if len(results.ContextMessages) == 0 {
log.Infof("No more messages to delete for channel %v", channel.ID)
break
seek += messageLimit
if seek >= results.TotalResults {
log.Infof("No more messages to delete for channel %v", channel.ID)
break
}
continue
}

err = c.DeleteMessages(results, &seek)
Expand All @@ -133,9 +142,19 @@ func (c Client) DeleteFromGuild(me *Me, channel *Channel) error {
if err != nil {
return errors.Wrap(err, "Error fetching messages for guild")
}

// As of some date ~24-11-19, Discord's API doesn't move messages down the 'stack'
// as they are deleted, and instead returns an empty array.
// Hence, we have to iterate over all pages to determine whether or not there are
// any messages to delete.
if len(results.ContextMessages) == 0 {
log.Infof("No more messages to delete for guild '%v'", channel.Name)
break
seek += messageLimit
log.Infof("%+v", results)
if seek >= results.TotalResults {
log.Infof("No more messages to delete for guild '%v'", channel.Name)
break
}
continue
}

err = c.DeleteMessages(results, &seek)
Expand All @@ -160,10 +179,11 @@ func (c Client) DeleteMessages(messages *Messages, seek *int) error {
return errors.Wrap(err, "Error deleting message")
}
} else {
log.Debugf("Found message of non-zero type, incrementing seek index")
(*seek)++
log.Debugf("Skipping message of non-zero type")
}

(*seek)++

break
}

Expand Down

0 comments on commit c61c770

Please sign in to comment.