2020-10-29 02:44:04 +00:00
|
|
|
package gateway
|
|
|
|
|
2020-10-29 05:49:18 +00:00
|
|
|
import "github.com/diamondburned/arikawa/v2/discord"
|
|
|
|
|
2020-10-29 02:44:04 +00:00
|
|
|
// Intents for the new Discord API feature, documented at
|
2020-11-03 17:16:42 +00:00
|
|
|
// https://discord.com/developers/docs/topics/gateway#gateway-intents.
|
2020-10-29 02:44:04 +00:00
|
|
|
type Intents uint32
|
|
|
|
|
|
|
|
const (
|
|
|
|
IntentGuilds Intents = 1 << iota
|
|
|
|
IntentGuildMembers
|
|
|
|
IntentGuildBans
|
|
|
|
IntentGuildEmojis
|
|
|
|
IntentGuildIntegrations
|
|
|
|
IntentGuildWebhooks
|
|
|
|
IntentGuildInvites
|
|
|
|
IntentGuildVoiceStates
|
|
|
|
IntentGuildPresences
|
|
|
|
IntentGuildMessages
|
|
|
|
IntentGuildMessageReactions
|
|
|
|
IntentGuildMessageTyping
|
|
|
|
IntentDirectMessages
|
|
|
|
IntentDirectMessageReactions
|
|
|
|
IntentDirectMessageTyping
|
|
|
|
)
|
|
|
|
|
|
|
|
// PrivilegedIntents contains a list of privileged intents that Discord requires
|
|
|
|
// bots to have these intents explicitly enabled in the Developer Portal.
|
|
|
|
var PrivilegedIntents = []Intents{
|
|
|
|
IntentGuildPresences,
|
|
|
|
IntentGuildMembers,
|
|
|
|
}
|
2020-10-29 05:49:18 +00:00
|
|
|
|
|
|
|
// Has returns true if i has the given intents.
|
|
|
|
func (i Intents) Has(intents Intents) bool {
|
|
|
|
return discord.HasFlag(uint64(i), uint64(intents))
|
|
|
|
}
|
|
|
|
|
|
|
|
// IsPrivileged returns true for each of the boolean that indicates the type of
|
|
|
|
// the privilege.
|
|
|
|
func (i Intents) IsPrivileged() (presences, member bool) {
|
|
|
|
// Keep this in sync with PrivilegedIntents.
|
|
|
|
return i.Has(IntentGuildPresences), i.Has(IntentGuildMembers)
|
|
|
|
}
|