goMuffin/configs/config.go

62 lines
1.2 KiB
Go

package configs
import (
"fmt"
"log"
"os"
"github.com/joho/godotenv"
)
type botConfig struct {
Token string
Prefix string
OwnerId string
}
type trainConfig struct {
UserID string
}
// MuffinConfig for Muffin bot
type MuffinConfig struct {
Bot botConfig
Train trainConfig
DatabaseURL string
}
func loadConfig() *MuffinConfig {
err := godotenv.Load()
if err != nil {
log.Println("[goMuffin] 봇의 설절파일을 불러올 수가 없어요.")
log.Fatalln(err)
}
config := &MuffinConfig{Bot: botConfig{}, Train: trainConfig{}}
setConfig(config)
return config
}
func getRequiredValue(key string) string {
value := os.Getenv(key)
if value == "" {
log.Fatalln(fmt.Sprintf("[goMuffin] .env 파일에서 필요한 %s값이 없어요.", key))
}
return value
}
func getValue(key string) string {
return os.Getenv(key)
}
func setConfig(config *MuffinConfig) {
config.Bot.Prefix = getRequiredValue("BOT_PREFIX")
config.Bot.Token = getRequiredValue("BOT_TOKEN")
config.Bot.OwnerId = getRequiredValue("BOT_OWNER_ID")
config.Train.UserID = getValue("TRAIN_USER_ID")
config.DatabaseURL = getRequiredValue("DATABASE_URL")
}
var Config *MuffinConfig = loadConfig()