package main import ( "math/rand" "os" "os/signal" "syscall" "time" "github.com/bwmarrin/discordgo" "github.com/jackmerrill/hampbot/internal/commands/fun" studentlife "github.com/jackmerrill/hampbot/internal/commands/studentlife" util "github.com/jackmerrill/hampbot/internal/commands/util" "github.com/jackmerrill/hampbot/internal/utils/config" "github.com/zekroTJA/shireikan" "github.com/charmbracelet/log" ) func main() { token := os.Getenv("TOKEN") session, err := discordgo.New("Bot " + token) if err != nil { panic(err) } log.Info("Starting bot...") err = session.Open() if err != nil { panic(err) } defer func() { sc := make(chan os.Signal, 1) signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill) <-sc }() handler := shireikan.New(&shireikan.Config{ GeneralPrefix: config.BotPrefix, AllowBots: false, AllowDM: true, ExecuteOnEdit: true, InvokeToLower: true, UseDefaultHelpCommand: true, OnError: func(ctx shireikan.Context, typ shireikan.ErrorType, err error) { log.Error(err) }, }) log.Info("Initializing Random") rand.Seed(time.Now().UnixNano()) log.Info("Registering commands...") handler.Register(&util.Ping{}) log.Debug("Registered ping command") handler.Register(&studentlife.Laundry{}) log.Debug("Registered laundry command") handler.Register(&util.Steal{}) log.Debug("Registered steal command") handler.Register(&fun.AI{}) log.Debug("Registered ai command") handler.Register(&fun.XKCD{}) log.Debug("Registered xkcd command") handler.Register(&fun.Dalle{}) log.Debug("Registered dalle command") handler.Register(&studentlife.PVTA{}) log.Debug("Registered PVTA command") log.Info("Registered all commands") log.Info("Setting up activities...") activities := config.Statuses go func() { for { activity := activities[rand.Intn(len(activities))] session.UpdateStatusComplex(discordgo.UpdateStatusData{ Activities: []*discordgo.Activity{&activity}, Status: "online", }) time.Sleep(10 * time.Second) } }() handler.Setup(session) log.Info("Bot is now running. Press CTRL-C to exit.") }