From 92660df6677e4513c807ed688fea858717b62347 Mon Sep 17 00:00:00 2001 From: daru Date: Sun, 31 Jul 2022 14:50:56 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=A3=F0=9F=A9=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- huso.go | 2 +- klotz.go | 7 ++++--- nuss.go | 7 ++++--- praktikant.go | 21 +++++++++++++++++---- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/huso.go b/huso.go index 63302fb..d225398 100644 --- a/huso.go +++ b/huso.go @@ -76,7 +76,7 @@ func main() { sc := make(chan os.Signal, 1) signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt) - logOut = NewRingBuf(10101) + logOut = NewRingBuf(101010) color.Notice.Printf("huso %s built on %s with %s\n", husoVersion, buildTime, runtime.Version()) color.Notice.Printf("Last git commit: %s\n", buildCommit) diff --git a/klotz.go b/klotz.go index ee0b0a7..f5cacc7 100644 --- a/klotz.go +++ b/klotz.go @@ -55,9 +55,10 @@ type AnimeStudio struct { } type Appointment struct { - Anime int64 `json:"anime"` - Time time.Time `json:"date"` - Users []string `json:"users"` + Anime int64 `json:"anime"` + Time time.Time `json:"date"` + Users []string `json:"users"` + Announced bool `json:"announced"` } type WatchUser struct { diff --git a/nuss.go b/nuss.go index a84714f..b1d2e92 100644 --- a/nuss.go +++ b/nuss.go @@ -432,9 +432,10 @@ func ReadAppointments() ([]Appointment, error) { return err } appointment := Appointment{ - Anime: animeId, - Time: date, - Users: appointmentUsers, + Anime: animeId, + Time: date, + Users: appointmentUsers, + Announced: false, } appoints = append(appoints, appointment) } diff --git a/praktikant.go b/praktikant.go index 6e1c47c..314ab2b 100644 --- a/praktikant.go +++ b/praktikant.go @@ -27,8 +27,18 @@ func Arbeit() { } } else { cleared := 0 + checkDate := time.Now() + data, err := animeListCache.Get(bucketAppoint) + if err == nil { + err = nil + nanora, err := BytesToInt64(data) + if err == nil { + checkDate = time.Unix(0, nanora) + } + } + newCheckDate := time.Now() for _, a := range appoints { - if a.Time.Add(22 * time.Hour).Before(time.Now()) { + if a.Time.Add(22 * time.Hour).Before(newCheckDate) { // appointment expired keyBytes := Int64AndDateToBytes(a.Anime, a.Time) err = DbDelete(bucketAppoint, string(keyBytes)) @@ -38,11 +48,14 @@ func Arbeit() { } else { cleared++ } - } else if time.Now().Add(40*time.Minute).Before(a.Time) && time.Now().Add(60*time.Minute).After(a.Time) { - // This has not happened and is happening soon - go AnnounceBomb(a.Anime, a.Time.Unix(), time.Until(a.Time.Add(-25*time.Minute))) + } else { + if checkDate.Add(40*time.Minute).Before(a.Time) && newCheckDate.Add(60*time.Minute).After(a.Time) { + // This has not happened and is happening soon + go AnnounceBomb(a.Anime, a.Time.Unix(), time.Until(a.Time.Add(-25*time.Minute))) + } } } + animeListCache.Set(bucketAppoint, Int64ToByte(newCheckDate.UnixNano())) if cleared > 0 { color.Infof("Cleared %d expired appointments\n", cleared) logOut.WriteLine(fmt.Sprintf("♻️ Cleared %d expired appointments", cleared))