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  }