package main import ( "fmt" "github.com/bwmarrin/discordgo" "github.com/spf13/viper" "os" ) var BotId string func main() { viper := viper.New() viper.SetConfigFile("./config.yml") viper.ReadInConfig() fmt.Println(viper.GetString("bot.prefix")) fmt.Println(viper.GetString("bot.token")) } func mainf() { fmt.Println("Bot is starting...") fmt.Println("Loading config...") data, err := os.ReadFile("./config.yml") checkErr(err) var config Config err = config.Parse(data) checkErr(err) fmt.Printf("%+v\n", config) fmt.Println("Config loaded") discord, err := discordgo.New("Bot " + config.BotToken) checkErr(err) user, err := discord.User("@me") checkErr(err) BotId = user.ID discord.AddHandler(messageHandler) err = discord.Open() checkErr(err) fmt.Println("Bot is running!") <-make(chan struct{}) return } func messageHandler(session *discordgo.Session, message *discordgo.MessageCreate) { if message.Author.ID == BotId { return } switch message.Content { case "go$ping": _, _ = session.ChannelMessageSendReply(message.ChannelID, "pong!", message.Reference()) case "go$stop", "go$exit": { _, _ = session.ChannelMessageSend(message.ChannelID, "Shutting down...") os.Exit(0) } } fmt.Println(message.Content) } func checkErr(err error) { if err != nil { fmt.Println(err.Error()) os.Exit(1) } }