diff --git a/monitor.go b/monitor.go index 8cd3e93..e200cff 100644 --- a/monitor.go +++ b/monitor.go @@ -11,14 +11,15 @@ import ( ) type StatusMonitor struct { - mu sync.Mutex - session *discordgo.Session - channelID string - host string - port int - interval time.Duration - messageID string - onlineSince time.Time + mu sync.Mutex + session *discordgo.Session + channelID string + host string + port int + interval time.Duration + messageID string + onlineSince time.Time + editFailCount int } func NewStatusMonitor(s *discordgo.Session, cfg *Config) *StatusMonitor { @@ -139,8 +140,15 @@ func (m *StatusMonitor) updateStatus() { Embeds: &[]*discordgo.MessageEmbed{embed}, }) if err != nil { - log.Printf("Error editing embed (will create new): %v", err) - m.messageID = "" + m.editFailCount++ + log.Printf("Error editing embed (attempt %d): %v", m.editFailCount, err) + if m.editFailCount > 10 { + log.Printf("Message may have been deleted, will create new one") + m.messageID = "" + m.editFailCount = 0 + } + } else { + m.editFailCount = 0 } } @@ -151,5 +159,6 @@ func (m *StatusMonitor) updateStatus() { return } m.messageID = msg.ID + m.editFailCount = 0 } }