package main import ( "flag" "log" "os" "os/signal" "github.com/bwmarrin/discordgo" "gitlab.com/whom/bingobot/internal/config" "gitlab.com/whom/bingobot/internal/logging" ) var ( Token = flag.String("token", "", "Bot authentication token") App = flag.String("app", "", "Application ID") Guild = flag.String("guild", "", "Guild ID") // Do we want it to be tied to one server? appConfig *config.AppConfig Log logging.Logger ) func main() { flag.Parse() if *App == "" { log.Fatal("application id is not set") } var err error appConfig, err = config.Parse() if err != nil { log.Fatal(err) } Log = logging.InitLogger(appConfig) err = startBot() if err != nil { log.Fatal(err) } } func startBot() error { session, _ := discordgo.New("Bot " + *Token) err := session.Open() if err != nil { Log.Error("could not open discord session", "type", "error", "error", err) return err } Log.Info("shutting down gracefully", "type", "shutdown") sigch := make(chan os.Signal, 1) signal.Notify(sigch, os.Interrupt) <-sigch Log.Info("shutting down gracefully", "type", "shutdown") err = session.Close() if err != nil { Log.Error("could not close discord session gracefully", "type", "error", "error", err) return err } return nil }