diff --git a/examples/slash_commands/main.go b/examples/slash_commands/main.go index 3a1cf584c..69dcd8385 100644 --- a/examples/slash_commands/main.go +++ b/examples/slash_commands/main.go @@ -363,24 +363,48 @@ func init() { func main() { s.AddHandler(func(s *discordgo.Session, r *discordgo.Ready) { - log.Println("Bot is up!") + log.Printf("Logged in as: %v#%v", s.State.User.Username, s.State.User.Discriminator) }) err := s.Open() if err != nil { log.Fatalf("Cannot open the session: %v", err) } - for _, v := range commands { - _, err := s.ApplicationCommandCreate(s.State.User.ID, *GuildID, v) + log.Println("Adding commands...") + registeredCommands := make([]*discordgo.ApplicationCommand, len(commands)) + for i, v := range commands { + cmd, err := s.ApplicationCommandCreate(s.State.User.ID, *GuildID, v) if err != nil { log.Panicf("Cannot create '%v' command: %v", v.Name, err) } + registeredCommands[i] = cmd } defer s.Close() stop := make(chan os.Signal, 1) signal.Notify(stop, os.Interrupt) + log.Println("Press Ctrl+C to exit") <-stop + + if *RemoveCommands { + log.Println("Removing commands...") + // // We need to fetch the commands, since deleting requires the command ID. + // // We are doing this from the returned commands on line 375, because using + // // this will delete all the commands, which might not be desirable, so we + // // are deleting only the commands that we added. + // registeredCommands, err := s.ApplicationCommands(s.State.User.ID, *GuildID) + // if err != nil { + // log.Fatalf("Could not fetch registered commands: %v", err) + // } + + for _, v := range registeredCommands { + err := s.ApplicationCommandDelete(s.State.User.ID, *GuildID, v.ID) + if err != nil { + log.Panicf("Cannot delete '%v' command: %v", v.Name, err) + } + } + } + log.Println("Gracefully shutdowning") }