aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/bwmarrin/discordgo/structs.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/bwmarrin/discordgo/structs.go')
-rw-r--r--vendor/github.com/bwmarrin/discordgo/structs.go1235
1 files changed, 967 insertions, 268 deletions
diff --git a/vendor/github.com/bwmarrin/discordgo/structs.go b/vendor/github.com/bwmarrin/discordgo/structs.go
index eb84ea8..3a92c9f 100644
--- a/vendor/github.com/bwmarrin/discordgo/structs.go
+++ b/vendor/github.com/bwmarrin/discordgo/structs.go
@@ -16,6 +16,7 @@ import (
"fmt"
"math"
"net/http"
+ "regexp"
"strings"
"sync"
"time"
@@ -94,7 +95,7 @@ type Session struct {
// The user agent used for REST APIs
UserAgent string
- // Stores the last HeartbeatAck that was recieved (in UTC)
+ // Stores the last HeartbeatAck that was received (in UTC)
LastHeartbeatAck time.Time
// Stores the last Heartbeat sent (in UTC)
@@ -127,6 +128,28 @@ type Session struct {
wsMutex sync.Mutex
}
+// Application stores values for a Discord Application
+type Application struct {
+ ID string `json:"id,omitempty"`
+ Name string `json:"name"`
+ Icon string `json:"icon,omitempty"`
+ Description string `json:"description,omitempty"`
+ RPCOrigins []string `json:"rpc_origins,omitempty"`
+ BotPublic bool `json:"bot_public,omitempty"`
+ BotRequireCodeGrant bool `json:"bot_require_code_grant,omitempty"`
+ TermsOfServiceURL string `json:"terms_of_service_url"`
+ PrivacyProxyURL string `json:"privacy_policy_url"`
+ Owner *User `json:"owner"`
+ Summary string `json:"summary"`
+ VerifyKey string `json:"verify_key"`
+ Team *Team `json:"team"`
+ GuildID string `json:"guild_id"`
+ PrimarySKUID string `json:"primary_sku_id"`
+ Slug string `json:"slug"`
+ CoverImage string `json:"cover_image"`
+ Flags int `json:"flags,omitempty"`
+}
+
// UserConnection is a Connection returned from the UserConnections endpoint
type UserConnection struct {
ID string `json:"id"`
@@ -149,17 +172,17 @@ type Integration struct {
ExpireGracePeriod int `json:"expire_grace_period"`
User *User `json:"user"`
Account IntegrationAccount `json:"account"`
- SyncedAt Timestamp `json:"synced_at"`
+ SyncedAt time.Time `json:"synced_at"`
}
-//ExpireBehavior of Integration
+// ExpireBehavior of Integration
// https://discord.com/developers/docs/resources/guild#integration-object-integration-expire-behaviors
type ExpireBehavior int
// Block of valid ExpireBehaviors
const (
- ExpireBehaviorRemoveRole ExpireBehavior = iota
- ExpireBehaviorKick
+ ExpireBehaviorRemoveRole ExpireBehavior = 0
+ ExpireBehaviorKick ExpireBehavior = 1
)
// IntegrationAccount is integration account information
@@ -190,48 +213,53 @@ type ICEServer struct {
Credential string `json:"credential"`
}
+// InviteTargetType indicates the type of target of an invite
+// https://discord.com/developers/docs/resources/invite#invite-object-invite-target-types
+type InviteTargetType uint8
+
+// Invite target types
+const (
+ InviteTargetStream InviteTargetType = 1
+ InviteTargetEmbeddedAppliction InviteTargetType = 2
+)
+
// A Invite stores all data related to a specific Discord Guild or Channel invite.
type Invite struct {
- Guild *Guild `json:"guild"`
- Channel *Channel `json:"channel"`
- Inviter *User `json:"inviter"`
- Code string `json:"code"`
- CreatedAt Timestamp `json:"created_at"`
- MaxAge int `json:"max_age"`
- Uses int `json:"uses"`
- MaxUses int `json:"max_uses"`
- Revoked bool `json:"revoked"`
- Temporary bool `json:"temporary"`
- Unique bool `json:"unique"`
- TargetUser *User `json:"target_user"`
- TargetUserType TargetUserType `json:"target_user_type"`
+ Guild *Guild `json:"guild"`
+ Channel *Channel `json:"channel"`
+ Inviter *User `json:"inviter"`
+ Code string `json:"code"`
+ CreatedAt time.Time `json:"created_at"`
+ MaxAge int `json:"max_age"`
+ Uses int `json:"uses"`
+ MaxUses int `json:"max_uses"`
+ Revoked bool `json:"revoked"`
+ Temporary bool `json:"temporary"`
+ Unique bool `json:"unique"`
+ TargetUser *User `json:"target_user"`
+ TargetType InviteTargetType `json:"target_type"`
+ TargetApplication *Application `json:"target_application"`
// will only be filled when using InviteWithCounts
ApproximatePresenceCount int `json:"approximate_presence_count"`
ApproximateMemberCount int `json:"approximate_member_count"`
}
-// TargetUserType is the type of the target user
-// https://discord.com/developers/docs/resources/invite#invite-object-target-user-types
-type TargetUserType int
-
-// Block contains known TargetUserType values
-const (
- TargetUserTypeStream TargetUserType = iota
-)
-
// ChannelType is the type of a Channel
type ChannelType int
// Block contains known ChannelType values
const (
- ChannelTypeGuildText ChannelType = iota
- ChannelTypeDM
- ChannelTypeGuildVoice
- ChannelTypeGroupDM
- ChannelTypeGuildCategory
- ChannelTypeGuildNews
- ChannelTypeGuildStore
+ ChannelTypeGuildText ChannelType = 0
+ ChannelTypeDM ChannelType = 1
+ ChannelTypeGuildVoice ChannelType = 2
+ ChannelTypeGroupDM ChannelType = 3
+ ChannelTypeGuildCategory ChannelType = 4
+ ChannelTypeGuildNews ChannelType = 5
+ ChannelTypeGuildStore ChannelType = 6
+ ChannelTypeGuildNewsThread ChannelType = 10
+ ChannelTypeGuildPublicThread ChannelType = 11
+ ChannelTypeGuildPrivateThread ChannelType = 12
)
// A Channel holds all data related to an individual Discord channel.
@@ -257,8 +285,13 @@ type Channel struct {
LastMessageID string `json:"last_message_id"`
// The timestamp of the last pinned message in the channel.
- // Empty if the channel has no pinned messages.
- LastPinTimestamp Timestamp `json:"last_pin_timestamp"`
+ // nil if the channel has no pinned messages.
+ LastPinTimestamp *time.Time `json:"last_pin_timestamp"`
+
+ // An approximate count of messages in a thread, stops counting at 50
+ MessageCount int `json:"message_count"`
+ // An approximate count of users in a thread, stops counting at 50
+ MemberCount int `json:"member_count"`
// Whether the channel is marked as NSFW.
NSFW bool `json:"nsfw"`
@@ -285,18 +318,26 @@ type Channel struct {
// The user limit of the voice channel.
UserLimit int `json:"user_limit"`
- // The ID of the parent channel, if the channel is under a category
+ // The ID of the parent channel, if the channel is under a category. For threads - id of the channel thread was created in.
ParentID string `json:"parent_id"`
- // Amount of seconds a user has to wait before sending another message (0-21600)
+ // Amount of seconds a user has to wait before sending another message or creating another thread (0-21600)
// bots, as well as users with the permission manage_messages or manage_channel, are unaffected
RateLimitPerUser int `json:"rate_limit_per_user"`
- // ID of the DM creator Zeroed if guild channel
+ // ID of the creator of the group DM or thread
OwnerID string `json:"owner_id"`
// ApplicationID of the DM creator Zeroed if guild channel or not a bot user
ApplicationID string `json:"application_id"`
+
+ // Thread-specific fields not needed by other channels
+ ThreadMetadata *ThreadMetadata `json:"thread_metadata,omitempty"`
+ // Thread member object for the current user, if they have joined the thread, only included on certain API endpoints
+ Member *ThreadMember `json:"thread_member"`
+
+ // All thread members. State channels only.
+ Members []*ThreadMember `json:"-"`
}
// Mention returns a string which mentions the channel
@@ -304,6 +345,11 @@ func (c *Channel) Mention() string {
return fmt.Sprintf("<#%s>", c.ID)
}
+// IsThread is a helper function to determine if channel is a thread or not
+func (c *Channel) IsThread() bool {
+ return c.Type == ChannelTypeGuildPublicThread || c.Type == ChannelTypeGuildPrivateThread || c.Type == ChannelTypeGuildNewsThread
+}
+
// A ChannelEdit holds Channel Field data for a channel edit.
type ChannelEdit struct {
Name string `json:"name,omitempty"`
@@ -315,6 +361,13 @@ type ChannelEdit struct {
PermissionOverwrites []*PermissionOverwrite `json:"permission_overwrites,omitempty"`
ParentID string `json:"parent_id,omitempty"`
RateLimitPerUser int `json:"rate_limit_per_user,omitempty"`
+
+ // NOTE: threads only
+
+ Archived bool `json:"archived,omitempty"`
+ AutoArchiveDuration int `json:"auto_archive_duration,omitempty"`
+ Locked bool `json:"locked,bool"`
+ Invitable bool `json:"invitable,omitempty"`
}
// A ChannelFollow holds data returned after following a news channel
@@ -329,8 +382,8 @@ type PermissionOverwriteType int
// The possible permission overwrite types.
const (
- PermissionOverwriteTypeRole PermissionOverwriteType = iota
- PermissionOverwriteTypeMember
+ PermissionOverwriteTypeRole PermissionOverwriteType = 0
+ PermissionOverwriteTypeMember PermissionOverwriteType = 1
)
// A PermissionOverwrite holds permission overwrite data for a Channel
@@ -341,6 +394,56 @@ type PermissionOverwrite struct {
Allow int64 `json:"allow,string"`
}
+// ThreadStart stores all parameters you can use with MessageThreadStartComplex or ThreadStartComplex
+type ThreadStart struct {
+ Name string `json:"name"`
+ AutoArchiveDuration int `json:"auto_archive_duration,omitempty"`
+ Type ChannelType `json:"type,omitempty"`
+ Invitable bool `json:"invitable"`
+ RateLimitPerUser int `json:"rate_limit_per_user,omitempty"`
+}
+
+// ThreadMetadata contains a number of thread-specific channel fields that are not needed by other channel types.
+type ThreadMetadata struct {
+ // Whether the thread is archived
+ Archived bool `json:"archived"`
+ // Duration in minutes to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080
+ AutoArchiveDuration int `json:"auto_archive_duration"`
+ // Timestamp when the thread's archive status was last changed, used for calculating recent activity
+ ArchiveTimestamp time.Time `json:"archive_timestamp"`
+ // Whether the thread is locked; when a thread is locked, only users with MANAGE_THREADS can unarchive it
+ Locked bool `json:"locked"`
+ // Whether non-moderators can add other non-moderators to a thread; only available on private threads
+ Invitable bool `json:"invitable"`
+}
+
+// ThreadMember is used to indicate whether a user has joined a thread or not.
+// NOTE: ID and UserID are empty (omitted) on the member sent within each thread in the GUILD_CREATE event.
+type ThreadMember struct {
+ // The id of the thread
+ ID string `json:"id,omitempty"`
+ // The id of the user
+ UserID string `json:"user_id,omitempty"`
+ // The time the current user last joined the thread
+ JoinTimestamp time.Time `json:"join_timestamp"`
+ // Any user-thread settings, currently only used for notifications
+ Flags int
+}
+
+// ThreadsList represents a list of threads alongisde with thread member objects for the current user.
+type ThreadsList struct {
+ Threads []*Channel `json:"threads"`
+ Members []*ThreadMember `json:"members"`
+ HasMore bool `json:"has_more"`
+}
+
+// AddedThreadMember holds information about the user who was added to the thread
+type AddedThreadMember struct {
+ *ThreadMember
+ Member *Member `json:"member"`
+ Presence *Presence `json:"presence"`
+}
+
// Emoji struct holds data related to Emoji's
type Emoji struct {
ID string `json:"id"`
@@ -353,6 +456,11 @@ type Emoji struct {
Available bool `json:"available"`
}
+// EmojiRegex is the regex used to find and identify emojis in messages
+var (
+ EmojiRegex = regexp.MustCompile(`<(a|):[A-z0-9_~]+:[0-9]{18}>`)
+)
+
// MessageFormat returns a correctly formatted Emoji for use in Message content and embeds
func (e *Emoji) MessageFormat() string {
if e.ID != "" && e.Name != "" {
@@ -377,16 +485,61 @@ func (e *Emoji) APIName() string {
return e.ID
}
+// StickerFormat is the file format of the Sticker.
+type StickerFormat int
+
+// Defines all known Sticker types.
+const (
+ StickerFormatTypePNG StickerFormat = 1
+ StickerFormatTypeAPNG StickerFormat = 2
+ StickerFormatTypeLottie StickerFormat = 3
+)
+
+// StickerType is the type of sticker.
+type StickerType int
+
+// Defines Sticker types.
+const (
+ StickerTypeStandard StickerType = 1
+ StickerTypeGuild StickerType = 2
+)
+
+// Sticker represents a sticker object that can be sent in a Message.
+type Sticker struct {
+ ID string `json:"id"`
+ PackID string `json:"pack_id"`
+ Name string `json:"name"`
+ Description string `json:"description"`
+ Tags string `json:"tags"`
+ Type StickerType `json:"type"`
+ FormatType StickerFormat `json:"format_type"`
+ Available bool `json:"available"`
+ GuildID string `json:"guild_id"`
+ User *User `json:"user"`
+ SortValue int `json:"sort_value"`
+}
+
+// StickerPack represents a pack of standard stickers.
+type StickerPack struct {
+ ID string `json:"id"`
+ Stickers []*Sticker `json:"stickers"`
+ Name string `json:"name"`
+ SKUID string `json:"sku_id"`
+ CoverStickerID string `json:"cover_sticker_id"`
+ Description string `json:"description"`
+ BannerAssetID string `json:"banner_asset_id"`
+}
+
// VerificationLevel type definition
type VerificationLevel int
// Constants for VerificationLevel levels from 0 to 4 inclusive
const (
- VerificationLevelNone VerificationLevel = iota
- VerificationLevelLow
- VerificationLevelMedium
- VerificationLevelHigh
- VerificationLevelVeryHigh
+ VerificationLevelNone VerificationLevel = 0
+ VerificationLevelLow VerificationLevel = 1
+ VerificationLevelMedium VerificationLevel = 2
+ VerificationLevelHigh VerificationLevel = 3
+ VerificationLevelVeryHigh VerificationLevel = 4
)
// ExplicitContentFilterLevel type definition
@@ -394,9 +547,9 @@ type ExplicitContentFilterLevel int
// Constants for ExplicitContentFilterLevel levels from 0 to 2 inclusive
const (
- ExplicitContentFilterDisabled ExplicitContentFilterLevel = iota
- ExplicitContentFilterMembersWithoutRoles
- ExplicitContentFilterAllMembers
+ ExplicitContentFilterDisabled ExplicitContentFilterLevel = 0
+ ExplicitContentFilterMembersWithoutRoles ExplicitContentFilterLevel = 1
+ ExplicitContentFilterAllMembers ExplicitContentFilterLevel = 2
)
// MfaLevel type definition
@@ -404,8 +557,8 @@ type MfaLevel int
// Constants for MfaLevel levels from 0 to 1 inclusive
const (
- MfaLevelNone MfaLevel = iota
- MfaLevelElevated
+ MfaLevelNone MfaLevel = 0
+ MfaLevelElevated MfaLevel = 1
)
// PremiumTier type definition
@@ -413,10 +566,10 @@ type PremiumTier int
// Constants for PremiumTier levels from 0 to 3 inclusive
const (
- PremiumTierNone PremiumTier = iota
- PremiumTier1
- PremiumTier2
- PremiumTier3
+ PremiumTierNone PremiumTier = 0
+ PremiumTier1 PremiumTier = 1
+ PremiumTier2 PremiumTier = 2
+ PremiumTier3 PremiumTier = 3
)
// A Guild holds all data related to a specific Discord Guild. Guilds are also
@@ -447,7 +600,7 @@ type Guild struct {
// The time at which the current user joined the guild.
// This field is only present in GUILD_CREATE events and websocket
// update events, and thus is only present in state-cached guilds.
- JoinedAt Timestamp `json:"joined_at"`
+ JoinedAt time.Time `json:"joined_at"`
// The hash of the guild's discovery splash.
DiscoverySplash string `json:"discovery_splash"`
@@ -480,6 +633,9 @@ type Guild struct {
// A list of the custom emojis present in the guild.
Emojis []*Emoji `json:"emojis"`
+ // A list of the custom stickers present in the guild.
+ Stickers []*Sticker `json:"stickers"`
+
// A list of the members in the guild.
// This field is only present in GUILD_CREATE events and websocket
// update events, and thus is only present in state-cached guilds.
@@ -501,6 +657,11 @@ type Guild struct {
// update events, and thus is only present in state-cached guilds.
Channels []*Channel `json:"channels"`
+ // A list of all active threads in the guild that current user has permission to view
+ // This field is only present in GUILD_CREATE events and websocket
+ // update events and thus is only present in state-cached guilds.
+ Threads []*Channel `json:"threads"`
+
// A list of voice states for the guild.
// This field is only present in GUILD_CREATE events and websocket
// update events, and thus is only present in state-cached guilds.
@@ -572,14 +733,227 @@ type Guild struct {
Permissions int64 `json:"permissions,string"`
}
+// A GuildPreview holds data related to a specific public Discord Guild, even if the user is not in the guild.
+type GuildPreview struct {
+ // The ID of the guild.
+ ID string `json:"id"`
+
+ // The name of the guild. (2–100 characters)
+ Name string `json:"name"`
+
+ // The hash of the guild's icon. Use Session.GuildIcon
+ // to retrieve the icon itself.
+ Icon string `json:"icon"`
+
+ // The hash of the guild's splash.
+ Splash string `json:"splash"`
+
+ // The hash of the guild's discovery splash.
+ DiscoverySplash string `json:"discovery_splash"`
+
+ // A list of the custom emojis present in the guild.
+ Emojis []*Emoji `json:"emojis"`
+
+ // The list of enabled guild features
+ Features []string `json:"features"`
+
+ // Approximate number of members in this guild, returned from the GET /guild/<id> endpoint when with_counts is true
+ ApproximateMemberCount int `json:"approximate_member_count"`
+
+ // Approximate number of non-offline members in this guild, returned from the GET /guild/<id> endpoint when with_counts is true
+ ApproximatePresenceCount int `json:"approximate_presence_count"`
+
+ // the description for the guild
+ Description string `json:"description"`
+}
+
+// GuildScheduledEvent is a representation of a scheduled event in a guild. Only for retrieval of the data.
+// https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event
+type GuildScheduledEvent struct {
+ // The ID of the scheduled event
+ ID string `json:"id"`
+ // The guild id which the scheduled event belongs to
+ GuildID string `json:"guild_id"`
+ // The channel id in which the scheduled event will be hosted, or null if scheduled entity type is EXTERNAL
+ ChannelID string `json:"channel_id"`
+ // The id of the user that created the scheduled event
+ CreatorID string `json:"creator_id"`
+ // The name of the scheduled event (1-100 characters)
+ Name string `json:"name"`
+ // The description of the scheduled event (1-1000 characters)
+ Description string `json:"description"`
+ // The time the scheduled event will start
+ ScheduledStartTime time.Time `json:"scheduled_start_time"`
+ // The time the scheduled event will end, required only when entity_type is EXTERNAL
+ ScheduledEndTime *time.Time `json:"scheduled_end_time"`
+ // The privacy level of the scheduled event
+ PrivacyLevel GuildScheduledEventPrivacyLevel `json:"privacy_level"`
+ // The status of the scheduled event
+ Status GuildScheduledEventStatus `json:"status"`
+ // Type of the entity where event would be hosted
+ // See field requirements
+ // https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-field-requirements-by-entity-type
+ EntityType GuildScheduledEventEntityType `json:"entity_type"`
+ // The id of an entity associated with a guild scheduled event
+ EntityID string `json:"entity_id"`
+ // Additional metadata for the guild scheduled event
+ EntityMetadata GuildScheduledEventEntityMetadata `json:"entity_metadata"`
+ // The user that created the scheduled event
+ Creator *User `json:"creator"`
+ // The number of users subscribed to the scheduled event
+ UserCount int `json:"user_count"`
+ // The cover image hash of the scheduled event
+ // see https://discord.com/developers/docs/reference#image-formatting for more
+ // information about image formatting
+ Image string `json:"image"`
+}
+
+// GuildScheduledEventParams are the parameters allowed for creating or updating a scheduled event
+// https://discord.com/developers/docs/resources/guild-scheduled-event#create-guild-scheduled-event
+type GuildScheduledEventParams struct {
+ // The channel id in which the scheduled event will be hosted, or null if scheduled entity type is EXTERNAL
+ ChannelID string `json:"channel_id,omitempty"`
+ // The name of the scheduled event (1-100 characters)
+ Name string `json:"name,omitempty"`
+ // The description of the scheduled event (1-1000 characters)
+ Description string `json:"description,omitempty"`
+ // The time the scheduled event will start
+ ScheduledStartTime *time.Time `json:"scheduled_start_time,omitempty"`
+ // The time the scheduled event will end, required only when entity_type is EXTERNAL
+ ScheduledEndTime *time.Time `json:"scheduled_end_time,omitempty"`
+ // The privacy level of the scheduled event
+ PrivacyLevel GuildScheduledEventPrivacyLevel `json:"privacy_level,omitempty"`
+ // The status of the scheduled event
+ Status GuildScheduledEventStatus `json:"status,omitempty"`
+ // Type of the entity where event would be hosted
+ // See field requirements
+ // https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-field-requirements-by-entity-type
+ EntityType GuildScheduledEventEntityType `json:"entity_type,omitempty"`
+ // Additional metadata for the guild scheduled event
+ EntityMetadata *GuildScheduledEventEntityMetadata `json:"entity_metadata,omitempty"`
+ // The cover image hash of the scheduled event
+ // see https://discord.com/developers/docs/reference#image-formatting for more
+ // information about image formatting
+ Image string `json:"image,omitempty"`
+}
+
+// MarshalJSON is a helper function to marshal GuildScheduledEventParams
+func (p GuildScheduledEventParams) MarshalJSON() ([]byte, error) {
+ type guildScheduledEventParams GuildScheduledEventParams
+
+ if p.EntityType == GuildScheduledEventEntityTypeExternal && p.ChannelID == "" {
+ return json.Marshal(struct {
+ guildScheduledEventParams
+ ChannelID json.RawMessage `json:"channel_id"`
+ }{
+ guildScheduledEventParams: guildScheduledEventParams(p),
+ ChannelID: json.RawMessage("null"),
+ })
+ }
+
+ return json.Marshal(guildScheduledEventParams(p))
+}
+
+// GuildScheduledEventEntityMetadata holds additional metadata for guild scheduled event.
+type GuildScheduledEventEntityMetadata struct {
+ // location of the event (1-100 characters)
+ // required for events with 'entity_type': EXTERNAL
+ Location string `json:"location"`
+}
+
+// GuildScheduledEventPrivacyLevel is the privacy level of a scheduled event.
+// https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-privacy-level
+type GuildScheduledEventPrivacyLevel int
+
+const (
+ // GuildScheduledEventPrivacyLevelGuildOnly makes the scheduled
+ // event is only accessible to guild members
+ GuildScheduledEventPrivacyLevelGuildOnly GuildScheduledEventPrivacyLevel = 2
+)
+
+// GuildScheduledEventStatus is the status of a scheduled event
+// Valid Guild Scheduled Event Status Transitions :
+// SCHEDULED --> ACTIVE --> COMPLETED
+// SCHEDULED --> CANCELED
+// https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status
+type GuildScheduledEventStatus int
+
+const (
+ // GuildScheduledEventStatusScheduled represents the current event is in scheduled state
+ GuildScheduledEventStatusScheduled = 1
+ // GuildScheduledEventStatusActive represents the current event is in active state
+ GuildScheduledEventStatusActive = 2
+ // GuildScheduledEventStatusCompleted represents the current event is in completed state
+ GuildScheduledEventStatusCompleted = 3
+ // GuildScheduledEventStatusCanceled represents the current event is in canceled state
+ GuildScheduledEventStatusCanceled = 4
+)
+
+// GuildScheduledEventEntityType is the type of entity associated with a guild scheduled event.
+// https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types
+type GuildScheduledEventEntityType int
+
+const (
+ // GuildScheduledEventEntityTypeStageInstance represents a stage channel
+ GuildScheduledEventEntityTypeStageInstance = 1
+ // GuildScheduledEventEntityTypeVoice represents a voice channel
+ GuildScheduledEventEntityTypeVoice = 2
+ // GuildScheduledEventEntityTypeExternal represents an external event
+ GuildScheduledEventEntityTypeExternal = 3
+)
+
+// GuildScheduledEventUser is a user subscribed to a scheduled event.
+// https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-user-object
+type GuildScheduledEventUser struct {
+ GuildScheduledEventID string `json:"guild_scheduled_event_id"`
+ User *User `json:"user"`
+ Member *Member `json:"member"`
+}
+
+// A GuildTemplate represents
+type GuildTemplate struct {
+ // The unique code for the guild template
+ Code string `json:"code"`
+
+ // The name of the template
+ Name string `json:"name"`
+
+ // The description for the template
+ Description string `json:"description"`
+
+ // The number of times this template has been used
+ UsageCount string `json:"usage_count"`
+
+ // The ID of the user who created the template
+ CreatorID string `json:"creator_id"`
+
+ // The user who created the template
+ Creator *User `json:"creator"`
+
+ // The timestamp of when the template was created
+ CreatedAt time.Time `json:"created_at"`
+
+ // The timestamp of when the template was last synced
+ UpdatedAt time.Time `json:"updated_at"`
+
+ // The ID of the guild the template was based on
+ SourceGuildID string `json:"source_guild_id"`
+
+ // The guild 'snapshot' this template contains
+ SerializedSourceGuild *Guild `json:"serialized_source_guild"`
+
+ // Whether the template has unsynced changes
+ IsDirty bool `json:"is_dirty"`
+}
+
// MessageNotifications is the notification level for a guild
// https://discord.com/developers/docs/resources/guild#guild-object-default-message-notification-level
type MessageNotifications int
// Block containing known MessageNotifications values
const (
- MessageNotificationsAllMessages MessageNotifications = iota
- MessageNotificationsOnlyMentions
+ MessageNotificationsAllMessages MessageNotifications = 0
+ MessageNotificationsOnlyMentions MessageNotifications = 1
)
// SystemChannelFlag is the type of flags in the system channel (see SystemChannelFlag* consts)
@@ -588,8 +962,8 @@ type SystemChannelFlag int
// Block containing known SystemChannelFlag values
const (
- SystemChannelFlagsSuppressJoin SystemChannelFlag = 1 << iota
- SystemChannelFlagsSuppressPremium
+ SystemChannelFlagsSuppressJoin SystemChannelFlag = 1 << 0
+ SystemChannelFlagsSuppressPremium SystemChannelFlag = 1 << 1
)
// IconURL returns a URL to the guild's icon.
@@ -605,6 +979,14 @@ func (g *Guild) IconURL() string {
return EndpointGuildIcon(g.ID, g.Icon)
}
+// BannerURL returns a URL to the guild's banner.
+func (g *Guild) BannerURL() string {
+ if g.Banner == "" {
+ return ""
+ }
+ return EndpointGuildBanner(g.ID, g.Banner)
+}
+
// A UserGuild holds a brief version of a Guild
type UserGuild struct {
ID string `json:"id"`
@@ -734,8 +1116,8 @@ type Member struct {
// The guild ID on which the member exists.
GuildID string `json:"guild_id"`
- // The time at which the member joined the guild, in ISO8601.
- JoinedAt Timestamp `json:"joined_at"`
+ // The time at which the member joined the guild.
+ JoinedAt time.Time `json:"joined_at"`
// The nickname of the member, if they have one.
Nick string `json:"nick"`
@@ -746,6 +1128,9 @@ type Member struct {
// Whether the member is muted at a guild level.
Mute bool `json:"mute"`
+ // The hash of the avatar for the guild member, if any.
+ Avatar string `json:"avatar"`
+
// The underlying user on which the member is based.
User *User `json:"user"`
@@ -753,10 +1138,17 @@ type Member struct {
Roles []string `json:"roles"`
// When the user used their Nitro boost on the server
- PremiumSince Timestamp `json:"premium_since"`
+ PremiumSince *time.Time `json:"premium_since"`
// Is true while the member hasn't accepted the membership screen.
Pending bool `json:"pending"`
+
+ // Total permissions of the member in the channel, including overrides, returned when in the interaction object.
+ Permissions int64 `json:"permissions,string"`
+
+ // The time at which the member's timeout will expire.
+ // Time in the past or nil if the user is not timed out.
+ CommunicationDisabledUntil *time.Time `json:"communication_disabled_until"`
}
// Mention creates a member mention
@@ -764,6 +1156,20 @@ func (m *Member) Mention() string {
return "<@!" + m.User.ID + ">"
}
+// AvatarURL returns the URL of the member'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 (m *Member) AvatarURL(size string) string {
+ if m.Avatar == "" {
+ return m.User.AvatarURL(size)
+ }
+ // The default/empty avatar case should be handled by the above condition
+ return avatarURL(m.Avatar, "", EndpointGuildMemberAvatar(m.GuildID, m.User.ID, m.Avatar),
+ EndpointGuildMemberAvatarAnimated(m.GuildID, m.User.ID, m.Avatar), size)
+
+}
+
// A Settings stores data for a specific users Discord client settings.
type Settings struct {
RenderEmbeds bool `json:"render_embeds"`
@@ -901,53 +1307,148 @@ type AuditLogChangeKey string
// Block of valid AuditLogChangeKey
const (
- AuditLogChangeKeyName AuditLogChangeKey = "name"
- AuditLogChangeKeyIconHash AuditLogChangeKey = "icon_hash"
- AuditLogChangeKeySplashHash AuditLogChangeKey = "splash_hash"
- AuditLogChangeKeyOwnerID AuditLogChangeKey = "owner_id"
- AuditLogChangeKeyRegion AuditLogChangeKey = "region"
- AuditLogChangeKeyAfkChannelID AuditLogChangeKey = "afk_channel_id"
- AuditLogChangeKeyAfkTimeout AuditLogChangeKey = "afk_timeout"
- AuditLogChangeKeyMfaLevel AuditLogChangeKey = "mfa_level"
- AuditLogChangeKeyVerificationLevel AuditLogChangeKey = "verification_level"
- AuditLogChangeKeyExplicitContentFilter AuditLogChangeKey = "explicit_content_filter"
+ // AuditLogChangeKeyAfkChannelID is sent when afk channel changed (snowflake) - guild
+ AuditLogChangeKeyAfkChannelID AuditLogChangeKey = "afk_channel_id"
+ // AuditLogChangeKeyAfkTimeout is sent when afk timeout duration changed (int) - guild
+ AuditLogChangeKeyAfkTimeout AuditLogChangeKey = "afk_timeout"
+ // AuditLogChangeKeyAllow is sent when a permission on a text or voice channel was allowed for a role (string) - role
+ AuditLogChangeKeyAllow AuditLogChangeKey = "allow"
+ // AudirChangeKeyApplicationID is sent when application id of the added or removed webhook or bot (snowflake) - channel
+ AuditLogChangeKeyApplicationID AuditLogChangeKey = "application_id"
+ // AuditLogChangeKeyArchived is sent when thread was archived/unarchived (bool) - thread
+ AuditLogChangeKeyArchived AuditLogChangeKey = "archived"
+ // AuditLogChangeKeyAsset is sent when asset is changed (string) - sticker
+ AuditLogChangeKeyAsset AuditLogChangeKey = "asset"
+ // AuditLogChangeKeyAutoArchiveDuration is sent when auto archive duration changed (int) - thread
+ AuditLogChangeKeyAutoArchiveDuration AuditLogChangeKey = "auto_archive_duration"
+ // AuditLogChangeKeyAvailable is sent when availability of sticker changed (bool) - sticker
+ AuditLogChangeKeyAvailable AuditLogChangeKey = "available"
+ // AuditLogChangeKeyAvatarHash is sent when user avatar changed (string) - user
+ AuditLogChangeKeyAvatarHash AuditLogChangeKey = "avatar_hash"
+ // AuditLogChangeKeyBannerHash is sent when guild banner changed (string) - guild
+ AuditLogChangeKeyBannerHash AuditLogChangeKey = "banner_hash"
+ // AuditLogChangeKeyBitrate is sent when voice channel bitrate changed (int) - channel
+ AuditLogChangeKeyBitrate AuditLogChangeKey = "bitrate"
+ // AuditLogChangeKeyChannelID is sent when channel for invite code or guild scheduled event changed (snowflake) - invite or guild scheduled event
+ AuditLogChangeKeyChannelID AuditLogChangeKey = "channel_id"
+ // AuditLogChangeKeyCode is sent when invite code changed (string) - invite
+ AuditLogChangeKeyCode AuditLogChangeKey = "code"
+ // AuditLogChangeKeyColor is sent when role color changed (int) - role
+ AuditLogChangeKeyColor AuditLogChangeKey = "color"
+ // AuditLogChangeKeyCommunicationDisabledUntil is sent when member timeout state changed (ISO8601 timestamp) - member
+ AuditLogChangeKeyCommunicationDisabledUntil AuditLogChangeKey = "communication_disabled_until"
+ // AuditLogChangeKeyDeaf is sent when user server deafened/undeafened (bool) - member
+ AuditLogChangeKeyDeaf AuditLogChangeKey = "deaf"
+ // AuditLogChangeKeyDefaultAutoArchiveDuration is sent when default auto archive duration for newly created threads changed (int) - channel
+ AuditLogChangeKeyDefaultAutoArchiveDuration AuditLogChangeKey = "default_auto_archive_duration"
+ // AuditLogChangeKeyDefaultMessageNotification is sent when default message notification level changed (int) - guild
AuditLogChangeKeyDefaultMessageNotification AuditLogChangeKey = "default_message_notifications"
- AuditLogChangeKeyVanityURLCode AuditLogChangeKey = "vanity_url_code"
- AuditLogChangeKeyRoleAdd AuditLogChangeKey = "$add"
- AuditLogChangeKeyRoleRemove AuditLogChangeKey = "$remove"
- AuditLogChangeKeyPruneDeleteDays AuditLogChangeKey = "prune_delete_days"
- AuditLogChangeKeyWidgetEnabled AuditLogChangeKey = "widget_enabled"
- AuditLogChangeKeyWidgetChannelID AuditLogChangeKey = "widget_channel_id"
- AuditLogChangeKeySystemChannelID AuditLogChangeKey = "system_channel_id"
- AuditLogChangeKeyPosition AuditLogChangeKey = "position"
- AuditLogChangeKeyTopic AuditLogChangeKey = "topic"
- AuditLogChangeKeyBitrate AuditLogChangeKey = "bitrate"
- AuditLogChangeKeyPermissionOverwrite AuditLogChangeKey = "permission_overwrites"
- AuditLogChangeKeyNSFW AuditLogChangeKey = "nsfw"
- AuditLogChangeKeyApplicationID AuditLogChangeKey = "application_id"
- AuditLogChangeKeyRateLimitPerUser AuditLogChangeKey = "rate_limit_per_user"
- AuditLogChangeKeyPermissions AuditLogChangeKey = "permissions"
- AuditLogChangeKeyColor AuditLogChangeKey = "color"
- AuditLogChangeKeyHoist AuditLogChangeKey = "hoist"
- AuditLogChangeKeyMentionable AuditLogChangeKey = "mentionable"
- AuditLogChangeKeyAllow AuditLogChangeKey = "allow"
- AuditLogChangeKeyDeny AuditLogChangeKey = "deny"
- AuditLogChangeKeyCode AuditLogChangeKey = "code"
- AuditLogChangeKeyChannelID AuditLogChangeKey = "channel_id"
- AuditLogChangeKeyInviterID AuditLogChangeKey = "inviter_id"
- AuditLogChangeKeyMaxUses AuditLogChangeKey = "max_uses"
- AuditLogChangeKeyUses AuditLogChangeKey = "uses"
- AuditLogChangeKeyMaxAge AuditLogChangeKey = "max_age"
- AuditLogChangeKeyTempoary AuditLogChangeKey = "temporary"
- AuditLogChangeKeyDeaf AuditLogChangeKey = "deaf"
- AuditLogChangeKeyMute AuditLogChangeKey = "mute"
- AuditLogChangeKeyNick AuditLogChangeKey = "nick"
- AuditLogChangeKeyAvatarHash AuditLogChangeKey = "avatar_hash"
- AuditLogChangeKeyID AuditLogChangeKey = "id"
- AuditLogChangeKeyType AuditLogChangeKey = "type"
- AuditLogChangeKeyEnableEmoticons AuditLogChangeKey = "enable_emoticons"
- AuditLogChangeKeyExpireBehavior AuditLogChangeKey = "expire_behavior"
- AuditLogChangeKeyExpireGracePeriod AuditLogChangeKey = "expire_grace_period"
+ // AuditLogChangeKeyDeny is sent when a permission on a text or voice channel was denied for a role (string) - role
+ AuditLogChangeKeyDeny AuditLogChangeKey = "deny"
+ // AuditLogChangeKeyDescription is sent when description changed (string) - guild, sticker, or guild scheduled event
+ AuditLogChangeKeyDescription AuditLogChangeKey = "description"
+ // AuditLogChangeKeyDiscoverySplashHash is sent when discovery splash changed (string) - guild
+ AuditLogChangeKeyDiscoverySplashHash AuditLogChangeKey = "discovery_splash_hash"
+ // AuditLogChangeKeyEnableEmoticons is sent when integration emoticons enabled/disabled (bool) - integration
+ AuditLogChangeKeyEnableEmoticons AuditLogChangeKey = "enable_emoticons"
+ // AuditLogChangeKeyEntityType is sent when entity type of guild scheduled event was changed (int) - guild scheduled event
+ AuditLogChangeKeyEntityType AuditLogChangeKey = "entity_type"
+ // AuditLogChangeKeyExpireBehavior is sent when integration expiring subscriber behavior changed (int) - integration
+ AuditLogChangeKeyExpireBehavior AuditLogChangeKey = "expire_behavior"
+ // AuditLogChangeKeyExpireGracePeriod is sent when integration expire grace period changed (int) - integration
+ AuditLogChangeKeyExpireGracePeriod AuditLogChangeKey = "expire_grace_period"
+ // AuditLogChangeKeyExplicitContentFilter is sent when change in whose messages are scanned and deleted for explicit content in the server is made (int) - guild
+ AuditLogChangeKeyExplicitContentFilter AuditLogChangeKey = "explicit_content_filter"
+ // AuditLogChangeKeyFormatType is sent when format type of sticker changed (int - sticker format type) - sticker
+ AuditLogChangeKeyFormatType AuditLogChangeKey = "format_type"
+ // AuditLogChangeKeyGuildID is sent when guild sticker is in changed (snowflake) - sticker
+ AuditLogChangeKeyGuildID AuditLogChangeKey = "guild_id"
+ // AuditLogChangeKeyHoist is sent when role is now displayed/no longer displayed separate from online users (bool) - role
+ AuditLogChangeKeyHoist AuditLogChangeKey = "hoist"
+ // AuditLogChangeKeyIconHash is sent when icon changed (string) - guild or role
+ AuditLogChangeKeyIconHash AuditLogChangeKey = "icon_hash"
+ // AuditLogChangeKeyID is sent when the id of the changed entity - sometimes used in conjunction with other keys (snowflake) - any
+ AuditLogChangeKeyID AuditLogChangeKey = "id"
+ // AuditLogChangeKeyInvitable is sent when private thread is now invitable/uninvitable (bool) - thread
+ AuditLogChangeKeyInvitable AuditLogChangeKey = "invitable"
+ // AuditLogChangeKeyInviterID is sent when person who created invite code changed (snowflake) - invite
+ AuditLogChangeKeyInviterID AuditLogChangeKey = "inviter_id"
+ // AuditLogChangeKeyLocation is sent when channel id for guild scheduled event changed (string) - guild scheduled event
+ AuditLogChangeKeyLocation AuditLogChangeKey = "location"
+ // AuditLogChangeKeyLocked is sent when thread was locked/unlocked (bool) - thread
+ AuditLogChangeKeyLocked AuditLogChangeKey = "locked"
+ // AuditLogChangeKeyMaxAge is sent when invite code expiration time changed (int) - invite
+ AuditLogChangeKeyMaxAge AuditLogChangeKey = "max_age"
+ // AuditLogChangeKeyMaxUses is sent when max number of times invite code can be used changed (int) - invite
+ AuditLogChangeKeyMaxUses AuditLogChangeKey = "max_uses"
+ // AuditLogChangeKeyMentionable is sent when role is now mentionable/unmentionable (bool) - role
+ AuditLogChangeKeyMentionable AuditLogChangeKey = "mentionable"
+ // AuditLogChangeKeyMfaLevel is sent when two-factor auth requirement changed (int - mfa level) - guild
+ AuditLogChangeKeyMfaLevel AuditLogChangeKey = "mfa_level"
+ // AuditLogChangeKeyMute is sent when user server muted/unmuted (bool) - member
+ AuditLogChangeKeyMute AuditLogChangeKey = "mute"
+ // AuditLogChangeKeyName is sent when name changed (string) - any
+ AuditLogChangeKeyName AuditLogChangeKey = "name"
+ // AuditLogChangeKeyNick is sent when user nickname changed (string) - member
+ AuditLogChangeKeyNick AuditLogChangeKey = "nick"
+ // AuditLogChangeKeyNSFW is sent when channel nsfw restriction changed (bool) - channel
+ AuditLogChangeKeyNSFW AuditLogChangeKey = "nsfw"
+ // AuditLogChangeKeyOwnerID is sent when owner changed (snowflake) - guild
+ AuditLogChangeKeyOwnerID AuditLogChangeKey = "owner_id"
+ // AuditLogChangeKeyPermissionOverwrite is sent when permissions on a channel changed (array of channel overwrite objects) - channel
+ AuditLogChangeKeyPermissionOverwrite AuditLogChangeKey = "permission_overwrites"
+ // AuditLogChangeKeyPermissions is sent when permissions for a role changed (string) - role
+ AuditLogChangeKeyPermissions AuditLogChangeKey = "permissions"
+ // AuditLogChangeKeyPosition is sent when text or voice channel position changed (int) - channel
+ AuditLogChangeKeyPosition AuditLogChangeKey = "position"
+ // AuditLogChangeKeyPreferredLocale is sent when preferred locale changed (string) - guild
+ AuditLogChangeKeyPreferredLocale AuditLogChangeKey = "preferred_locale"
+ // AuditLogChangeKeyPrivacylevel is sent when privacy level of the stage instance changed (integer - privacy level) - stage instance or guild scheduled event
+ AuditLogChangeKeyPrivacylevel AuditLogChangeKey = "privacy_level"
+ // AuditLogChangeKeyPruneDeleteDays is sent when number of days after which inactive and role-unassigned members are kicked changed (int) - guild
+ AuditLogChangeKeyPruneDeleteDays AuditLogChangeKey = "prune_delete_days"
+ // AuditLogChangeKeyPulibUpdatesChannelID is sent when id of the public updates channel changed (snowflake) - guild
+ AuditLogChangeKeyPulibUpdatesChannelID AuditLogChangeKey = "public_updates_channel_id"
+ // AuditLogChangeKeyRateLimitPerUser is sent when amount of seconds a user has to wait before sending another message changed (int) - channel
+ AuditLogChangeKeyRateLimitPerUser AuditLogChangeKey = "rate_limit_per_user"
+ // AuditLogChangeKeyRegion is sent when region changed (string) - guild
+ AuditLogChangeKeyRegion AuditLogChangeKey = "region"
+ // AuditLogChangeKeyRulesChannelID is sent when id of the rules channel changed (snowflake) - guild
+ AuditLogChangeKeyRulesChannelID AuditLogChangeKey = "rules_channel_id"
+ // AuditLogChangeKeySplashHash is sent when invite splash page artwork changed (string) - guild
+ AuditLogChangeKeySplashHash AuditLogChangeKey = "splash_hash"
+ // AuditLogChangeKeyStatus is sent when status of guild scheduled event was changed (int - guild scheduled event status) - guild scheduled event
+ AuditLogChangeKeyStatus AuditLogChangeKey = "status"
+ // AuditLogChangeKeySystemChannelID is sent when id of the system channel changed (snowflake) - guild
+ AuditLogChangeKeySystemChannelID AuditLogChangeKey = "system_channel_id"
+ // AuditLogChangeKeyTags is sent when related emoji of sticker changed (string) - sticker
+ AuditLogChangeKeyTags AuditLogChangeKey = "tags"
+ // AuditLogChangeKeyTemporary is sent when invite code is now temporary or never expires (bool) - invite
+ AuditLogChangeKeyTemporary AuditLogChangeKey = "temporary"
+ // TODO: remove when compatibility is not required
+ AuditLogChangeKeyTempoary = AuditLogChangeKeyTemporary
+ // AuditLogChangeKeyTopic is sent when text channel topic or stage instance topic changed (string) - channel or stage instance
+ AuditLogChangeKeyTopic AuditLogChangeKey = "topic"
+ // AuditLogChangeKeyType is sent when type of entity created (int or string) - any
+ AuditLogChangeKeyType AuditLogChangeKey = "type"
+ // AuditLogChangeKeyUnicodeEmoji is sent when role unicode emoji changed (string) - role
+ AuditLogChangeKeyUnicodeEmoji AuditLogChangeKey = "unicode_emoji"
+ // AuditLogChangeKeyUserLimit is sent when new user limit in a voice channel set (int) - voice channel
+ AuditLogChangeKeyUserLimit AuditLogChangeKey = "user_limit"
+ // AuditLogChangeKeyUses is sent when number of times invite code used changed (int) - invite
+ AuditLogChangeKeyUses AuditLogChangeKey = "uses"
+ // AuditLogChangeKeyVanityURLCode is sent when guild invite vanity url changed (string) - guild
+ AuditLogChangeKeyVanityURLCode AuditLogChangeKey = "vanity_url_code"
+ // AuditLogChangeKeyVerificationLevel is sent when required verification level changed (int - verification level) - guild
+ AuditLogChangeKeyVerificationLevel AuditLogChangeKey = "verification_level"
+ // AuditLogChangeKeyWidgetChannelID is sent when channel id of the server widget changed (snowflake) - guild
+ AuditLogChangeKeyWidgetChannelID AuditLogChangeKey = "widget_channel_id"
+ // AuditLogChangeKeyWidgetEnabled is sent when server widget enabled/disabled (bool) - guild
+ AuditLogChangeKeyWidgetEnabled AuditLogChangeKey = "widget_enabled"
+ // AuditLogChangeKeyRoleAdd is sent when new role added (array of partial role objects) - guild
+ AuditLogChangeKeyRoleAdd AuditLogChangeKey = "$add"
+ // AuditLogChangeKeyRoleRemove is sent when role removed (array of partial role objects) - guild
+ AuditLogChangeKeyRoleRemove AuditLogChangeKey = "$remove"
)
// AuditLogOptions optional data for the AuditLog
@@ -994,6 +1495,9 @@ const (
AuditLogActionMemberBanRemove AuditLogAction = 23
AuditLogActionMemberUpdate AuditLogAction = 24
AuditLogActionMemberRoleUpdate AuditLogAction = 25
+ AuditLogActionMemberMove AuditLogAction = 26
+ AuditLogActionMemberDisconnect AuditLogAction = 27
+ AuditLogActionBotAdd AuditLogAction = 28
AuditLogActionRoleCreate AuditLogAction = 30
AuditLogActionRoleUpdate AuditLogAction = 31
@@ -1016,9 +1520,24 @@ const (
AuditLogActionMessagePin AuditLogAction = 74
AuditLogActionMessageUnpin AuditLogAction = 75
- AuditLogActionIntegrationCreate AuditLogAction = 80
- AuditLogActionIntegrationUpdate AuditLogAction = 81
- AuditLogActionIntegrationDelete AuditLogAction = 82
+ AuditLogActionIntegrationCreate AuditLogAction = 80
+ AuditLogActionIntegrationUpdate AuditLogAction = 81
+ AuditLogActionIntegrationDelete AuditLogAction = 82
+ AuditLogActionStageInstanceCreate AuditLogAction = 83
+ AuditLogActionStageInstanceUpdate AuditLogAction = 84
+ AuditLogActionStageInstanceDelete AuditLogAction = 85
+
+ AuditLogActionStickerCreate AuditLogAction = 90
+ AuditLogActionStickerUpdate AuditLogAction = 91
+ AuditLogActionStickerDelete AuditLogAction = 92
+
+ AuditLogGuildScheduledEventCreate AuditLogAction = 100
+ AuditLogGuildScheduledEventUpdare AuditLogAction = 101
+ AuditLogGuildScheduledEventDelete AuditLogAction = 102
+
+ AuditLogActionThreadCreate AuditLogAction = 110
+ AuditLogActionThreadUpdate AuditLogAction = 111
+ AuditLogActionThreadDelete AuditLogAction = 112
)
// A UserGuildSettingsChannelOverride stores data for a channel override for a users guild settings.
@@ -1053,42 +1572,6 @@ type APIErrorMessage struct {
Message string `json:"message"`
}
-// Webhook stores the data for a webhook.
-type Webhook struct {
- ID string `json:"id"`
- Type WebhookType `json:"type"`
- GuildID string `json:"guild_id"`
- ChannelID string `json:"channel_id"`
- User *User `json:"user"`
- Name string `json:"name"`
- Avatar string `json:"avatar"`
- Token string `json:"token"`
-
- // ApplicationID is the bot/OAuth2 application that created this webhook
- ApplicationID string `json:"application_id,omitempty"`
-}
-
-// WebhookType is the type of Webhook (see WebhookType* consts) in the Webhook struct
-// https://discord.com/developers/docs/resources/webhook#webhook-object-webhook-types
-type WebhookType int
-
-// Valid WebhookType values
-const (
- WebhookTypeIncoming WebhookType = iota
- WebhookTypeChannelFollower
-)
-
-// WebhookParams is a struct for webhook params, used in the WebhookExecute command.
-type WebhookParams struct {
- Content string `json:"content,omitempty"`
- Username string `json:"username,omitempty"`
- AvatarURL string `json:"avatar_url,omitempty"`
- TTS bool `json:"tts,omitempty"`
- File string `json:"file,omitempty"`
- Embeds []*MessageEmbed `json:"embeds,omitempty"`
- AllowedMentions *MessageAllowedMentions `json:"allowed_mentions,omitempty"`
-}
-
// MessageReaction stores the data for a message reaction.
type MessageReaction struct {
UserID string `json:"user_id"`
@@ -1100,8 +1583,17 @@ type MessageReaction struct {
// GatewayBotResponse stores the data for the gateway/bot response
type GatewayBotResponse struct {
- URL string `json:"url"`
- Shards int `json:"shards"`
+ URL string `json:"url"`
+ Shards int `json:"shards"`
+ SessionStartLimit SessionInformation `json:"session_start_limit"`
+}
+
+// SessionInformation provides the information for max concurrency sharding
+type SessionInformation struct {
+ Total int `json:"total,omitempty"`
+ Remaining int `json:"remaining,omitempty"`
+ ResetAfter int `json:"reset_after,omitempty"`
+ MaxConcurrency int `json:"max_concurrency,omitempty"`
}
// GatewayStatusUpdate is sent by the client to indicate a presence or status update
@@ -1116,9 +1608,74 @@ type GatewayStatusUpdate struct {
// Activity defines the Activity sent with GatewayStatusUpdate
// https://discord.com/developers/docs/topics/gateway#activity-object
type Activity struct {
- Name string `json:"name"`
- Type ActivityType `json:"type"`
- URL string `json:"url,omitempty"`
+ Name string `json:"name"`
+ Type ActivityType `json:"type"`
+ URL string `json:"url,omitempty"`
+ CreatedAt time.Time `json:"created_at"`
+ ApplicationID string `json:"application_id,omitempty"`
+ State string `json:"state,omitempty"`
+ Details string `json:"details,omitempty"`
+ Timestamps TimeStamps `json:"timestamps,omitempty"`
+ Emoji Emoji `json:"emoji,omitempty"`
+ Party Party `json:"party,omitempty"`
+ Assets Assets `json:"assets,omitempty"`
+ Secrets Secrets `json:"secrets,omitempty"`
+ Instance bool `json:"instance,omitempty"`
+ Flags int `json:"flags,omitempty"`
+}
+
+// UnmarshalJSON is a custom unmarshaljson to make CreatedAt a time.Time instead of an int
+func (activity *Activity) UnmarshalJSON(b []byte) error {
+ temp := struct {
+ Name string `json:"name"`
+ Type ActivityType `json:"type"`
+ URL string `json:"url,omitempty"`
+ CreatedAt int64 `json:"created_at"`
+ ApplicationID string `json:"application_id,omitempty"`
+ State string `json:"state,omitempty"`
+ Details string `json:"details,omitempty"`
+ Timestamps TimeStamps `json:"timestamps,omitempty"`
+ Emoji Emoji `json:"emoji,omitempty"`
+ Party Party `json:"party,omitempty"`
+ Assets Assets `json:"assets,omitempty"`
+ Secrets Secrets `json:"secrets,omitempty"`
+ Instance bool `json:"instance,omitempty"`
+ Flags int `json:"flags,omitempty"`
+ }{}
+ err := json.Unmarshal(b, &temp)
+ if err != nil {
+ return err
+ }
+ activity.CreatedAt = time.Unix(0, temp.CreatedAt*1000000)
+ activity.ApplicationID = temp.ApplicationID
+ activity.Assets = temp.Assets
+ activity.Details = temp.Details
+ activity.Emoji = temp.Emoji
+ activity.Flags = temp.Flags
+ activity.Instance = temp.Instance
+ activity.Name = temp.Name
+ activity.Party = temp.Party
+ activity.Secrets = temp.Secrets
+ activity.State = temp.State
+ activity.Timestamps = temp.Timestamps
+ activity.Type = temp.Type
+ activity.URL = temp.URL
+ return nil
+}
+
+// Party defines the Party field in the Activity struct
+// https://discord.com/developers/docs/topics/gateway#activity-object
+type Party struct {
+ ID string `json:"id,omitempty"`
+ Size []int `json:"size,omitempty"`
+}
+
+// Secrets defines the Secrets field for the Activity struct
+// https://discord.com/developers/docs/topics/gateway#activity-object
+type Secrets struct {
+ Join string `json:"join,omitempty"`
+ Spectate string `json:"spectate,omitempty"`
+ Match string `json:"match,omitempty"`
}
// ActivityType is the type of Activity (see ActivityType* consts) in the Activity struct
@@ -1127,11 +1684,12 @@ type ActivityType int
// Valid ActivityType values
const (
- ActivityTypeGame ActivityType = iota
- ActivityTypeStreaming
- ActivityTypeListening
- // ActivityTypeWatching // not valid in this use case?
- ActivityTypeCustom = 4
+ ActivityTypeGame ActivityType = 0
+ ActivityTypeStreaming ActivityType = 1
+ ActivityTypeListening ActivityType = 2
+ ActivityTypeWatching ActivityType = 3
+ ActivityTypeCustom ActivityType = 4
+ ActivityTypeCompeting ActivityType = 5
)
// Identify is sent during initial handshake with the discord gateway.
@@ -1160,48 +1718,57 @@ type IdentifyProperties struct {
// Constants for the different bit offsets of text channel permissions
const (
// Deprecated: PermissionReadMessages has been replaced with PermissionViewChannel for text and voice channels
- PermissionReadMessages = 1 << (iota + 10)
- PermissionSendMessages
- PermissionSendTTSMessages
- PermissionManageMessages
- PermissionEmbedLinks
- PermissionAttachFiles
- PermissionReadMessageHistory
- PermissionMentionEveryone
- PermissionUseExternalEmojis
+ PermissionReadMessages = 0x0000000000000400
+ PermissionSendMessages = 0x0000000000000800
+ PermissionSendTTSMessages = 0x0000000000001000
+ PermissionManageMessages = 0x0000000000002000
+ PermissionEmbedLinks = 0x0000000000004000
+ PermissionAttachFiles = 0x0000000000008000
+ PermissionReadMessageHistory = 0x0000000000010000
+ PermissionMentionEveryone = 0x0000000000020000
+ PermissionUseExternalEmojis = 0x0000000000040000
+ PermissionUseSlashCommands = 0x0000000080000000
+ PermissionManageThreads = 0x0000000400000000
+ PermissionCreatePublicThreads = 0x0000000800000000
+ PermissionCreatePrivateThreads = 0x0000001000000000
+ PermissionSendMessagesInThreads = 0x0000004000000000
)
// Constants for the different bit offsets of voice permissions
const (
- PermissionVoiceConnect = 1 << (iota + 20)
- PermissionVoiceSpeak
- PermissionVoiceMuteMembers
- PermissionVoiceDeafenMembers
- PermissionVoiceMoveMembers
- PermissionVoiceUseVAD
- PermissionVoicePrioritySpeaker = 1 << (iota + 2)
+ PermissionVoicePrioritySpeaker = 0x0000000000000100
+ PermissionVoiceStreamVideo = 0x0000000000000200
+ PermissionVoiceConnect = 0x0000000000100000
+ PermissionVoiceSpeak = 0x0000000000200000
+ PermissionVoiceMuteMembers = 0x0000000000400000
+ PermissionVoiceDeafenMembers = 0x0000000000800000
+ PermissionVoiceMoveMembers = 0x0000000001000000
+ PermissionVoiceUseVAD = 0x0000000002000000
+ PermissionVoiceRequestToSpeak = 0x0000000100000000
)
// Constants for general management.
const (
- PermissionChangeNickname = 1 << (iota + 26)
- PermissionManageNicknames
- PermissionManageRoles
- PermissionManageWebhooks
- PermissionManageEmojis
+ PermissionChangeNickname = 0x0000000004000000
+ PermissionManageNicknames = 0x0000000008000000
+ PermissionManageRoles = 0x0000000010000000
+ PermissionManageWebhooks = 0x0000000020000000
+ PermissionManageEmojis = 0x0000000040000000
)
// Constants for the different bit offsets of general permissions
const (
- PermissionCreateInstantInvite = 1 << iota
- PermissionKickMembers
- PermissionBanMembers
- PermissionAdministrator
- PermissionManageChannels
- PermissionManageServer
- PermissionAddReactions
- PermissionViewAuditLogs
- PermissionViewChannel = 1 << (iota + 2)
+ PermissionCreateInstantInvite = 0x0000000000000001
+ PermissionKickMembers = 0x0000000000000002
+ PermissionBanMembers = 0x0000000000000004
+ PermissionAdministrator = 0x0000000000000008
+ PermissionManageChannels = 0x0000000000000010
+ PermissionManageServer = 0x0000000000000020
+ PermissionAddReactions = 0x0000000000000040
+ PermissionViewAuditLogs = 0x0000000000000080
+ PermissionViewChannel = 0x0000000000000400
+ PermissionViewGuildInsights = 0x0000000000080000
+ PermissionModerateMembers = 0x0000010000000000
PermissionAllText = PermissionViewChannel |
PermissionSendMessages |
@@ -1237,57 +1804,163 @@ const (
// Block contains Discord JSON Error Response codes
const (
- ErrCodeUnknownAccount = 10001
- ErrCodeUnknownApplication = 10002
- ErrCodeUnknownChannel = 10003
- ErrCodeUnknownGuild = 10004
- ErrCodeUnknownIntegration = 10005
- ErrCodeUnknownInvite = 10006
- ErrCodeUnknownMember = 10007
- ErrCodeUnknownMessage = 10008
- ErrCodeUnknownOverwrite = 10009
- ErrCodeUnknownProvider = 10010
- ErrCodeUnknownRole = 10011
- ErrCodeUnknownToken = 10012
- ErrCodeUnknownUser = 10013
- ErrCodeUnknownEmoji = 10014
- ErrCodeUnknownWebhook = 10015
- ErrCodeUnknownBan = 10026
-
- ErrCodeBotsCannotUseEndpoint = 20001
- ErrCodeOnlyBotsCanUseEndpoint = 20002
-
- ErrCodeMaximumGuildsReached = 30001
- ErrCodeMaximumFriendsReached = 30002
- ErrCodeMaximumPinsReached = 30003
- ErrCodeMaximumGuildRolesReached = 30005
- ErrCodeTooManyReactions = 30010
-
- ErrCodeUnauthorized = 40001
-
- ErrCodeMissingAccess = 50001
- ErrCodeInvalidAccountType = 50002
- ErrCodeCannotExecuteActionOnDMChannel = 50003
- ErrCodeEmbedDisabled = 50004
- ErrCodeCannotEditFromAnotherUser = 50005
- ErrCodeCannotSendEmptyMessage = 50006
- ErrCodeCannotSendMessagesToThisUser = 50007
- ErrCodeCannotSendMessagesInVoiceChannel = 50008
- ErrCodeChannelVerificationLevelTooHigh = 50009
- ErrCodeOAuth2ApplicationDoesNotHaveBot = 50010
- ErrCodeOAuth2ApplicationLimitReached = 50011
- ErrCodeInvalidOAuthState = 50012
- ErrCodeMissingPermissions = 50013
- ErrCodeInvalidAuthenticationToken = 50014
- ErrCodeNoteTooLong = 50015
- ErrCodeTooFewOrTooManyMessagesToDelete = 50016
- ErrCodeCanOnlyPinMessageToOriginatingChannel = 50019
- ErrCodeCannotExecuteActionOnSystemMessage = 50021
- ErrCodeMessageProvidedTooOldForBulkDelete = 50034
- ErrCodeInvalidFormBody = 50035
- ErrCodeInviteAcceptedToGuildApplicationsBotNotIn = 50036
+ ErrCodeGeneralError = 0
+
+ ErrCodeUnknownAccount = 10001
+ ErrCodeUnknownApplication = 10002
+ ErrCodeUnknownChannel = 10003
+ ErrCodeUnknownGuild = 10004
+ ErrCodeUnknownIntegration = 10005
+ ErrCodeUnknownInvite = 10006
+ ErrCodeUnknownMember = 10007
+ ErrCodeUnknownMessage = 10008
+ ErrCodeUnknownOverwrite = 10009
+ ErrCodeUnknownProvider = 10010
+ ErrCodeUnknownRole = 10011
+ ErrCodeUnknownToken = 10012
+ ErrCodeUnknownUser = 10013
+ ErrCodeUnknownEmoji = 10014
+ ErrCodeUnknownWebhook = 10015
+ ErrCodeUnknownWebhookService = 10016
+ ErrCodeUnknownSession = 10020
+ ErrCodeUnknownBan = 10026
+ ErrCodeUnknownSKU = 10027
+ ErrCodeUnknownStoreListing = 10028
+ ErrCodeUnknownEntitlement = 10029
+ ErrCodeUnknownBuild = 10030
+ ErrCodeUnknownLobby = 10031
+ ErrCodeUnknownBranch = 10032
+ ErrCodeUnknownStoreDirectoryLayout = 10033
+ ErrCodeUnknownRedistributable = 10036
+ ErrCodeUnknownGiftCode = 10038
+ ErrCodeUnknownStream = 10049
+ ErrCodeUnknownPremiumServerSubscribeCooldown = 10050
+ ErrCodeUnknownGuildTemplate = 10057
+ ErrCodeUnknownDiscoveryCategory = 10059
+ ErrCodeUnknownSticker = 10060
+ ErrCodeUnknownInteraction = 10062
+ ErrCodeUnknownApplicationCommand = 10063
+ ErrCodeUnknownApplicationCommandPermissions = 10066
+ ErrCodeUnknownStageInstance = 10067
+ ErrCodeUnknownGuildMemberVerificationForm = 10068
+ ErrCodeUnknownGuildWelcomeScreen = 10069
+ ErrCodeUnknownGuildScheduledEvent = 10070
+ ErrCodeUnknownGuildScheduledEventUser = 10071
+
+ ErrCodeBotsCannotUseEndpoint = 20001
+ ErrCodeOnlyBotsCanUseEndpoint = 20002
+ ErrCodeExplicitContentCannotBeSentToTheDesiredRecipients = 20009
+ ErrCodeYouAreNotAuthorizedToPerformThisActionOnThisApplication = 20012
+ ErrCodeThisActionCannotBePerformedDueToSlowmodeRateLimit = 20016
+ ErrCodeOnlyTheOwnerOfThisAccountCanPerformThisAction = 20018
+ ErrCodeMessageCannotBeEditedDueToAnnouncementRateLimits = 20022
+ ErrCodeChannelHasHitWriteRateLimit = 20028
+ ErrCodeTheWriteActionYouArePerformingOnTheServerHasHitTheWriteRateLimit = 20029
+ ErrCodeStageTopicContainsNotAllowedWordsForPublicStages = 20031
+ ErrCodeGuildPremiumSubscriptionLevelTooLow = 20035
+
+ ErrCodeMaximumGuildsReached = 30001
+ ErrCodeMaximumPinsReached = 30003
+ ErrCodeMaximumNumberOfRecipientsReached = 30004
+ ErrCodeMaximumGuildRolesReached = 30005
+ ErrCodeMaximumNumberOfWebhooksReached = 30007
+ ErrCodeMaximumNumberOfEmojisReached = 30008
+ ErrCodeTooManyReactions = 30010
+ ErrCodeMaximumNumberOfGuildChannelsReached = 30013
+ ErrCodeMaximumNumberOfAttachmentsInAMessageReached = 30015
+ ErrCodeMaximumNumberOfInvitesReached = 30016
+ ErrCodeMaximumNumberOfAnimatedEmojisReached = 30018
+ ErrCodeMaximumNumberOfServerMembersReached = 30019
+ ErrCodeMaximumNumberOfGuildDiscoverySubcategoriesReached = 30030
+ ErrCodeGuildAlreadyHasATemplate = 30031
+ ErrCodeMaximumNumberOfThreadParticipantsReached = 30033
+ ErrCodeMaximumNumberOfBansForNonGuildMembersHaveBeenExceeded = 30035
+ ErrCodeMaximumNumberOfBansFetchesHasBeenReached = 30037
+ ErrCodeMaximumNumberOfUncompletedGuildScheduledEventsReached = 30038
+ ErrCodeMaximumNumberOfStickersReached = 30039
+ ErrCodeMaximumNumberOfPruneRequestsHasBeenReached = 30040
+ ErrCodeMaximumNumberOfGuildWidgetSettingsUpdatesHasBeenReached = 30042
+ ErrCodeMaximumNumberOfEditsToMessagesOlderThanOneHourReached = 30046
+
+ ErrCodeUnauthorized = 40001
+ ErrCodeActionRequiredVerifiedAccount = 40002
+ ErrCodeOpeningDirectMessagesTooFast = 40003
+ ErrCodeSendMessagesHasBeenTemporarilyDisabled = 40004
+ ErrCodeRequestEntityTooLarge = 40005
+ ErrCodeFeatureTemporarilyDisabledServerSide = 40006
+ ErrCodeUserIsBannedFromThisGuild = 40007
+ ErrCodeTargetIsNotConnectedToVoice = 40032
+ ErrCodeMessageAlreadyCrossposted = 40033
+ ErrCodeAnApplicationWithThatNameAlreadyExists = 40041
+ ErrCodeInteractionHasAlreadyBeenAcknowledged = 40060
+
+ ErrCodeMissingAccess = 50001
+ ErrCodeInvalidAccountType = 50002
+ ErrCodeCannotExecuteActionOnDMChannel = 50003
+ ErrCodeEmbedDisabled = 50004
+ ErrCodeGuildWidgetDisabled = 50004
+ ErrCodeCannotEditFromAnotherUser = 50005
+ ErrCodeCannotSendEmptyMessage = 50006
+ ErrCodeCannotSendMessagesToThisUser = 50007
+ ErrCodeCannotSendMessagesInVoiceChannel = 50008
+ ErrCodeChannelVerificationLevelTooHigh = 50009
+ ErrCodeOAuth2ApplicationDoesNotHaveBot = 50010
+ ErrCodeOAuth2ApplicationLimitReached = 50011
+ ErrCodeInvalidOAuthState = 50012
+ ErrCodeMissingPermissions = 50013
+ ErrCodeInvalidAuthenticationToken = 50014
+ ErrCodeTooFewOrTooManyMessagesToDelete = 50016
+ ErrCodeCanOnlyPinMessageToOriginatingChannel = 50019
+ ErrCodeInviteCodeWasEitherInvalidOrTaken = 50020
+ ErrCodeCannotExecuteActionOnSystemMessage = 50021
+ ErrCodeCannotExecuteActionOnThisChannelType = 50024
+ ErrCodeInvalidOAuth2AccessTokenProvided = 50025
+ ErrCodeMissingRequiredOAuth2Scope = 50026
+ ErrCodeInvalidWebhookTokenProvided = 50027
+ ErrCodeInvalidRole = 50028
+ ErrCodeInvalidRecipients = 50033
+ ErrCodeMessageProvidedTooOldForBulkDelete = 50034
+ ErrCodeInvalidFormBody = 50035
+ ErrCodeInviteAcceptedToGuildApplicationsBotNotIn = 50036
+ ErrCodeInvalidAPIVersionProvided = 50041
+ ErrCodeFileUploadedExceedsTheMaximumSize = 50045
+ ErrCodeInvalidFileUploaded = 50046
+ ErrCodeInvalidGuild = 50055
+ ErrCodeInvalidMessageType = 50068
+ ErrCodeCannotDeleteAChannelRequiredForCommunityGuilds = 50074
+ ErrCodeInvalidStickerSent = 50081
+ ErrCodePerformedOperationOnArchivedThread = 50083
+ ErrCodeBeforeValueIsEarlierThanThreadCreationDate = 50085
+ ErrCodeCommunityServerChannelsMustBeTextChannels = 50086
+ ErrCodeThisServerIsNotAvailableInYourLocation = 50095
+ ErrCodeThisServerNeedsMonetizationEnabledInOrderToPerformThisAction = 50097
+ ErrCodeThisServerNeedsMoreBoostsToPerformThisAction = 50101
+ ErrCodeTheRequestBodyContainsInvalidJSON = 50109
+
+ ErrCodeNoUsersWithDiscordTagExist = 80004
ErrCodeReactionBlocked = 90001
+
+ ErrCodeAPIResourceIsCurrentlyOverloaded = 130000
+
+ ErrCodeTheStageIsAlreadyOpen = 150006
+
+ ErrCodeCannotReplyWithoutPermissionToReadMessageHistory = 160002
+ ErrCodeThreadAlreadyCreatedForThisMessage = 160004
+ ErrCodeThreadIsLocked = 160005
+ ErrCodeMaximumNumberOfActiveThreadsReached = 160006
+ ErrCodeMaximumNumberOfActiveAnnouncementThreadsReached = 160007
+
+ ErrCodeInvalidJSONForUploadedLottieFile = 170001
+ ErrCodeUploadedLottiesCannotContainRasterizedImages = 170002
+ ErrCodeStickerMaximumFramerateExceeded = 170003
+ ErrCodeStickerFrameCountExceedsMaximumOfOneThousandFrames = 170004
+ ErrCodeLottieAnimationMaximumDimensionsExceeded = 170005
+ ErrCodeStickerFrameRateOutOfRange = 170006
+ ErrCodeStickerAnimationDurationExceedsMaximumOfFiveSeconds = 170007
+
+ ErrCodeCannotUpdateAFinishedEvent = 180000
+ ErrCodeFailedToCreateStageNeededForStageEvent = 180002
)
// Intent is the type of a Gateway Intent
@@ -1296,38 +1969,64 @@ type Intent int
// Constants for the different bit offsets of intents
const (
- IntentsGuilds Intent = 1 << iota
- IntentsGuildMembers
- IntentsGuildBans
- IntentsGuildEmojis
- IntentsGuildIntegrations
- IntentsGuildWebhooks
- IntentsGuildInvites
- IntentsGuildVoiceStates
- IntentsGuildPresences
- IntentsGuildMessages
- IntentsGuildMessageReactions
- IntentsGuildMessageTyping
- IntentsDirectMessages
- IntentsDirectMessageReactions
- IntentsDirectMessageTyping
-
- IntentsAllWithoutPrivileged = IntentsGuilds |
- IntentsGuildBans |
- IntentsGuildEmojis |
- IntentsGuildIntegrations |
- IntentsGuildWebhooks |
- IntentsGuildInvites |
- IntentsGuildVoiceStates |
- IntentsGuildMessages |
- IntentsGuildMessageReactions |
- IntentsGuildMessageTyping |
- IntentsDirectMessages |
- IntentsDirectMessageReactions |
- IntentsDirectMessageTyping
+ IntentGuilds Intent = 1 << 0
+ IntentGuildMembers Intent = 1 << 1
+ IntentGuildBans Intent = 1 << 2
+ IntentGuildEmojis Intent = 1 << 3
+ IntentGuildIntegrations Intent = 1 << 4
+ IntentGuildWebhooks Intent = 1 << 5
+ IntentGuildInvites Intent = 1 << 6
+ IntentGuildVoiceStates Intent = 1 << 7
+ IntentGuildPresences Intent = 1 << 8
+ IntentGuildMessages Intent = 1 << 9
+ IntentGuildMessageReactions Intent = 1 << 10
+ IntentGuildMessageTyping Intent = 1 << 11
+ IntentDirectMessages Intent = 1 << 12
+ IntentDirectMessageReactions Intent = 1 << 13
+ IntentDirectMessageTyping Intent = 1 << 14
+ IntentMessageContent Intent = 1 << 15
+ IntentGuildScheduledEvents Intent = 1 << 16
+
+ // TODO: remove when compatibility is not needed
+
+ IntentsGuilds Intent = 1 << 0
+ IntentsGuildMembers Intent = 1 << 1
+ IntentsGuildBans Intent = 1 << 2
+ IntentsGuildEmojis Intent = 1 << 3
+ IntentsGuildIntegrations Intent = 1 << 4
+ IntentsGuildWebhooks Intent = 1 << 5
+ IntentsGuildInvites Intent = 1 << 6
+ IntentsGuildVoiceStates Intent = 1 << 7
+ IntentsGuildPresences Intent = 1 << 8
+ IntentsGuildMessages Intent = 1 << 9
+ IntentsGuildMessageReactions Intent = 1 << 10
+ IntentsGuildMessageTyping Intent = 1 << 11
+ IntentsDirectMessages Intent = 1 << 12
+ IntentsDirectMessageReactions Intent = 1 << 13
+ IntentsDirectMessageTyping Intent = 1 << 14
+ IntentsMessageContent Intent = 1 << 15
+ IntentsGuildScheduledEvents Intent = 1 << 16
+
+ IntentsAllWithoutPrivileged = IntentGuilds |
+ IntentGuildBans |
+ IntentGuildEmojis |
+ IntentGuildIntegrations |
+ IntentGuildWebhooks |
+ IntentGuildInvites |
+ IntentGuildVoiceStates |
+ IntentGuildMessages |
+ IntentGuildMessageReactions |
+ IntentGuildMessageTyping |
+ IntentDirectMessages |
+ IntentDirectMessageReactions |
+ IntentDirectMessageTyping |
+ IntentGuildScheduledEvents
+
IntentsAll = IntentsAllWithoutPrivileged |
- IntentsGuildMembers |
- IntentsGuildPresences
+ IntentGuildMembers |
+ IntentGuildPresences |
+ IntentMessageContent
+
IntentsNone Intent = 0
)