2024-11-06 11:34:45 -08:00
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"flag"
|
|
|
|
|
"log"
|
|
|
|
|
"os"
|
|
|
|
|
"os/signal"
|
|
|
|
|
|
|
|
|
|
"github.com/bwmarrin/discordgo"
|
2024-11-06 16:01:38 -08:00
|
|
|
"gitlab.com/whom/bingobot/internal/config"
|
|
|
|
|
"gitlab.com/whom/bingobot/internal/logging"
|
2024-11-06 14:41:49 -08:00
|
|
|
"gitlab.com/whom/bingobot/internal/state"
|
2024-11-06 11:34:45 -08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
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?
|
2024-11-06 16:01:38 -08:00
|
|
|
|
|
|
|
|
appConfig *config.AppConfig
|
|
|
|
|
Log logging.Logger
|
2024-11-06 11:34:45 -08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
flag.Parse()
|
|
|
|
|
if *App == "" {
|
|
|
|
|
log.Fatal("application id is not set")
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-06 16:01:38 -08:00
|
|
|
var err error
|
|
|
|
|
|
|
|
|
|
appConfig, err = config.Parse()
|
2024-11-06 13:32:37 -08:00
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-06 16:01:38 -08:00
|
|
|
Log = logging.InitLogger(appConfig)
|
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-06 14:41:49 -08:00
|
|
|
state.DiscordSession, _ = discordgo.New("Bot " + *Token)
|
2024-11-06 11:34:45 -08:00
|
|
|
|
2024-11-06 14:41:49 -08:00
|
|
|
err := state.DiscordSession.Open()
|
2024-11-06 11:34:45 -08:00
|
|
|
if err != nil {
|
2024-11-06 14:19:45 -08:00
|
|
|
Log.Error("could not open discord session", "type", "error", "error", err)
|
|
|
|
|
return err
|
2024-11-06 11:34:45 -08:00
|
|
|
}
|
|
|
|
|
|
2024-11-06 14:19:45 -08:00
|
|
|
Log.Info("shutting down gracefully", "type", "shutdown")
|
|
|
|
|
|
2024-11-06 11:34:45 -08:00
|
|
|
sigch := make(chan os.Signal, 1)
|
|
|
|
|
signal.Notify(sigch, os.Interrupt)
|
|
|
|
|
<-sigch
|
|
|
|
|
|
2024-11-06 14:19:45 -08:00
|
|
|
Log.Info("shutting down gracefully", "type", "shutdown")
|
2024-11-06 11:34:45 -08:00
|
|
|
|
2024-11-06 14:41:49 -08:00
|
|
|
err = state.DiscordSession.Close()
|
2024-11-06 11:34:45 -08:00
|
|
|
if err != nil {
|
2024-11-06 14:19:45 -08:00
|
|
|
Log.Error("could not close discord session gracefully", "type", "error", "error", err)
|
|
|
|
|
return err
|
2024-11-06 11:34:45 -08:00
|
|
|
}
|
2024-11-06 14:19:45 -08:00
|
|
|
|
|
|
|
|
return nil
|
2024-11-06 11:34:45 -08:00
|
|
|
}
|