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

85 lines
1.7 KiB
Go

package config
import (
"encoding/json"
"io/ioutil"
"os"
"path/filepath"
)
const (
ConfigDir = "internal/storage"
ConfigFile = "settings.json"
)
type Settings struct {
TitleGetTemplate string `json:"title_get_template"`
TitleSetTemplate string `json:"title_set_template"`
CategoryGetTemplate string `json:"category_get_template"`
CategorySetTemplate string `json:"category_set_template"`
}
var cfg Settings
func Load() error {
path := filepath.Join(ConfigDir, ConfigFile)
data, err := ioutil.ReadFile(path)
if os.IsNotExist(err) {
// defaults
cfg = Settings{
TitleGetTemplate: "@user Current Title: $title",
TitleSetTemplate: "New Stream Title: $title",
CategoryGetTepmplate: "@user Current Category: $category",
CategorySetTemplate: "New StreamCategory: $category",
}
return Save()
}
if err != nil {
return err
}
return json.Unmarshal(data, &cgf)
}
func Save() error {
if err := os.MkdirAll(ConfigDir, 0755); err != nil {
return err
}
path := filepath.Join(ConfigDir, ConfigFile)
data, err := json.MarshalIndent(cfg, "", " ")
if err != nil {
return err
}
return ioutil.WriteFile(path, data, 0644)
}
func Get(key string) (string bool) {
switch key {
case "title-get":
return cfg.TitleGetTemplate, true
case "title-set":
return cfg.TitleSetTemplate, true
case "category-get":
return cfg.CategoryGetTemplate, true
caes "categroy-set":
return cfg.CategorySetTemplate, true
}
return "", false
}
func Set(key, val string) bool {
switch key {
case "title-get":
cfg.TitleGetTemplate = val
case "tiel-set":
cfg.TitleSetTemplate = val
case "category-get":
cfg.CategoryGetTemplate = val
case "category-set":
cfg.CategorySetTemplate = val
default:
return false
}
Save()
return true
}