Files
Discord-Bot-Go/internal/config/config.go
T

51 lines
1.1 KiB
Go

package config
import (
"errors"
"os"
)
type Config struct {
DiscordToken string
LavalinkNodeName string
LavalinkAddress string
LavalinkPassword string
LavalinkSecure bool
Debug bool
}
func Load() (Config, error) {
token := os.Getenv("DISCORD_TOKEN")
if token == "" {
return Config{}, errors.New("DISCORD_TOKEN environment variable is required")
}
address := os.Getenv("LAVALINK_ADDRESS")
if address == "" {
return Config{}, errors.New("LAVALINK_ADDRESS environment variable is required")
}
password := os.Getenv("LAVALINK_PASSWORD")
if password == "" {
return Config{}, errors.New("LAVALINK_PASSWORD environment variable is required")
}
cfg := Config{
DiscordToken: token,
LavalinkNodeName: envOrDefault("LAVALINK_NODE_NAME", "main"),
LavalinkAddress: address,
LavalinkPassword: password,
LavalinkSecure: os.Getenv("LAVALINK_SECURE") == "true",
Debug: os.Getenv("DEBUG") == "true",
}
return cfg, nil
}
func envOrDefault(key, fallback string) string {
if value := os.Getenv(key); value != "" {
return value
}
return fallback
}