From 693996a2629b9da93e5253f2377d1e3124402e85 Mon Sep 17 00:00:00 2001 From: eleksir Date: Sat, 21 Mar 2026 12:14:26 +0300 Subject: [PATCH] Try harder to get holidays --- internal/holy/cronTask.go | 44 +++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/internal/holy/cronTask.go b/internal/holy/cronTask.go index e86f8aa..c86f8f4 100644 --- a/internal/holy/cronTask.go +++ b/internal/holy/cronTask.go @@ -2,18 +2,54 @@ package holy import ( "tg-holy-bot/internal/log" + "time" ) // CronTask sends generated holiday list to the channel. func CronTask() { + var ( + err error + errcnt int + phrase string + timeout time.Duration + ) + log.Info("Cron Task triggered") - phrase, err := APIClient() + for { + phrase, err = APIClient() - if err != nil { - log.Errorf("Unable to get holidays: %s", err) + if err != nil { + errcnt++ - return + log.Errorf("Unable to get holidays (try %d/15): %s", errcnt, err) + + switch errcnt { + case 0, 1, 2: + timeout = 1 * time.Second + + case 3, 4, 5: + timeout = 5 * time.Second + + case 6, 7, 8: + timeout = 1 * time.Minute + + case 9, 10, 11: + timeout = 5 * time.Minute + + case 12, 13, 14: + timeout = 1 * time.Hour + + default: + log.Error("Giveup trying to get holidays") + + return + } + } else { + break + } + + time.Sleep(timeout) } if _, err = Bot.SendMessage(phrase, Config.ChannelID, nil); err != nil {