mirror of
https://github.com/jackmerrill/hampbot.git
synced 2024-10-16 13:47:41 -07:00
112 lines
2.5 KiB
Go
112 lines
2.5 KiB
Go
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")
|
|
|
|
handler.Register(&studentlife.Abbreviation{})
|
|
log.Debug("Registered abbreviation command")
|
|
|
|
err = studentlife.InitAll(session)
|
|
if err != nil {
|
|
log.Error("Failed to initialize laundry notify- skipping.")
|
|
} else {
|
|
handler.Register(&studentlife.LaundryNotify{})
|
|
|
|
}
|
|
log.Debug("Registered laundry notify 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.")
|
|
}
|