main.go (view raw)
1package main
2
3import (
4 "os"
5 "os/signal"
6
7 "github.com/birabittoh/disgord/src"
8 g "github.com/birabittoh/disgord/src/globals"
9 "github.com/birabittoh/disgord/src/music"
10 "github.com/birabittoh/disgord/src/myconfig"
11 "github.com/birabittoh/disgord/src/mylog"
12 "github.com/bwmarrin/discordgo"
13)
14
15var logger = mylog.NewLogger(os.Stdout, "init", mylog.DEBUG)
16
17func messageHandler(s *discordgo.Session, m *discordgo.MessageCreate) {
18 if m.Author.ID == s.State.User.ID {
19 // logger.Debugf("Ignoring own message: %s", m.Content)
20 return
21 }
22
23 logger.Debug("Got a message: " + m.Content)
24
25 response, ok, err := src.HandleCommand(s, m)
26 if err != nil {
27 logger.Errorf("could not handle command: %s", err)
28 return
29 }
30 if !ok {
31 return
32 }
33 if response == "" {
34 logger.Debug("got empty response")
35 return
36 }
37
38 _, err = s.ChannelMessageSend(m.ChannelID, response)
39 if err != nil {
40 logger.Errorf("could not send message: %s", err)
41 }
42}
43
44func readyHandler(s *discordgo.Session, r *discordgo.Ready) {
45 logger.Infof("Logged in as %s", r.User.String())
46}
47
48func vsuHandler(s *discordgo.Session, vsu *discordgo.VoiceStateUpdate) {
49 if vsu.UserID != s.State.User.ID {
50 // update is not from this bot
51 return
52 }
53
54 music.HandleBotVSU(vsu)
55}
56
57func main() {
58 logger.Info("Starting bot... Commit " + g.CommitID)
59 var err error
60 g.Config, err = myconfig.New[g.MyConfig]("config.json")
61 if err != nil {
62 logger.Errorf("could not load config: %s", err)
63 }
64
65 session, err := discordgo.New("Bot " + g.Config.Values.Token)
66 if err != nil {
67 logger.Fatalf("could not create bot session: %s", err)
68 }
69
70 src.InitHandlers()
71 session.AddHandler(messageHandler)
72 session.AddHandler(readyHandler)
73 session.AddHandler(vsuHandler)
74
75 err = session.Open()
76 if err != nil {
77 logger.Fatalf("could not open session: %s", err)
78 }
79
80 sigch := make(chan os.Signal, 1)
81 signal.Notify(sigch, os.Interrupt)
82 <-sigch
83
84 logger.Info("Stopping gracefully...")
85 err = session.Close()
86 if err != nil {
87 logger.Errorf("could not close session: %s", err)
88 }
89}