all repos — telebonk @ ca7eca93e8e9ff2f8f448b34de61471eae48fc70

reposter from honk to telegram

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
commit

ca7eca93e8e9ff2f8f448b34de61471eae48fc70

parent

d5fb0ba220b26f5bc0e7ff593c4be35a2cf65206

2 files changed, 23 insertions(+), 10 deletions(-)

jump to
A changelog.txt

@@ -0,0 +1,5 @@

+changelog + +=== next + ++ make gethonks retry 5 times before giving up
M main.gomain.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 } }