65 lines
1.4 KiB
Go
65 lines
1.4 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"`
|
||
|
Links []Link `toml:"links"`
|
||
|
MessageRoles []MessageRole `toml:"message_roles"`
|
||
|
RegisterRole string `toml:"register_role"`
|
||
|
RegisteredChannel string `toml:"registered_channel"`
|
||
|
FiredRole string `toml:"fired_role"`
|
||
|
}
|
||
|
|
||
|
type MessageRole struct {
|
||
|
MessageID string `toml:"message_id"`
|
||
|
RoleID string `toml:"role_id"`
|
||
|
Emoji string `toml:"emoji"`
|
||
|
}
|
||
|
|
||
|
type Link struct {
|
||
|
Name string `toml:"name"`
|
||
|
Aliases []string `toml:"aliases"`
|
||
|
URL string `toml:"url"`
|
||
|
}
|
||
|
|
||
|
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
|
||
|
}
|