-
-
Notifications
You must be signed in to change notification settings - Fork 55
/
middlewares.go
49 lines (40 loc) · 993 Bytes
/
middlewares.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
package middlewares
import (
"github.com/diamondburned/arikawa/bot"
"github.com/diamondburned/arikawa/bot/extras/infer"
"github.com/diamondburned/arikawa/discord"
)
func AdminOnly(ctx *bot.Context) func(interface{}) error {
return func(ev interface{}) error {
var channelID = infer.ChannelID(ev)
if !channelID.Valid() {
return bot.Break
}
var userID = infer.UserID(ev)
if !userID.Valid() {
return bot.Break
}
p, err := ctx.Permissions(channelID, userID)
if err == nil && p.Has(discord.PermissionAdministrator) {
return nil
}
return bot.Break
}
}
func GuildOnly(ctx *bot.Context) func(interface{}) error {
return func(ev interface{}) error {
// Try and infer the GuildID.
if guildID := infer.GuildID(ev); guildID.Valid() {
return nil
}
var channelID = infer.ChannelID(ev)
if !channelID.Valid() {
return bot.Break
}
c, err := ctx.Channel(channelID)
if err != nil || !c.GuildID.Valid() {
return bot.Break
}
return nil
}
}