github.com/diamondburned/arikawa/v2@v2.1.0/bot/extras/middlewares/middlewares.go (about) 1 package middlewares 2 3 import ( 4 "github.com/diamondburned/arikawa/v2/bot" 5 "github.com/diamondburned/arikawa/v2/bot/extras/infer" 6 "github.com/diamondburned/arikawa/v2/discord" 7 ) 8 9 func AdminOnly(ctx *bot.Context) func(interface{}) error { 10 return func(ev interface{}) error { 11 var channelID = infer.ChannelID(ev) 12 if !channelID.IsValid() { 13 return bot.Break 14 } 15 16 var userID = infer.UserID(ev) 17 if !userID.IsValid() { 18 return bot.Break 19 } 20 21 p, err := ctx.Permissions(channelID, userID) 22 if err == nil && p.Has(discord.PermissionAdministrator) { 23 return nil 24 } 25 26 return bot.Break 27 } 28 } 29 30 func GuildOnly(ctx *bot.Context) func(interface{}) error { 31 return func(ev interface{}) error { 32 // Try and infer the GuildID. 33 if guildID := infer.GuildID(ev); guildID.IsValid() { 34 return nil 35 } 36 37 var channelID = infer.ChannelID(ev) 38 if !channelID.IsValid() { 39 return bot.Break 40 } 41 42 c, err := ctx.Channel(channelID) 43 if err != nil || !c.GuildID.IsValid() { 44 return bot.Break 45 } 46 47 return nil 48 } 49 }