hampbot/main.go

100 lines
2.1 KiB
Go
Raw Normal View History

2023-08-18 20:22:20 -07:00
package main
import (
2023-08-18 20:52:26 -07:00
"math/rand"
2023-08-18 20:22:20 -07:00
"os"
"os/signal"
"syscall"
2023-08-18 20:52:26 -07:00
"time"
2023-08-18 20:22:20 -07:00
"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"
2023-08-18 21:01:43 -07:00
"github.com/jackmerrill/hampbot/internal/utils/config"
2023-08-18 20:22:20 -07:00
"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{
2023-08-18 21:01:43 -07:00
GeneralPrefix: config.BotPrefix,
2023-08-18 20:22:20 -07:00
AllowBots: false,
AllowDM: true,
ExecuteOnEdit: true,
InvokeToLower: true,
UseDefaultHelpCommand: true,
OnError: func(ctx shireikan.Context, typ shireikan.ErrorType, err error) {
log.Error(err)
},
})
2023-08-18 20:52:26 -07:00
log.Info("Initializing Random")
rand.Seed(time.Now().UnixNano())
2023-08-18 20:22:20 -07:00
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")
2023-08-18 20:52:26 -07:00
handler.Register(&fun.XKCD{})
log.Debug("Registered xkcd command")
2023-08-18 21:01:43 -07:00
handler.Register(&fun.Dalle{})
log.Debug("Registered dalle command")
2023-08-18 22:27:57 -07:00
handler.Register(&studentlife.PVTA{})
log.Debug("Registered PVTA command")
2023-08-18 20:52:26 -07:00
log.Info("Registered all commands")
2023-08-18 22:27:57 -07:00
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)
}
}()
2023-08-18 20:22:20 -07:00
handler.Setup(session)
log.Info("Bot is now running. Press CTRL-C to exit.")
}