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)
This commit is contained in:
75
internal/commands/usage.go
Normal file
75
internal/commands/usage.go
Normal file
@@ -0,0 +1,75 @@
|
||||
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
|
||||
}
|
Reference in New Issue
Block a user