package codeforcesbot import ( "fmt" "time" ) type TickerFunc func(time.Time) func addTimer(duration time.Duration, tf TickerFunc) { fmt.Println("add timer") Timer := time.NewTimer(duration) tf(<-Timer.C) } func addTicker(duration time.Duration, tf TickerFunc) { fmt.Println("add ticker") Timer := time.NewTicker(duration) for { tf(<-Timer.C) fmt.Println("trigger") } } func notifyTodaysContestsWrapped(t time.Time) { fmt.Println("notify todays contests wrapped") notifyTodaysContests(t) addTicker(time.Hour * 24, notifyTodaysContests) } func InitializeTimersAndTickers() { if time.Now().Hour() >= 8 { year, month, day := time.Now().AddDate(0, 0, 1).Date() go addTimer(time.Until(time.Date(year, month, day, 8, 0, 0, 0, time.Local)), notifyTodaysContestsWrapped) } else { year, month, day := time.Now().Date() go addTimer(time.Until(time.Date(year, month, day, 8, 0, 0, 0, time.Local)), notifyTodaysContestsWrapped) } //go addTimer(time.Second * 10, notifyTodaysContests) }