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)
76 lines
1.2 KiB
Go
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
|
|
}
|