package main import ( "fmt" "jinx/pkg/bot" "os" "os/signal" "syscall" "time" "github.com/rs/zerolog" ) func main() { logger, err := createLogger() if err != nil { panic(err) } token := os.Getenv("BOT_TOKEN") if token == "" { logger.Fatal().Msg("`BOT_TOKEN` is not set.") } logger.Info().Msg("starting jinx!") b := bot.NewBot(token, logger) if err := b.Start(); err != nil { logger.Fatal().Err(err).Msg("error starting jinx") } c := make(chan os.Signal, 2) signal.Notify(c, syscall.SIGINT, syscall.SIGTERM) s := <-c logger.Info().Msgf("received signal: %s! stopping...", s) if err := b.Stop(); err != nil { logger.Fatal().Err(err).Msg("error stopping jinx") } } func createLogger() (*zerolog.Logger, error) { timestamp := time.Now().Format(time.RFC3339) logFileName := fmt.Sprintf("log/jinx-%s.log", timestamp) logFile, err := os.OpenFile(logFileName, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { return nil, err } stdout := zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: time.RFC3339} logger := zerolog.New(zerolog.MultiLevelWriter(stdout, logFile)).With().Timestamp().Logger() return &logger, nil }