2024-11-06 11:34:45 -08:00
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"flag"
|
|
|
|
|
"log"
|
|
|
|
|
|
2024-11-06 16:01:38 -08:00
|
|
|
"gitlab.com/whom/bingobot/internal/config"
|
2024-11-08 16:26:05 -08:00
|
|
|
"gitlab.com/whom/bingobot/internal/discord"
|
2024-11-06 16:01:38 -08:00
|
|
|
"gitlab.com/whom/bingobot/internal/logging"
|
2024-11-30 00:31:25 -08:00
|
|
|
"gitlab.com/whom/bingobot/internal/state"
|
2024-11-06 11:34:45 -08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var (
|
2024-11-08 16:26:05 -08:00
|
|
|
token = flag.String("token", "", "Bot authentication token")
|
2024-11-06 11:34:45 -08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func main() {
|
2024-11-06 16:01:38 -08:00
|
|
|
var err error
|
|
|
|
|
|
2024-11-13 22:03:57 +00:00
|
|
|
err = config.Init()
|
2024-11-06 13:32:37 -08:00
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-13 22:03:57 +00:00
|
|
|
logging.Init()
|
2024-11-30 10:49:16 -08:00
|
|
|
flag.Parse()
|
2024-11-06 14:19:45 -08:00
|
|
|
|
2024-11-30 00:31:25 -08:00
|
|
|
if err := state.Init(
|
|
|
|
|
config.Get().InMemoryEventCacheSize,
|
|
|
|
|
config.Get().PersistentCacheStore,
|
|
|
|
|
); err != nil {
|
|
|
|
|
log.Fatalf("couldn't initialize state engine: %s", err.Error())
|
|
|
|
|
}
|
2024-11-30 10:49:16 -08:00
|
|
|
defer state.Teardown()
|
2024-11-30 00:31:25 -08:00
|
|
|
|
2024-11-06 14:19:45 -08:00
|
|
|
err = startBot()
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatal(err)
|
|
|
|
|
}
|
2024-11-06 11:34:45 -08:00
|
|
|
}
|
|
|
|
|
|
2024-11-06 14:19:45 -08:00
|
|
|
func startBot() error {
|
2024-11-08 16:26:05 -08:00
|
|
|
err := discord.Connect(*token)
|
2024-11-06 11:34:45 -08:00
|
|
|
|
|
|
|
|
if err != nil {
|
2024-11-06 14:19:45 -08:00
|
|
|
return err
|
2024-11-06 11:34:45 -08:00
|
|
|
}
|
|
|
|
|
|
2024-11-08 14:33:57 -08:00
|
|
|
logging.Info("shutting down gracefully", "type", "shutdown")
|
2024-11-08 16:26:05 -08:00
|
|
|
discord.Close()
|
2024-11-06 14:19:45 -08:00
|
|
|
|
|
|
|
|
return nil
|
2024-11-06 11:34:45 -08:00
|
|
|
}
|