Only UserFlagDiscordEmployee had type UserFlags. All other constants defined in the same block were untyped integer constants. This change makes all UserFlags constants have type UserFlags. The primary impact is that godoc and pkg.go.dev should render these constants under the documentation for UserFlags, rather than under package-level constants.
107 lines
3.4 KiB
Go
107 lines
3.4 KiB
Go
package discordgo
|
|
|
|
import "strings"
|
|
|
|
// UserFlags is the flags of "user" (see UserFlags* consts)
|
|
// https://discord.com/developers/docs/resources/user#user-object-user-flags
|
|
type UserFlags int
|
|
|
|
// Valid UserFlags values
|
|
const (
|
|
UserFlagDiscordEmployee UserFlags = 1 << 0
|
|
UserFlagDiscordPartner UserFlags = 1 << 1
|
|
UserFlagHypeSquadEvents UserFlags = 1 << 2
|
|
UserFlagBugHunterLevel1 UserFlags = 1 << 3
|
|
UserFlagHouseBravery UserFlags = 1 << 6
|
|
UserFlagHouseBrilliance UserFlags = 1 << 7
|
|
UserFlagHouseBalance UserFlags = 1 << 8
|
|
UserFlagEarlySupporter UserFlags = 1 << 9
|
|
UserFlagTeamUser UserFlags = 1 << 10
|
|
UserFlagSystem UserFlags = 1 << 12
|
|
UserFlagBugHunterLevel2 UserFlags = 1 << 14
|
|
UserFlagVerifiedBot UserFlags = 1 << 16
|
|
UserFlagVerifiedBotDeveloper UserFlags = 1 << 17
|
|
UserFlagDiscordCertifiedModerator UserFlags = 1 << 18
|
|
)
|
|
|
|
// A User stores all data for an individual Discord user.
|
|
type User struct {
|
|
// The ID of the user.
|
|
ID string `json:"id"`
|
|
|
|
// The email of the user. This is only present when
|
|
// the application possesses the email scope for the user.
|
|
Email string `json:"email"`
|
|
|
|
// The user's username.
|
|
Username string `json:"username"`
|
|
|
|
// The hash of the user's avatar. Use Session.UserAvatar
|
|
// to retrieve the avatar itself.
|
|
Avatar string `json:"avatar"`
|
|
|
|
// The user's chosen language option.
|
|
Locale string `json:"locale"`
|
|
|
|
// The discriminator of the user (4 numbers after name).
|
|
Discriminator string `json:"discriminator"`
|
|
|
|
// The token of the user. This is only present for
|
|
// the user represented by the current session.
|
|
Token string `json:"token"`
|
|
|
|
// Whether the user's email is verified.
|
|
Verified bool `json:"verified"`
|
|
|
|
// Whether the user has multi-factor authentication enabled.
|
|
MFAEnabled bool `json:"mfa_enabled"`
|
|
|
|
// Whether the user is a bot.
|
|
Bot bool `json:"bot"`
|
|
|
|
// The public flags on a user's account.
|
|
// This is a combination of bit masks; the presence of a certain flag can
|
|
// be checked by performing a bitwise AND between this int and the flag.
|
|
PublicFlags UserFlags `json:"public_flags"`
|
|
|
|
// The type of Nitro subscription on a user's account.
|
|
// Only available when the request is authorized via a Bearer token.
|
|
PremiumType int `json:"premium_type"`
|
|
|
|
// Whether the user is an Official Discord System user (part of the urgent message system).
|
|
System bool `json:"system"`
|
|
|
|
// The flags on a user's account.
|
|
// Only available when the request is authorized via a Bearer token.
|
|
Flags int `json:"flags"`
|
|
}
|
|
|
|
// String returns a unique identifier of the form username#discriminator
|
|
func (u *User) String() string {
|
|
return u.Username + "#" + u.Discriminator
|
|
}
|
|
|
|
// Mention return a string which mentions the user
|
|
func (u *User) Mention() string {
|
|
return "<@" + u.ID + ">"
|
|
}
|
|
|
|
// AvatarURL returns a URL to the user's avatar.
|
|
// size: The size of the user's avatar as a power of two
|
|
// if size is an empty string, no size parameter will
|
|
// be added to the URL.
|
|
func (u *User) AvatarURL(size string) string {
|
|
var URL string
|
|
if u.Avatar == "" {
|
|
URL = EndpointDefaultUserAvatar(u.Discriminator)
|
|
} else if strings.HasPrefix(u.Avatar, "a_") {
|
|
URL = EndpointUserAvatarAnimated(u.ID, u.Avatar)
|
|
} else {
|
|
URL = EndpointUserAvatar(u.ID, u.Avatar)
|
|
}
|
|
|
|
if size != "" {
|
|
return URL + "?size=" + size
|
|
}
|
|
return URL
|
|
}
|