package main import ( "flag" "os" "os/signal" "syscall" "git.canopymc.net/Etzelia/canopeas/config" "git.canopymc.net/Etzelia/canopeas/database" "git.canopymc.net/Etzelia/canopeas/discord" "go.jolheiser.com/beaver" ) var configFlag string func main() { flag.StringVar(&configFlag, "config", "canopeas.toml", "Set config path") flag.Parse() beaver.Console.Format = beaver.FormatOptions{ TimePrefix: true, StackPrefix: true, StackLimit: 15, LevelPrefix: true, LevelColor: true, } cfg, err := config.Load(configFlag) if err != nil { beaver.Fatalf("could not load config: %v", err) } db, err := database.Load(cfg.DBPath) if err != nil { beaver.Fatalf("could not load database: %v", err) } bot, err := discord.Bot(cfg, db) if err != nil { beaver.Fatalf("could not start Discord bot: %v", err) } go func() { if err := bot.Open(); err != nil { beaver.Errorf("error running Discord bot: %v", err) } }() beaver.Info("Bot is now running. Press CTRL-C to exit.") sc := make(chan os.Signal, 1) signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill) <-sc if err := bot.Close(); err != nil { beaver.Errorf("error closing Discord bot: %v", err) } }