github.com/diamondburned/arikawa@v1.3.14/_example/advanced_bot/main.go (about)

     1  package main
     2  
     3  import (
     4  	"log"
     5  	"os"
     6  
     7  	"github.com/diamondburned/arikawa/bot"
     8  )
     9  
    10  // To run, do `BOT_TOKEN="TOKEN HERE" go run .`
    11  
    12  func main() {
    13  	var token = os.Getenv("BOT_TOKEN")
    14  	if token == "" {
    15  		log.Fatalln("No $BOT_TOKEN given.")
    16  	}
    17  
    18  	commands := &Bot{}
    19  
    20  	wait, err := bot.Start(token, commands, func(ctx *bot.Context) error {
    21  		ctx.HasPrefix = bot.NewPrefix("!", "~")
    22  		ctx.EditableCommands = true
    23  
    24  		// Subcommand demo, but this can be in another package.
    25  		ctx.MustRegisterSubcommand(&Debug{})
    26  
    27  		return nil
    28  	})
    29  
    30  	if err != nil {
    31  		log.Fatalln(err)
    32  	}
    33  
    34  	log.Println("Bot started")
    35  
    36  	// As of this commit, wait() will block until SIGINT or fatal. The past
    37  	// versions close on call, but this one will block.
    38  	// If for some reason you want the Cancel() function, manually make a new
    39  	// context.
    40  	if err := wait(); err != nil {
    41  		log.Fatalln("Gateway fatal error:", err)
    42  	}
    43  }