comparison 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
comparison
equal deleted inserted replaced
7:a8aab75f68c9 8:e9df3bb010f4
1 package bot
2
3 import (
4 "fmt"
5 "log"
6 "os"
7 "strconv"
8 "time"
9 )
10
11 var quitTimer chan bool
12
13 func HandleCmd(cmd []string) {
14 cmdReceived := cmd[0]
15 log.Printf("bot: %s command received", cmdReceived)
16
17 switch cmdReceived {
18 case "timer":
19 seconds, err := strconv.Atoi(cmd[1])
20
21 if err != nil {
22 log.Fatal("err: invalid command arguments")
23 }
24
25 if quitTimer != nil {
26 quitTimer <- true
27
28 }
29
30 quitTimer = make(chan bool)
31
32 go func() {
33 filename := "F:/Media/Twitch/Bot/timer.txt"
34
35 file, err := os.Create(filename)
36
37 if err != nil {
38 log.Fatal(err)
39 }
40
41 defer file.Close()
42
43 countdown := time.Duration(seconds) * time.Second
44 ticker := time.NewTicker(time.Second)
45 defer ticker.Stop()
46
47 log.Printf("bot: timer started with duration %d seconds", seconds)
48
49 for countdown > 0 {
50 select {
51 case <-ticker.C:
52 totalSeconds := int(countdown.Seconds())
53 minutes := totalSeconds / 60
54 seconds := totalSeconds % 60
55 countdownMsg := fmt.Sprintf("%02d:%02d", minutes, seconds)
56
57 file.Seek(0, 0)
58 _, err = file.WriteString("")
59
60 if err != nil {
61 log.Fatal(err)
62 }
63
64 _, err = file.WriteString(countdownMsg)
65
66 if err != nil {
67 log.Fatal(err)
68 }
69
70 log.Printf("bot: timer updated to %s", countdownMsg)
71
72 countdown -= time.Second
73 case <-quitTimer:
74 file.Seek(0, 0)
75 _, err = file.WriteString("")
76
77 if err != nil {
78 log.Fatal(err)
79 }
80
81 log.Println("bot: timer stopped")
82
83 return
84 }
85 }
86 }()
87 }
88 }