package main import ( "fmt" "os" "os/signal" "syscall" "github.com/BurntSushi/toml" "github.com/bwmarrin/discordgo" ) var client *discordgo.Session type Config struct { Discord Discord `toml:"discord"` Database Database `toml:"database"` } type Discord struct { Token string `toml:"client"` GuildID string `toml:"guildid"` } type Database struct { Host string `toml:"host"` Port int `toml:"port"` Name string `toml:"name"` Username string `toml:"username"` Password string `toml:"password"` } func loadConfig(filename string) (Config, error) { var config Config _, err := toml.DecodeFile(filename, &config) return config, err } func init() { config, err := loadConfig("config.toml") if err != nil { fmt.Println("Error occurred whilst trying to load config:", err) return } client, err = discordgo.New("Bot " + config.Discord.Token) if err != nil { fmt.Println("Error initializing bot:", err) return } } func main() { if client == nil { fmt.Println("Bot client is not initialized") return } client.AddHandler(func(client *discordgo.Session, r *discordgo.Ready) { fmt.Println("Bot is online") }) err := client.Open() if err != nil { fmt.Println("Error opening connection:", err) return } stop := make(chan os.Signal, 1) signal.Notify(stop, os.Interrupt, syscall.SIGTERM) <-stop fmt.Println("Gracefully shutting down.") client.Close() }