canopeas/config/config.go

74 lines
1.7 KiB
Go
Raw Normal View History

package config
import (
"io/ioutil"
"os"
"github.com/BurntSushi/toml"
)
var defaultConfig = []byte("")
type Config struct {
Token string `toml:"token"`
Prefix string `toml:"prefix"`
MCMToken string `toml:"mcm_token"`
MCMURL string `toml:"mcm_url"`
DBPath string `toml:"db_path"`
StaffRoles []string `toml:"staff_roles"`
Echoes []Echo `toml:"echoes"`
MessageRoles []MessageRole `toml:"message_roles"`
RegisterRole string `toml:"register_role"`
RegisteredChannel string `toml:"registered_channel"`
FiredRole string `toml:"fired_role"`
MemeRate string `toml:"meme_rate"`
Insult struct {
Targets []string `toml:"target"`
Comparisons []string `toml:"comparison"`
Adjectives []string `toml:"adjectives"`
Nouns []string `toml:"nouns"`
} `toml:"insult"`
}
type MessageRole struct {
ChannelID string `toml:"channel_id"`
MessageID string `toml:"message_id"`
RoleID string `toml:"role_id"`
Emoji string `toml:"emoji"`
}
type Echo struct {
Name string `toml:"name"`
Aliases []string `toml:"aliases"`
Message string `toml:"message"`
Help string `toml:"help"`
}
func Load(configPath string) (*Config, error) {
var err error
var configContent []byte
if len(configPath) == 0 {
configPath = "sedbot.toml"
}
configContent, err = ioutil.ReadFile(configPath)
if err != nil {
if os.IsNotExist(err) {
if err = ioutil.WriteFile(configPath, defaultConfig, os.ModePerm); err != nil {
return nil, err
}
configContent = defaultConfig
} else {
return nil, err
}
}
var cfg *Config
if err = toml.Unmarshal(configContent, &cfg); err != nil {
return nil, err
}
return cfg, nil
}