74 lines
1.7 KiB
Go
74 lines
1.7 KiB
Go
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
|
|
}
|