diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bot/bot.go	Thu Mar 13 17:41:42 2025 +0000
@@ -0,0 +1,88 @@
+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
+				}
+			}
+		}()
+	}
+}