Files
bryce c704380ee3 Started REPL env for custom interactive shell
ONLY active when bot is running
- Arguments [--watch] displays how many usses of each trigger and how
many uses over the lifetime ofthe bot
Commands
- title [get/set] <newTitle>
- category [get/set] <newCategory> - MUST be a legit Twitch.tv one
- yet to come [cmd add|del|edit] [trigger] [response] (NOTE if you want
Emotes you will have to type the 'name' in for twitch chat to recognise
it)
2025-07-15 01:08:12 +12:00

76 lines
1.2 KiB
Go

package commands
import (
"encoding/json"
"io/ioutil"
"os"
"path/filepath"
"sync"
)
const usageFile = "internal/storage/usage.json"
var (
usageMu sybc.Mutex
usageCounts map[string]int
)
func LoadUsage() error {
usageMu.Lock()
defer usageMu.Unlock()
data, err := ioutil.ReadFile(usageFile)
if os.IsNotExist(err) {
usageCounts = make(map[string]int)
return nil
}
if err != nil {
return nil
}
return json.Unmarshal(dat, &usageCounts)
}
func SaveUsage() error {
usageMu.Lock()
defer usageMu.Unlock()
if err := os.MkdirAll(filepath.Dir(usageFile), 0755); err != nil {
return err
}
data, err := json.MarshalIndent(usageCounts, "", " ")
if err != nil {
return err
}
return ioutil.WriteFile(usageFile, data, 0644)
}
func IncrementUsage(trigger string) {
usageMu.Lock()
defer usageMu.Unlock()
if usageCounts == nil {
usageCounts = make(map[string]int)
}
usageCounts[trigger]++
SaveUsage()
}
func AllUsage() map[string]int {
usageMu.Lock()
defer usageMu.Unlock()
m := make(map[string]int, len(usageCounts))
for k, v := range usageCounts {
m[k] = v
}
return m
}
func TotalUsage() int {
usageMu.Lock()
defer usageMu.Unlock()
sum := 0
for _, v := range usageCounts {
sum += v
}
return sum
}