1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
package config
import (
"ai/types"
"ai/utils/logger"
"os"
"strconv"
"strings"
"github.com/joho/godotenv"
)
var Config *types.BotConfig
func init() {
logPrefix := "Config"
logOptions := types.LogOptions{
Timestamp: true,
Prefix: logPrefix,
Level: types.Error,
Fatal: true,
}
if err := godotenv.Load(); err != nil {
logger.Log("Failed to load environment variables", logOptions)
}
Config = &types.BotConfig{
DiscordToken: getEnv("DISCORD_TOKEN"),
SpotifyClientId: getEnv("SPOTIFY_CLIENT_ID"),
SpotifyClientSecret: getEnv("SPOTIFY_CLIENT_SECRET"),
YoutubeAPIKey: getEnv("YOUTUBE_API_KEY"),
Activity: types.ActivityType(getIntEnv("ACTIVITY")),
ActivityMessage: getEnv("ACTIVITY_MESSAGE"),
}
if Config.DiscordToken == "" {
logger.Log("Unable to read Discord token. environment variable DISCORD_TOKEN is required", logOptions)
}
if Config.SpotifyClientId == "" {
logger.Log("Unable to read Spotify client ID. environment variable SPOTIFY_CLIENT_ID is required", logOptions)
}
if Config.SpotifyClientSecret == "" {
logger.Log("Unable to read Spotify client secret. environment variable SPOTIFY_CLIENT_SECRET is required", logOptions)
}
if Config.YoutubeAPIKey == "" {
logger.Log("Unable to read YouTube API key. environment variable YOUTUBE_API_KEY is required", logOptions)
}
if Config.Activity == 0 {
logOptions.Level = types.Warn
logOptions.Fatal = false
logger.Log("Activity message is empty or not set. Defaulting to PLAYING", logOptions)
Config.Activity = types.PLAYING
}
if Config.ActivityMessage == "" {
logOptions.Level = types.Warn
logOptions.Fatal = false
logger.Log("Activity message is empty or not set. Defaulting to empty string", logOptions)
Config.ActivityMessage = ""
}
logOptions.Level = types.Success
logOptions.Fatal = false
logger.Log("Config loaded successfully", logOptions)
}
func getEnv(key string) string {
value, exists := os.LookupEnv(key)
if !exists {
return ""
}
return strings.TrimSpace(value)
}
func getIntEnv(key string) int {
value := getEnv(key)
if value == "" {
return 0
}
i, err := strconv.Atoi(value)
if err != nil {
return 0
}
return i
}
|