main: add a retry amount for getHonks should fix #8. also add changelog.
la-ninpre leobrekalini@gmail.com
Mon, 17 Oct 2022 11:58:37 +0300
2 files changed,
23 insertions(+),
10 deletions(-)
A
changelog.txt
@@ -0,0 +1,5 @@
+changelog + +=== next + ++ make gethonks retry 5 times before giving up
M
main.go
→
main.go
@@ -86,7 +86,7 @@ // - it is of unsupported type (not a regular honk, reply or bonk)
// - it contains a `#notg` tag. // - it is empty func (h *Honk) Check() error { - log.Print("checking honk #", h.ID) + log.Print("checking honk #", h.ID) // info if h.Date.Before(now) { return fmt.Errorf("honk #%d is old", h.ID) }@@ -145,8 +145,6 @@ honkIgnore honkAction = iota
honkSend honkEdit ) - -const emptyNoise = "<p></p>\n" // A Mess holds data for a message to be sent to Telegram. type Mess struct {@@ -362,6 +360,8 @@ reHrTags = regexp.MustCompile(`<hr>.*<\/hr>`)
reBqTags = regexp.MustCompile(`<blockquote>(.*)<\/blockquote>`) ) +const emptyNoise = "<p></p>\n" + // calmNoise erases htm tags that are not supported by Telegram. func calmNoise(noise string) string { // TODO: check length of a honk@@ -394,11 +394,11 @@ flag.Parse()
err := config.Check() if err != nil { - log.Fatal("config:", err) + log.Fatal("config:", err) // fail } err = checkTgAPI() if err != nil { - log.Fatal(err) + log.Fatal(err) // fail } }@@ -407,12 +407,20 @@ var honkMap = make(map[string]honkInfo) // FIXME: not safe for use by multiple goroutines!
var now = time.Now() func main() { + var retry = 5 for { honks, err := getHonks(0) if err != nil { - log.Fatal("gethonks:", err) + log.Print("gethonks:", err) // error + retry-- + if retry == 0 { + log.Fatal("gethonks: giving up") // fail + } + time.Sleep(5 * time.Second) + continue } + HonkLoop: for _, honk := range honks { action := honk.Decide()@@ -422,7 +430,7 @@ continue
case honkSend, honkEdit: err := honk.Check() if err != nil { - log.Print(err) + log.Print(err) // error continue } }@@ -430,8 +438,8 @@ messes := NewMessFromHonk(honk, action)
// messes[0] is a honk or a donk to be sent resp, err := messes[0].Send() if err != nil { - log.Print(err) - honk.forget() // retry + log.Print(err) // error + honk.forget() // retry continue } // remember only the first mess' response@@ -439,7 +447,7 @@ honk.save(resp)
for _, mess := range messes[1:] { _, err := mess.Send() if err != nil { - log.Print(err) + log.Print(err) // error continue HonkLoop } }