This repository has been archived by the owner on Jan 29, 2021. It is now read-only.
/
commands.go
105 lines (89 loc) · 2.46 KB
/
commands.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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package internal
import (
"fmt"
util "github.com/Floor-Gang/utilpkg/botutil"
dg "github.com/bwmarrin/discordgo"
"log"
)
func (bot *Bot) add(msg *dg.MessageCreate, args []string) {
roleIDs := args[2:]
var response = "Added Roles:\n"
guildRoles, _ := bot.Client.GuildRoles(msg.GuildID)
for _, roleID := range roleIDs {
role := getRole(roleID, guildRoles)
if role == nil {
_, _ = util.Reply(bot.Client, msg.Message, "Couldn't find "+roleID)
continue
}
response += fmt.Sprintf(" - %s\n", role.Name)
bot.config.Roles = append(bot.config.Roles, roleID)
}
err := bot.config.save()
if err != nil {
_, _ = util.Reply(bot.Client, msg.Message, "Failed to remove roles.")
log.Println("Failed to remove roles", err)
} else {
_, _ = util.Reply(bot.Client, msg.Message, response)
}
}
// args = [".admin", "remove" .. role ID's].
func (bot *Bot) remove(msg *dg.MessageCreate, args []string) {
// ["Discord mod", "developer", "
roleIDs := args[2:]
var newConfigRoles []string
var response = "Removed Roles:\n"
guildRoles, _ := bot.Client.GuildRoles(msg.GuildID)
for _, storedRole := range bot.config.Roles {
for _, roleID := range roleIDs {
role := getRole(roleID, guildRoles)
if role == nil {
_, _ = util.Reply(bot.Client, msg.Message, "Couldn't find "+roleID)
continue
}
if storedRole == roleID {
response += fmt.Sprintf(" - %s\n", role.Name)
} else {
newConfigRoles = append(newConfigRoles, roleID)
}
}
}
bot.config.Roles = newConfigRoles
err := bot.config.save()
if err != nil {
_, _ = util.Reply(bot.Client, msg.Message, "Failed to remove roles.")
log.Println("Failed to remove roles", err)
} else {
_, _ = util.Reply(bot.Client, msg.Message, response)
}
}
func getRole(roleID string, roles []*dg.Role) *dg.Role {
for _, role := range roles {
if role.ID == roleID {
return role
}
}
return nil
}
func (bot *Bot) list(msg *dg.MessageCreate) {
list := fmt.Sprintf("<@%s> Admin Roles:\n", msg.Author.ID)
roles, err := bot.Client.GuildRoles(bot.config.Guild)
if err != nil {
log.Println("Failed to fetch roles for "+bot.config.Guild, err)
_, _ = util.Reply(bot.Client, msg.Message, "Failed. See logs.")
return
}
for _, role := range roles {
if has(role.ID, bot.config.Roles) {
list += fmt.Sprintf(" - %s\n", role.Name)
}
}
_, _ = bot.Client.ChannelMessageSend(msg.ChannelID, list)
}
func has(x string, y []string) bool {
for _, z := range y {
if x == z {
return true
}
}
return false
}