-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
91 lines (76 loc) · 2.15 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package main
import (
"fmt"
"issues/db"
"issues/global"
"issues/handler"
"log"
"log/slog"
"os"
"os/signal"
"time"
"github.com/bwmarrin/discordgo"
_ "github.com/joho/godotenv/autoload"
"github.com/lmittmann/tint"
)
func main() {
slog.SetDefault(slog.New(
tint.NewHandler(os.Stderr, &tint.Options{
Level: slog.LevelDebug,
TimeFormat: time.Kitchen,
}),
))
db, err := db.Connect()
if err != nil {
slog.Error(err.Error())
return
}
global.DB = db
session, err := discordgo.New(fmt.Sprintf("Bot %s", os.Getenv("DISCORD_BOT_TOKEN")))
if err != nil {
slog.Error(err.Error())
return
}
session.AddHandler(func(s *discordgo.Session, r *discordgo.Ready) {
slog.Info(fmt.Sprintf("Logged in as: %v#%v", s.State.User.Username, s.State.User.Discriminator))
session.UpdateListeningStatus("Dips Mobile")
})
err = session.Open()
if err != nil {
slog.Error(err.Error())
return
}
slog.Info("adding handlers...")
session.AddHandler(handler.GuildJoinHandler)
session.AddHandler(handler.ReadMessage)
session.AddHandler(handler.ThreadUpdate)
session.AddHandler(executeCommandHandler)
err = registerCommands(session)
if err != nil {
slog.Error(err.Error())
return
}
defer session.Close()
stop := make(chan os.Signal, 1)
signal.Notify(stop, os.Interrupt)
log.Println("Press Ctrl+C to exit")
<-stop
if os.Getenv("DISCORD_REMOVE_COMMANDS") == "true" {
log.Println("Removing commands...")
// // We need to fetch the commands, since deleting requires the command ID.
// // We are doing this from the returned commands on line 375, because using
// // this will delete all the commands, which might not be desirable, so we
// // are deleting only the commands that we added.
// registeredCommands, err := s.ApplicationCommands(s.State.User.ID, *GuildID)
// if err != nil {
// log.Fatalf("Could not fetch registered commands: %v", err)
// }
for _, v := range registeredCommands {
err := session.ApplicationCommandDelete(session.State.User.ID, os.Getenv("DISCORD_GUILD_ID"), v.ID)
if err != nil {
slog.Error("Cannot delete '%v' command: %v", v.Name, err.Error())
}
}
}
log.Println("Gracefully shutting down.")
}