Mercurial > public > pacobot
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 } |