Mercurial > public > pacobot
view bot/bot.go @ 8:e9df3bb010f4
fix issues
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Thu, 13 Mar 2025 17:41:42 +0000 |
parents | |
children | 5c124578fed2 |
line wrap: on
line source
package bot import ( "fmt" "log" "os" "strconv" "time" ) var quitTimer chan bool func HandleCmd(cmd []string) { cmdReceived := cmd[0] log.Printf("bot: %s command received", cmdReceived) switch cmdReceived { case "timer": seconds, err := strconv.Atoi(cmd[1]) if err != nil { log.Fatal("err: invalid command arguments") } if quitTimer != nil { quitTimer <- true } quitTimer = make(chan bool) go func() { filename := "F:/Media/Twitch/Bot/timer.txt" file, err := os.Create(filename) if err != nil { log.Fatal(err) } defer file.Close() countdown := time.Duration(seconds) * time.Second ticker := time.NewTicker(time.Second) defer ticker.Stop() log.Printf("bot: timer started with duration %d seconds", seconds) for countdown > 0 { select { case <-ticker.C: totalSeconds := int(countdown.Seconds()) minutes := totalSeconds / 60 seconds := totalSeconds % 60 countdownMsg := fmt.Sprintf("%02d:%02d", minutes, seconds) file.Seek(0, 0) _, err = file.WriteString("") if err != nil { log.Fatal(err) } _, err = file.WriteString(countdownMsg) if err != nil { log.Fatal(err) } log.Printf("bot: timer updated to %s", countdownMsg) countdown -= time.Second case <-quitTimer: file.Seek(0, 0) _, err = file.WriteString("") if err != nil { log.Fatal(err) } log.Println("bot: timer stopped") return } } }() } }