This repository has been archived by the owner on Jul 9, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathmain.go
91 lines (81 loc) · 2.81 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"
"log"
"os"
"os/signal"
"syscall"
"trup/ctx"
"trup/eventhandler"
"trup/misc"
"trup/routine"
"github.com/bwmarrin/discordgo"
)
var (
env = ctx.Env{
RoleColors: []discordgo.Role{},
RoleColorsString: os.Getenv("ROLE_COLORS"),
RoleMod: os.Getenv("ROLE_MOD"),
RoleHelper: os.Getenv("ROLE_HELPER"),
RoleMute: os.Getenv("ROLE_MUTE"),
ChannelShowcase: os.Getenv("CHANNEL_SHOWCASE"),
ChannelFeedback: os.Getenv("CHANNEL_FEEDBACK"),
ChannelModlog: os.Getenv("CHANNEL_MODLOG"),
CategoryModPrivate: os.Getenv("CATEGORY_MOD_PRIVATE"),
ChannelAutoMod: os.Getenv("CHANNEL_AUTO_MOD"),
ChannelBotMessages: os.Getenv("CHANNEL_BOT_MESSAGES"),
ChannelBotTraffic: os.Getenv("CHANNEL_BOT_TRAFFIC"),
Guild: os.Getenv("GUILD"),
}
cache = misc.NewMessageCache(5000)
)
func main() {
token := os.Getenv("TOKEN")
discord, err := discordgo.New("Bot " + token)
if err != nil {
log.Fatalf("Failed on discordgo.New(): %s\n", err)
}
discord.Identify.Intents = discordgo.MakeIntent(discordgo.IntentsAllWithoutPrivileged | discordgo.IntentsGuildPresences | discordgo.IntentsGuildMembers)
newContext := func(session *discordgo.Session) *ctx.Context {
return ctx.NewContext(&env, session, cache)
}
go routine.PruneAttachmentsCacheLoop()
go routine.UnmuteUsersLoop(newContext(discord))
go routine.SyncUsersLoop(newContext(discord))
discord.AddHandlerOnce(func(s *discordgo.Session, r *discordgo.Ready) {
eventhandler.ReadyOnce(newContext(s), r)
})
discord.AddHandler(func(s *discordgo.Session, r *discordgo.Ready) {
eventhandler.Ready(newContext(s), r)
})
discord.AddHandler(func(s *discordgo.Session, m *discordgo.GuildMemberAdd) {
eventhandler.MemberJoin(newContext(s), m)
})
discord.AddHandler(func(s *discordgo.Session, m *discordgo.GuildMemberRemove) {
eventhandler.MemberLeave(newContext(s), m)
})
discord.AddHandler(func(s *discordgo.Session, m *discordgo.MessageCreate) {
eventhandler.MessageCreate(newContext(s), m)
})
discord.AddHandler(func(s *discordgo.Session, m *discordgo.MessageDelete) {
eventhandler.MessageDelete(newContext(s), m)
})
discord.AddHandler(func(s *discordgo.Session, m *discordgo.MessageDeleteBulk) {
eventhandler.MessageDeleteBulk(newContext(s), m)
})
discord.AddHandler(func(s *discordgo.Session, m *discordgo.MessageUpdate) {
eventhandler.MessageUpdate(newContext(s), m)
})
discord.AddHandler(func(s *discordgo.Session, m *discordgo.MessageReactionAdd) {
eventhandler.MessageReactionAdd(newContext(s), m)
})
err = discord.Open()
if err != nil {
log.Fatalf("Failed on discord.Open(): %s\n", err)
}
fmt.Println("Bot is now running. Press CTRL-c to exit.")
sc := make(chan os.Signal, 1)
signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt)
<-sc
discord.Close()
}