distype

package module
v0.0.0-...-26bf96a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 11, 2024 License: MIT Imports: 5 Imported by: 17

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func UnmarshalEvent

func UnmarshalEvent(t EventType, raw []byte) (interface{}, error)

Types

type ActionRow

type ActionRow struct {
	Components []MessageComponent `json:"components"`
}

func (ActionRow) MarshalJSON

func (r ActionRow) MarshalJSON() ([]byte, error)

func (ActionRow) Type

func (*ActionRow) UnmarshalJSON

func (r *ActionRow) UnmarshalJSON(data []byte) error

type Activity

type Activity struct {
	Name          string                       `json:"name"`
	Type          ActivityType                 `json:"type"`
	URL           Optional[Nullable[string]]   `json:"url,omitempty"`
	CreatedAt     UnixTimestamp                `json:"created_at"`
	Timestamps    Optional[ActivityTimestamps] `json:"timestamps,omitempty"`
	ApplicationID Optional[Snowflake]          `json:"application_id,omitempty"`
	Details       Optional[string]             `json:"details,omitempty"`
	State         Optional[string]             `json:"state,omitempty"`
	Emoji         Optional[ActivityEmoji]      `json:"emoji,omitempty"`
	Party         Optional[ActivityParty]      `json:"party,omitempty"`
	Assets        Optional[ActivityAssets]     `json:"assets,omitempty"`
	Secrets       Optional[ActivitySecrets]    `json:"secrets,omitempty"`
	Instance      Optional[bool]               `json:"instance,omitempty"`
	Flags         Optional[ActivityFlags]      `json:"flags,omitempty"`
	Buttons       []ActivityButton             `json:"buttons,omitempty"`
}

type ActivityAssets

type ActivityAssets struct {
	LargeImage Optional[string] `json:"large_image,omitempty"`
	LargeText  Optional[string] `json:"large_text,omitempty"`
	SmallImage Optional[string] `json:"small_image,omitempty"`
	SmallText  Optional[string] `json:"small_text,omitempty"`
}

type ActivityButton

type ActivityButton struct {
	Label string `json:"label"`
	URL   string `json:"url"`
}

type ActivityEmoji

type ActivityEmoji struct {
	Name     string              `json:"name"`
	ID       Optional[Snowflake] `json:"id,omitempty"`
	Animated Optional[bool]      `json:"animated,omitempty"`
}

type ActivityFlags

type ActivityFlags int
const (
	ActivityFlagsInstance                 ActivityFlags = 1 << 0
	ActivityFlagsJoin                     ActivityFlags = 1 << 1
	ActivityFlagsSpectate                 ActivityFlags = 1 << 2
	ActivityFlagsJoinRequest              ActivityFlags = 1 << 3
	ActivityFlagsSync                     ActivityFlags = 1 << 4
	ActivityFlagsPlay                     ActivityFlags = 1 << 5
	ActivityFlagsPartyPrivacyFriends      ActivityFlags = 1 << 6
	ActivityFlagsPartyPrivacyVoiceChannel ActivityFlags = 1 << 7
	ActivityFlagsEmbedded                 ActivityFlags = 1 << 12
)

type ActivityParty

type ActivityParty struct {
	ID   Optional[Snowflake] `json:"id,omitempty"`
	Size [2]int              `json:"size"`
}

type ActivitySecrets

type ActivitySecrets struct {
	Join     Optional[string] `json:"join,omitempty"`
	Spectate Optional[string] `json:"spectate,omitempty"`
	Match    Optional[string] `json:"match,omitempty"`
}

type ActivityTimestamps

type ActivityTimestamps struct {
	Start Optional[UnixTimestamp] `json:"start,omitempty"`
	End   Optional[UnixTimestamp] `json:"end,omitempty"`
}

type ActivityType

type ActivityType int
const (
	ActivityTypeGame      ActivityType = 0
	ActivityTypeStreaming ActivityType = 1
	ActivityTypeListening ActivityType = 2
	ActivityTypeWatching  ActivityType = 3
	ActivityTypeCustom    ActivityType = 4
	ActivityTypeCompeting ActivityType = 5
)

type AllowedMentionType

type AllowedMentionType string
const (
	AllowedMentionTypeRoleMentions    AllowedMentionType = "roles"
	AllowedMentionTypeUserMentions    AllowedMentionType = "users"
	AllowedMentionTypeEveryoneMention AllowedMentionType = "everyone"
)

type AllowedMentions

type AllowedMentions struct {
	Parse       []AllowedMentionType `json:"parse"`
	Roles       []Snowflake          `json:"roles"`
	Users       []Snowflake          `json:"users"`
	RepliedUser bool                 `json:"replied_user"`
}

type Application

type Application struct {
	ID                             Snowflake                  `json:"id"`
	Name                           string                     `json:"name"`
	Icon                           Nullable[string]           `json:"icon"`
	Description                    string                     `json:"description"`
	RPCOrigins                     []string                   `json:"rpc_origins,omitempty"`
	BotPublic                      bool                       `json:"bot_public"`
	BotRequireCodeGrant            bool                       `json:"bot_require_code_grant"`
	Bot                            Optional[User]             `json:"bot,omitempty"`
	TermsOfServiceURL              Optional[string]           `json:"terms_of_service_url,omitempty"`
	PrivacyPolicyURL               Optional[string]           `json:"privacy_policy_url,omitempty"`
	Owner                          Optional[User]             `json:"owner,omitempty"`
	Summary                        string                     `json:"summary"`
	VerifyKey                      string                     `json:"verify_key"`
	Team                           Nullable[Team]             `json:"team"`
	GuildID                        Optional[Snowflake]        `json:"guild_id,omitempty"`
	Guild                          Optional[Guild]            `json:"guild,omitempty"`
	PrimarySKUID                   Optional[Snowflake]        `json:"primary_sku_id,omitempty"`
	Slug                           Optional[string]           `json:"slug,omitempty"`
	CoverImage                     Optional[string]           `json:"cover_image,omitempty"`
	Flags                          Optional[ApplicationFlags] `json:"flags,omitempty"`
	ApproximateGuildCount          Optional[int]              `json:"approximate_guild_count,omitempty"`
	RedirectURIs                   []string                   `json:"redirect_uris,omitempty"`
	InteractionsEndpointURL        Optional[string]           `json:"interactions_endpoint_url,omitempty"`
	RoleConnectionsVerificationURL Optional[string]           `json:"role_connections_verification_url,omitempty"`
	Tags                           []string                   `json:"tags,omitempty"`
	InstallParams                  Optional[InstallParams]    `json:"install_params,omitempty"`
	CustomInstallURL               Optional[string]           `json:"custom_install_url,omitempty"`
}

type ApplicationCommandData

type ApplicationCommandData struct {
	ID       Snowflake                  `json:"id"`
	Name     string                     `json:"name"`
	Type     ApplicationCommandType     `json:"type"`
	Resolved Optional[ResolvedData]     `json:"resolved,omitempty"`
	Options  []ApplicationCommandOption `json:"options,omitempty"`
	GuildID  Optional[Snowflake]        `json:"guild_id,omitempty"`
	TargetID Optional[Snowflake]        `json:"target_id,omitempty"`
}

func (ApplicationCommandData) InteractionType

func (ApplicationCommandData) InteractionType() InteractionType

type ApplicationCommandOption

type ApplicationCommandOption struct {
	Name    string                       `json:"name"`
	Type    ApplicationCommandOptionType `json:"type"`
	Value   Optional[interface{}]        `json:"value,omitempty"`
	Options []ApplicationCommandOption   `json:"options,omitempty"`
	Focused Optional[bool]               `json:"focused,omitempty"`
}

type ApplicationCommandOptionType

type ApplicationCommandOptionType int
const (
	ApplicationCommandOptionTypeSubCommand      ApplicationCommandOptionType = 1
	ApplicationCommandOptionTypeSubCommandGroup ApplicationCommandOptionType = 2
	ApplicationCommandOptionTypeString          ApplicationCommandOptionType = 3
	ApplicationCommandOptionTypeInteger         ApplicationCommandOptionType = 4
	ApplicationCommandOptionTypeBoolean         ApplicationCommandOptionType = 5
	ApplicationCommandOptionTypeUser            ApplicationCommandOptionType = 6
	ApplicationCommandOptionTypeChannel         ApplicationCommandOptionType = 7
	ApplicationCommandOptionTypeRole            ApplicationCommandOptionType = 8
	ApplicationCommandOptionTypeMentionable     ApplicationCommandOptionType = 9
	ApplicationCommandOptionTypeNumber          ApplicationCommandOptionType = 10
	ApplicationCommandOptionTypeAttachment      ApplicationCommandOptionType = 11
)

type ApplicationCommandPermissions

type ApplicationCommandPermissions struct{}

type ApplicationCommandPermissionsUpdateEvent

type ApplicationCommandPermissionsUpdateEvent = ApplicationCommandPermissions

type ApplicationCommandType

type ApplicationCommandType int
const (
	ApplicationCommandTypeChatInput ApplicationCommandType = 1
	ApplicationCommandTypeUser      ApplicationCommandType = 2
	ApplicationCommandTypeMessage   ApplicationCommandType = 3
)

type ApplicationFlags

type ApplicationFlags int
const (
	ApplicationFlagsAutoModerationRuleCreateBadge ApplicationFlags = 1 << 6
	ApplicationFlagsGatewayPresence               ApplicationFlags = 1 << 12
	ApplicationFlagsGatewayPresenceLimited        ApplicationFlags = 1 << 13
	ApplicationFlagsGatewayGuildMembers           ApplicationFlags = 1 << 14
	ApplicationFlagsGatewayGuildMembersLimited    ApplicationFlags = 1 << 15
	ApplicationFlagsVerificationPendingGuildLimit ApplicationFlags = 1 << 16
	ApplicationFlagsEmbedded                      ApplicationFlags = 1 << 17
	ApplicationFlagsGatewayMessageContent         ApplicationFlags = 1 << 18
	ApplicationFlagsGatewayMessageContentLimited  ApplicationFlags = 1 << 19
	ApplicationFlagsApplicationCommandBadge       ApplicationFlags = 1 << 23
)

type Attachment

type Attachment struct {
	ID          Snowflake                 `json:"id"`
	Filename    string                    `json:"filename"`
	Description Optional[string]          `json:"description,omitempty"`
	ContentType Optional[string]          `json:"content_type,omitempty"`
	Size        int                       `json:"size"`
	URL         string                    `json:"url"`
	ProxyURL    string                    `json:"proxy_url"`
	Height      Optional[int]             `json:"height,omitempty"`
	Width       Optional[int]             `json:"width,omitempty"`
	Ephemeral   Optional[bool]            `json:"ephemeral,omitempty"`
	DurationSec Optional[float64]         `json:"duration_secs,omitempty"`
	Waveform    Optional[string]          `json:"waveform,omitempty"`
	Flags       Optional[AttachmentFlags] `json:"flags,omitempty"`
}

type AttachmentFlags

type AttachmentFlags int
const (
	AttachmentFlagsIsRemix AttachmentFlags = 1 << 2
)

type AuditLog

type AuditLog struct{}

type AuditLogEntry

type AuditLogEntry struct{}

type AuditLogEntryCreateEvent

type AuditLogEntryCreateEvent = AuditLogEntry

type AutoModerationActionExecutionEvent

type AutoModerationActionExecutionEvent struct{}

type AutoModerationEventType

type AutoModerationEventType int
const (
	AutoModerationEventTypeMessageSend AutoModerationEventType = 1
)

type AutoModerationRuleCreateEvent

type AutoModerationRuleCreateEvent = AutoModerationRuleObject

type AutoModerationRuleDeleteEvent

type AutoModerationRuleDeleteEvent = AutoModerationRuleObject

type AutoModerationRuleObject

type AutoModerationRuleObject struct {
	ID              Snowflake                     `json:"id"`
	GuildID         Snowflake                     `json:"guild_id"`
	Name            string                        `json:"name"`
	CreatorID       Snowflake                     `json:"creator_id"`
	EventType       AutoModerationEventType       `json:"event_type"`
	TriggerType     AutoModerationTriggerType     `json:"trigger_type"`
	TriggerMetadata AutoModerationTriggerMetadata `json:"trigger_metadata"`
}

type AutoModerationRuleUpdateEvent

type AutoModerationRuleUpdateEvent = AutoModerationRuleObject

type AutoModerationTriggerMetadata

type AutoModerationTriggerMetadata struct{}

type AutoModerationTriggerType

type AutoModerationTriggerType int
const (
	AutoModerationTriggerTypeKeyword       AutoModerationTriggerType = 1
	AutoModerationTriggerTypeSpam          AutoModerationTriggerType = 3
	AutoModerationTriggerTypeKeywordPreset AutoModerationTriggerType = 4
	AutoModerationTriggerTypeMentionSpam   AutoModerationTriggerType = 5
)

type Ban

type Ban struct {
	Reason Nullable[string] `json:"reason"`
	User   User             `json:"user"`
}

type BanAddEvent

type BanAddEvent struct {
	GuildID Snowflake `json:"guild_id"`
	User    User      `json:"user"`
}

type BanCreateRequest

type BanCreateRequest struct {
	GuildID              Snowflake     `json:"guild_id"`
	UserID               Snowflake     `json:"user_id"`
	DeleteMessageSeconds Optional[int] `json:"delete_message_seconds,omitempty"`
}

type BanCreateResponse

type BanCreateResponse = Ban

type BanGetRequest

type BanGetRequest struct {
	GuildID Snowflake `json:"guild_id"`
	UserID  Snowflake `json:"user_id"`
}

type BanGetResponse

type BanGetResponse = Ban

type BanListRequest

type BanListRequest struct {
	GuildID Snowflake           `json:"guild_id"`
	Limit   Optional[int]       `json:"limit,omitempty"`
	Before  Optional[Snowflake] `json:"before,omitempty"`
	After   Optional[Snowflake] `json:"after,omitempty"`
}

type BanListResponse

type BanListResponse = []Ban

type BanRemoveEvent

type BanRemoveEvent struct {
	GuildID Snowflake `json:"guild_id"`
	User    User      `json:"user"`
}

type BanRemoveRequest

type BanRemoveRequest struct {
	GuildID Snowflake `json:"guild_id"`
	UserID  Snowflake `json:"user_id"`
}

type BanRemoveResponse

type BanRemoveResponse = Ban

type Button

type Button struct {
	Style    ButtonStyle      `json:"style"`
	Label    Optional[string] `json:"label,omitempty"`
	Emoji    Optional[Emoji]  `json:"emoji,omitempty"`
	CustomID Optional[string] `json:"custom_id,omitempty"`
	URL      Optional[string] `json:"url,omitempty"`
	Disabled Optional[bool]   `json:"disabled,omitempty"`
}

func (Button) MarshalJSON

func (b Button) MarshalJSON() ([]byte, error)

func (Button) Type

type ButtonStyle

type ButtonStyle int
const (
	ButtonStylePrimary   ButtonStyle = 1
	ButtonStyleSecondary ButtonStyle = 2
	ButtonStyleSuccess   ButtonStyle = 3
	ButtonStyleDanger    ButtonStyle = 4
	ButtonStyleLink      ButtonStyle = 5
)

type Channel

type Channel struct {
	ID                            Snowflake                  `json:"id"`
	Type                          ChannelType                `json:"type"`
	GuildID                       Optional[Snowflake]        `json:"guild_id,omitempty"`
	Position                      Optional[int]              `json:"position,omitempty"`
	PermissionOverwrites          []PermissionOverwrite      `json:"permission_overwrites,omitempty"`
	Name                          Optional[string]           `json:"name,omitempty"`
	Topic                         Optional[string]           `json:"topic,omitempty"`
	NSFW                          Optional[bool]             `json:"nsfw,omitempty"`
	LastMessageID                 Optional[Snowflake]        `json:"last_message_id,omitempty"`
	Bitrate                       Optional[int]              `json:"bitrate,omitempty"`
	UserLimit                     Optional[int]              `json:"user_limit,omitempty"`
	RateLimitPerUser              Optional[int]              `json:"rate_limit_per_user,omitempty"`
	Recipients                    []User                     `json:"recipients,omitempty"`
	Icon                          Optional[Nullable[string]] `json:"icon,omitempty"`
	OwnerID                       Optional[Snowflake]        `json:"owner_id,omitempty"`
	ApplicationID                 Optional[Snowflake]        `json:"application_id,omitempty"`
	Managed                       Optional[bool]             `json:"managed,omitempty"`
	ParentID                      Optional[Snowflake]        `json:"parent_id,omitempty"`
	LastPinTimestamp              Optional[time.Time]        `json:"last_pin_timestamp,omitempty"`
	RTCRegion                     Optional[string]           `json:"rtc_region,omitempty"`
	VideoQualityMode              Optional[VideoQualityMode] `json:"video_quality_mode,omitempty"`
	MessageCount                  Optional[int]              `json:"message_count,omitempty"`
	MemberCount                   Optional[int]              `json:"member_count,omitempty"`
	ThreadMetadata                Optional[ThreadMetadata]   `json:"thread_metadata,omitempty"`
	Member                        Optional[ThreadMember]     `json:"member,omitempty"`
	DefaultAutoArchive            Optional[int]              `json:"default_auto_archive_duration,omitempty"`
	Permissions                   Optional[Permissions]      `json:"permissions,omitempty"`
	Flags                         Optional[ChannelFlags]     `json:"flags,omitempty"`
	TotalMessagesSent             Optional[int]              `json:"total_message_sent,omitempty"`
	AvailableTags                 []ForumTag                 `json:"available_tags,omitempty"`
	AppliedTags                   []Snowflake                `json:"applied_tags,omitempty"`
	DefaultReactionEmoji          Optional[DefaultReaction]  `json:"default_reaction_emoji,omitempty"`
	DefaultThreadRateLimitPerUser Optional[int]              `json:"default_thread_rate_limit_per_user,omitempty"`
	DefaultSortOrder              Optional[SortOrderType]    `json:"default_sort_order,omitempty"`
	DefaultForumLayout            Optional[ForumLayoutType]  `json:"default_forum_layout,omitempty"`
}

type ChannelCreateEvent

type ChannelCreateEvent = Channel

type ChannelDeleteEvent

type ChannelDeleteEvent = Channel

type ChannelDeletePermissionsRequest

type ChannelDeletePermissionsRequest struct {
	ChannelID   Snowflake `json:"channel_id"`
	OverwriteID Snowflake `json:"overwrite_id"`
}

type ChannelDeletePermissionsResponse

type ChannelDeletePermissionsResponse struct{}

type ChannelDeleteRequest

type ChannelDeleteRequest struct {
	ChannelID Snowflake `json:"channel_id"`
}

type ChannelDeleteResponse

type ChannelDeleteResponse = Channel

type ChannelEditPermissionsRequest

type ChannelEditPermissionsRequest struct {
	ChannelID   Snowflake                       `json:"channel_id"`
	OverwriteID Snowflake                       `json:"overwrite_id"`
	Allow       Optional[Nullable[Permissions]] `json:"allow,omitempty"`
	Deny        Optional[Nullable[Permissions]] `json:"deny,omitempty"`
	Type        PermissionOverwriteType         `json:"type,omitempty"`
}

type ChannelEditPermissionsResponse

type ChannelEditPermissionsResponse struct{}

type ChannelFlags

type ChannelFlags int
const (
	ChannelFlagsPinned                   ChannelFlags = 1 << 1
	ChannelFlagsRequireTag               ChannelFlags = 1 << 4
	ChannelFlagsHideMediaDownloadOptions ChannelFlags = 1 << 15
)

type ChannelGetRequest

type ChannelGetRequest struct {
	ChannelID Snowflake `json:"channel_id"`
}

type ChannelGetResponse

type ChannelGetResponse = Channel

type ChannelInviteCreateRequest

type ChannelInviteCreateRequest struct {
	ChannelID           Snowflake                  `json:"channel_id"`
	MaxAge              Optional[int]              `json:"max_age,omitempty"`
	MaxUses             Optional[int]              `json:"max_uses,omitempty"`
	Temporary           Optional[bool]             `json:"temporary,omitempty"`
	Unique              Optional[bool]             `json:"unique,omitempty"`
	TargetType          Optional[InviteTargetType] `json:"target_type,omitempty"`
	TargetUserID        Optional[Snowflake]        `json:"target_user_id,omitempty"`
	TargetApplicationID Optional[Snowflake]        `json:"target_application_id,omitempty"`
}

type ChannelInviteCreateResponse

type ChannelInviteCreateResponse = Invite

type ChannelInviteListRequest

type ChannelInviteListRequest struct {
	ChannelID Snowflake `json:"channel_id"`
}

type ChannelInviteListResponse

type ChannelInviteListResponse = []Invite

type ChannelMention

type ChannelMention struct {
	ID      Snowflake   `json:"id"`
	GuildID Snowflake   `json:"guild_id"`
	Type    ChannelType `json:"type"`
	Name    string      `json:"name"`
}

type ChannelMessageListRequest

type ChannelMessageListRequest struct {
	ChannelID Snowflake           `json:"channel_id"`
	Around    Optional[Snowflake] `json:"around,omitempty"`
	Before    Optional[Snowflake] `json:"before,omitempty"`
	After     Optional[Snowflake] `json:"after,omitempty"`
	Limit     Optional[int]       `json:"limit,omitempty"`
}

type ChannelMessageListResponse

type ChannelMessageListResponse = []Message

type ChannelModifyRequest

type ChannelModifyRequest struct{} // TODO

type ChannelModifyResponse

type ChannelModifyResponse = Channel

type ChannelPinnedMessageListRequest

type ChannelPinnedMessageListRequest struct {
	ChannelID Snowflake `json:"channel_id"`
}

type ChannelPinnedMessageListResponse

type ChannelPinnedMessageListResponse = []Message

type ChannelPinsUpdateEvent

type ChannelPinsUpdateEvent struct {
	GuildID          Optional[Snowflake] `json:"guild_id,omitempty"`
	ChannelID        Snowflake           `json:"channel_id"`
	LastPinTimestamp Optional[time.Time] `json:"last_pin_timestamp,omitempty"`
}

type ChannelType

type ChannelType int
const (
	ChannelTypeGuildText          ChannelType = 0
	ChannelTypeDM                 ChannelType = 1
	ChannelTypeGuildVoice         ChannelType = 2
	ChannelTypeGroupDM            ChannelType = 3
	ChannelTypeGuildCategory      ChannelType = 4
	ChannelTypeGuildAnnouncement  ChannelType = 5
	ChannelTypeAnnouncementThread ChannelType = 10
	ChannelTypePublicThread       ChannelType = 11
	ChannelTypePrivateThread      ChannelType = 12
	ChannelTypeGuildStageVoice    ChannelType = 13
	ChannelTypeGuildDirectory     ChannelType = 14
	ChannelTypeGuildForum         ChannelType = 15
	ChannelTypeGuildMedia         ChannelType = 16
)

type ChannelUpdateEvent

type ChannelUpdateEvent = Channel

type ChannelWebhookListRequest

type ChannelWebhookListRequest struct {
	ChannelID Snowflake `json:"channel_id"`
}

type ChannelWebhookListResponse

type ChannelWebhookListResponse = []Webhook

type ClientStatus

type ClientStatus struct {
	Desktop Optional[Status] `json:"desktop,omitempty"`
	Mobile  Optional[Status] `json:"mobile,omitempty"`
	Web     Optional[Status] `json:"web,omitempty"`
}

type ConnectEvent

type ConnectEvent struct{}

type ConnectionProperties

type ConnectionProperties struct {
	OS      string `json:"$os"`
	Browser string `json:"$browser"`
	Device  string `json:"$device"`
}

type DefaultMessageNotificationlevel

type DefaultMessageNotificationlevel int
const (
	DefaultMessageNotificationLevelAllMessages  DefaultMessageNotificationlevel = 0
	DefaultMessageNotificationLevelOnlyMentions DefaultMessageNotificationlevel = 1
)

type DefaultReaction

type DefaultReaction struct {
	EmojiID   Nullable[Snowflake] `json:"emoji_id"`
	EmojiName Nullable[string]    `json:"emoji_name"`
}

type DisconnectEvent

type DisconnectEvent struct{}

type Embed

type Embed struct {
	Title       Optional[string]         `json:"title,omitempty"`
	Type        Optional[EmbedType]      `json:"type,omitempty"`
	Description Optional[string]         `json:"description,omitempty"`
	URL         Optional[string]         `json:"url,omitempty"`
	Timestamp   Optional[time.Time]      `json:"timestamp,omitempty"`
	Color       Optional[int]            `json:"color,omitempty"`
	Footer      Optional[EmbedFooter]    `json:"footer,omitempty"`
	Image       Optional[EmbedImage]     `json:"image,omitempty"`
	Thumbnail   Optional[EmbedThumbnail] `json:"thumbnail,omitempty"`
	Video       Optional[EmbedVideo]     `json:"video,omitempty"`
	Provider    Optional[EmbedProvider]  `json:"provider,omitempty"`
	Author      Optional[EmbedAuthor]    `json:"author,omitempty"`
	Fields      []EmbedField             `json:"fields,omitempty"`
}

type EmbedAuthor

type EmbedAuthor struct {
	Name         string           `json:"name"`
	URL          Optional[string] `json:"url,omitempty"`
	IconURL      Optional[string] `json:"icon_url,omitempty"`
	ProxyIconURL Optional[string] `json:"proxy_icon_url,omitempty"`
}

type EmbedField

type EmbedField struct {
	Name   string         `json:"name"`
	Value  string         `json:"value"`
	Inline Optional[bool] `json:"inline,omitempty"`
}

type EmbedFooter

type EmbedFooter struct {
	Text         string           `json:"text"`
	IconURL      Optional[string] `json:"icon_url,omitempty"`
	ProxyIconURL Optional[string] `json:"proxy_icon_url,omitempty"`
}

type EmbedImage

type EmbedImage struct {
	URL      string           `json:"url"`
	ProxyURL Optional[string] `json:"proxy_url,omitempty"`
	Height   Optional[int]    `json:"height,omitempty"`
	Width    Optional[int]    `json:"width,omitempty"`
}

type EmbedProvider

type EmbedProvider struct {
	Name Optional[string] `json:"name,omitempty"`
	URL  Optional[string] `json:"url,omitempty"`
}

type EmbedThumbnail

type EmbedThumbnail struct {
	URL      string           `json:"url"`
	ProxyURL Optional[string] `json:"proxy_url,omitempty"`
	Height   Optional[int]    `json:"height,omitempty"`
	Width    Optional[int]    `json:"width,omitempty"`
}

type EmbedType

type EmbedType string
const (
	EmbedTypeRich    EmbedType = "rich"
	EmbedTypeImage   EmbedType = "image"
	EmbedTypeVideo   EmbedType = "video"
	EmbedTypeGifv    EmbedType = "gifv"
	EmbedTypeArticle EmbedType = "article"
	EmbedTypeLink    EmbedType = "link"
)

type EmbedVideo

type EmbedVideo struct {
	URL      Optional[string] `json:"url,omitempty"`
	ProxyURL Optional[string] `json:"proxy_url,omitempty"`
	Height   Optional[int]    `json:"height,omitempty"`
	Width    Optional[int]    `json:"width,omitempty"`
}

type Emoji

type Emoji struct {
	ID             Nullable[Snowflake] `json:"id"`
	Name           Nullable[string]    `json:"name"`
	Roles          []Snowflake         `json:"roles,omitempty"`
	User           Optional[User]      `json:"user,omitempty"`
	RequiredColons Optional[bool]      `json:"required_colons,omitempty"`
	Managed        Optional[bool]      `json:"managed,omitempty"`
	Animated       Optional[bool]      `json:"animated,omitempty"`
	Available      Optional[bool]      `json:"available,omitempty"`
}

type EmojiCreateRequest

type EmojiCreateRequest struct {
	GuildID Snowflake   `json:"guild_id"`
	Name    string      `json:"name"`
	Image   string      `json:"image"`
	Roles   []Snowflake `json:"roles,omitempty"`
}

type EmojiCreateResponse

type EmojiCreateResponse = Emoji

type EmojiDeleteRequest

type EmojiDeleteRequest struct {
	GuildID Snowflake `json:"guild_id"`
	EmojiID Snowflake `json:"emoji_id"`
}

type EmojiDeleteResponse

type EmojiDeleteResponse struct{}

type EmojiGetRequest

type EmojiGetRequest struct {
	GuildID Snowflake `json:"guild_id"`
	EmojiID Snowflake `json:"emoji_id"`
}

type EmojiGetResponse

type EmojiGetResponse = Emoji

type EmojiModifyRequest

type EmojiModifyRequest struct {
	GuildID Snowflake   `json:"guild_id"`
	EmojiID Snowflake   `json:"emoji_id"`
	Name    string      `json:"name"`
	Roles   []Snowflake `json:"roles,omitempty"`
}

type EmojiModifyResponse

type EmojiModifyResponse = Emoji

type Entitlement

type Entitlement struct {
	ID            Snowflake           `json:"id"`
	SKUID         Snowflake           `json:"sku_id"`
	ApplicationID Snowflake           `json:"application_id"`
	UserID        Optional[Snowflake] `json:"user_id,omitempty"`
	Type          EntitlementType     `json:"type"`
	Deleted       bool                `json:"deleted"`
	StartsAt      Optional[string]    `json:"starts_at,omitempty"`
	EndsAt        Optional[string]    `json:"ends_at,omitempty"`
	GuildID       Optional[Snowflake] `json:"guild_id,omitempty"`
}

type EntitlementCreateEvent

type EntitlementCreateEvent = Entitlement

type EntitlementDeleteEvent

type EntitlementDeleteEvent = Entitlement

type EntitlementType

type EntitlementType int
const (
	EntitlementTypeApplicationSubscription EntitlementType = 8
)

type EntitlementUpdateEvent

type EntitlementUpdateEvent = Entitlement

type EventType

type EventType string
const (
	EventTypeAll                                 EventType = "*"
	EventTypeDisconnect                          EventType = "__DISCONNECT__"
	EventTypeConnect                             EventType = "__CONNECT__"
	EventTypeHello                               EventType = "HELLO"
	EventTypeReady                               EventType = "READY"
	EventTypeResumed                             EventType = "RESUMED"
	EventTypeReconnect                           EventType = "RECONNECT"
	EventTypeInvalidSession                      EventType = "INVALID_SESSION"
	EventTypeApplicationCommandPermissionsUpdate EventType = "APPLICATION_COMMAND_PERMISSIONS_UPDATE"
	EventTypeAutoModerationRuleCreate            EventType = "AUTO_MODERATION_RULE_CREATE"
	EventTypeAutoModerationRuleUpdate            EventType = "AUTO_MODERATION_RULE_UPDATE"
	EventTypeAutoModerationRuleDelete            EventType = "AUTO_MODERATION_RULE_DELETE"
	EventTypeAutoModerationActionExecution       EventType = "AUTO_MODERATION_ACTION_EXECUTION"
	EventTypeChannelCreate                       EventType = "CHANNEL_CREATE"
	EventTypeChannelUpdate                       EventType = "CHANNEL_UPDATE"
	EventTypeChannelDelete                       EventType = "CHANNEL_DELETE"
	EventTypeChannelPinsUpdate                   EventType = "CHANNEL_PINS_UPDATE"
	EventTypeThreadCreate                        EventType = "THREAD_CREATE"
	EventTypeThreadUpdate                        EventType = "THREAD_UPDATE"
	EventTypeThreadDelete                        EventType = "THREAD_DELETE"
	EventTypeThreadListSync                      EventType = "THREAD_LIST_SYNC"
	EventTypeThreadMemberUpdate                  EventType = "THREAD_MEMBER_UPDATE"
	EventTypeThreadMembersUpdate                 EventType = "THREAD_MEMBERS_UPDATE"
	EventTypeEntitlementCreate                   EventType = "ENTITLEMENT_CREATE"
	EventTypeEntitlementUpdate                   EventType = "ENTITLEMENT_UPDATE"
	EventTypeEntitlementDelete                   EventType = "ENTITLEMENT_DELETE"
	EventTypeGuildCreate                         EventType = "GUILD_CREATE"
	EventTypeGuildUpdate                         EventType = "GUILD_UPDATE"
	EventTypeGuildDelete                         EventType = "GUILD_DELETE"
	EventTypeGuildAuditLogEntryCreate            EventType = "GUILD_AUDIT_LOG_ENTRY_CREATE"
	EventTypeGuildBanAdd                         EventType = "GUILD_BAN_ADD"
	EventTypeGuildBanRemove                      EventType = "GUILD_BAN_REMOVE"
	EventTypeGuildEmojisUpdate                   EventType = "GUILD_EMOJIS_UPDATE"
	EventTypeGuildStickersUpdate                 EventType = "GUILD_STICKERS_UPDATE"
	EventTypeGuildIntegrationsUpdate             EventType = "GUILD_INTEGRATIONS_UPDATE"
	EventTypeGuildMemberAdd                      EventType = "GUILD_MEMBER_ADD"
	EventTypeGuildMemberRemove                   EventType = "GUILD_MEMBER_REMOVE"
	EventTypeGuildMemberUpdate                   EventType = "GUILD_MEMBER_UPDATE"
	EventTypeGuildMembersChunk                   EventType = "GUILD_MEMBERS_CHUNK"
	EventTypeGuildRoleCreate                     EventType = "GUILD_ROLE_CREATE"
	EventTypeGuildRoleUpdate                     EventType = "GUILD_ROLE_UPDATE"
	EventTypeGuildRoleDelete                     EventType = "GUILD_ROLE_DELETE"
	EventTypeGuildScheduledEventCreate           EventType = "GUILD_SCHEDULED_EVENT_CREATE"
	EventTypeGuildScheduledEventUpdate           EventType = "GUILD_SCHEDULED_EVENT_UPDATE"
	EventTypeGuildScheduledEventDelete           EventType = "GUILD_SCHEDULED_EVENT_DELETE"
	EventTypeGuildScheduledEventUserAdd          EventType = "GUILD_SCHEDULED_EVENT_USER_ADD"
	EventTypeGuildScheduledEventUserRemove       EventType = "GUILD_SCHEDULED_EVENT_USER_REMOVE"
	EventTypeIntegrationCreate                   EventType = "INTEGRATION_CREATE"
	EventTypeIntegrationUpdate                   EventType = "INTEGRATION_UPDATE"
	EventTypeIntegrationDelete                   EventType = "INTEGRATION_DELETE"
	EventTypeInteractionCreate                   EventType = "INTERACTION_CREATE"
	EventTypeInviteCreate                        EventType = "INVITE_CREATE"
	EventTypeInviteDelete                        EventType = "INVITE_DELETE"
	EventTypeMessageCreate                       EventType = "MESSAGE_CREATE"
	EventTypeMessageUpdate                       EventType = "MESSAGE_UPDATE"
	EventTypeMessageDelete                       EventType = "MESSAGE_DELETE"
	EventTypeMessageDeleteBulk                   EventType = "MESSAGE_DELETE_BULK"
	EventTypeMessageReactionAdd                  EventType = "MESSAGE_REACTION_ADD"
	EventTypeMessageReactionRemove               EventType = "MESSAGE_REACTION_REMOVE"
	EventTypeMessageReactionRemoveAll            EventType = "MESSAGE_REACTION_REMOVE_ALL"
	EventTypeMessageReactionRemoveEmoji          EventType = "MESSAGE_REACTION_REMOVE_EMOJI"
	EventTypePresenceUpdate                      EventType = "PRESENCE_UPDATE"
	EventTypeStageInstanceCreate                 EventType = "STAGE_INSTANCE_CREATE"
	EventTypeStageInstanceUpdate                 EventType = "STAGE_INSTANCE_UPDATE"
	EventTypeStageInstanceDelete                 EventType = "STAGE_INSTANCE_DELETE"
	EventTypeTypingStart                         EventType = "TYPING_START"
	EventTypeUserUpdate                          EventType = "USER_UPDATE"
	EventTypeVoiceStateUpdate                    EventType = "VOICE_STATE_UPDATE"
	EventTypeVoiceServerUpdate                   EventType = "VOICE_SERVER_UPDATE"
	EventTypeWebhooksUpdate                      EventType = "WEBHOOKS_UPDATE"
)

type ExplicitContentFilterLevel

type ExplicitContentFilterLevel int
const (
	ExplicitContentFilterLevelDisabled            ExplicitContentFilterLevel = 0
	ExplicitContentFilterLevelMembersWithoutRoles ExplicitContentFilterLevel = 1
	ExplicitContentFilterLevelAllMembers          ExplicitContentFilterLevel = 2
)

type File

type File struct {
	Filename    string `json:"filename"`
	ContentType string `json:"content_type"`
	Data        []byte `json:"data"`
}

func (*File) MarshalJSON

func (f *File) MarshalJSON() ([]byte, error)

func (*File) UnmarshalJSON

func (f *File) UnmarshalJSON(data []byte) error

type ForumLayoutType

type ForumLayoutType int
const (
	ForumLayoutTypeNotSet      ForumLayoutType = 0
	ForumLayoutTypeListView    ForumLayoutType = 1
	ForumLayoutTypeGalleryView ForumLayoutType = 2
)

type ForumTag

type ForumTag struct {
	ID        Snowflake           `json:"id"`
	Name      string              `json:"name"`
	Moderated bool                `json:"moderated"`
	EmojiID   Nullable[Snowflake] `json:"emoji_id"`
	EmojiName Nullable[string]    `json:"emoji_name"`
}

type GatewayBotGetRequest

type GatewayBotGetRequest struct{}

type GatewayBotGetResponse

type GatewayBotGetResponse struct {
	URL    string `json:"url"`
	Shards int    `json:"shards"`
	SessionStartLimit
}

type GatewayEvent

type GatewayEvent struct {
	Operation GatewayOpcode `json:"op"`
	Sequence  int64         `json:"s"`
	Type      EventType     `json:"t"`
	Data      interface{}   `json:"d"`
}

func (*GatewayEvent) UnmarshalJSON

func (e *GatewayEvent) UnmarshalJSON(raw []byte) error

type GatewayOpcode

type GatewayOpcode int
const (
	GatewayOpcodeDispatch            GatewayOpcode = 0
	GatewayOpcodeHeartbeat           GatewayOpcode = 1
	GatewayOpcodeIdentify            GatewayOpcode = 2
	GatewayOpcodePresenceUpdate      GatewayOpcode = 3
	GatewayOpcodeVoiceStateUpdate    GatewayOpcode = 4
	GatewayOpcodeResume              GatewayOpcode = 5
	GatewayOpcodeReconnect           GatewayOpcode = 6
	GatewayOpcodeRequestGuildMembers GatewayOpcode = 8
	GatewayOpcodeInvalidSession      GatewayOpcode = 9
	GatewayOpcodeHello               GatewayOpcode = 10
	GatewayOpcodeHeartbeatAck        GatewayOpcode = 11
)

type Guild

type Guild struct {
	ID                          Snowflake                       `json:"id"`
	Name                        string                          `json:"name"`
	Icon                        Nullable[string]                `json:"icon"`
	IconHash                    Optional[Nullable[string]]      `json:"icon_hash,omitempty"`
	Splash                      Nullable[string]                `json:"splash"`
	DiscoverySplash             Nullable[string]                `json:"discovery_splash"`
	Owner                       Optional[bool]                  `json:"owner,omitempty"`
	OwnerID                     Snowflake                       `json:"owner_id"`
	Permissions                 Optional[Permissions]           `json:"permissions,omitempty"`
	Region                      Optional[string]                `json:"region,omitempty"`
	AFKChannelID                Nullable[Snowflake]             `json:"afk_channel_id"`
	AFKTimeout                  int                             `json:"afk_timeout"`
	WidgetEnabled               Optional[bool]                  `json:"widget_enabled,omitempty"`
	WidgetChannelID             Optional[Nullable[Snowflake]]   `json:"widget_channel_id,omitempty"`
	VerificationLevel           VerificationLevel               `json:"verification_level"`
	DefaultMessageNotifications DefaultMessageNotificationlevel `json:"default_message_notifications"`
	ExplicitContentFilter       ExplicitContentFilterLevel      `json:"explicit_content_filter"`
	Roles                       []Role                          `json:"roles"`
	Emojis                      []Emoji                         `json:"emojis"`
	Features                    []string                        `json:"features"`
	MFALevel                    MFALevel                        `json:"mfa_level"`
	ApplicationID               Nullable[Snowflake]             `json:"application_id"`
	SystemChannelID             Nullable[Snowflake]             `json:"system_channel_id"`
	SystemChannelFlags          SystemChannelFlags              `json:"system_channel_flags"`
	MaxPresences                Optional[Nullable[int]]         `json:"max_presences,omitempty"`
	MaxMembers                  Optional[int]                   `json:"max_members,omitempty"`
	VanityURLCode               Nullable[string]                `json:"vanity_url_code"`
	Description                 Nullable[string]                `json:"description"`
	Banner                      Nullable[string]                `json:"banner"`
	PremiumTier                 PremiumTier                     `json:"premium_tier"`
	PremiumSubscriptionCount    Optional[int]                   `json:"premium_subscription_count,omitempty"`
	PreferredLocale             string                          `json:"preferred_locale"`
	PublicUpdatesChannelID      Nullable[Snowflake]             `json:"public_updates_channel_id"`
	MaxVideoChannelUsers        Optional[int]                   `json:"max_video_channel_users,omitempty"`
	MaxStageVideoChannelUsers   Optional[int]                   `json:"max_stage_video_channel_users,omitempty"`
	ApproximateMemberCount      Optional[int]                   `json:"approximate_member_count,omitempty"`
	ApproximatePresenceCount    Optional[int]                   `json:"approximate_presence_count,omitempty"`
	WelcomeScreen               Optional[WelcomeScreen]         `json:"welcome_screen,omitempty"`
	NSFWLevel                   GuildNSFWLevel                  `json:"nsfw_level"`
	Stickers                    []Sticker                       `json:"stickers,omitempty"`
	PremiumProgressBarEnabled   bool                            `json:"premium_progress_bar_enabled"`
	SafetyAlertsChannelID       Nullable[Snowflake]             `json:"safety_alerts_channel_id"`
	// Only in guild events
	JoinedAt             Optional[time.Time] `json:"joined_at,omitempty"`
	Large                Optional[bool]      `json:"large,omitempty"`
	Unavailable          Optional[bool]      `json:"unavailable"`
	MemberCount          Optional[int]       `json:"member_count,omitempty"`
	Members              []Member            `json:"members,omitempty"`
	Channels             []Channel           `json:"channels,omitempty"`
	StageInstances       []StageInstance     `json:"stage_instances,omitempty"`
	GuildScheduledEvents []ScheduledEvent    `json:"guild_scheduled_events,omitempty"`
}

type GuildChannelCreateRequest

type GuildChannelCreateRequest struct{} // TODO

type GuildChannelCreateResponse

type GuildChannelCreateResponse = Channel

type GuildChannelListRequest

type GuildChannelListRequest struct {
	GuildID Snowflake `json:"guild_id"`
}

type GuildChannelListResponse

type GuildChannelListResponse = []Channel

type GuildChannelModifyPositionsEntry

type GuildChannelModifyPositionsEntry struct {
	ID              Snowflake           `json:"id"`
	Position        Optional[int]       `json:"position"`
	LockPermissions Optional[bool]      `json:"lock_permissions"`
	ParentID        Optional[Snowflake] `json:"parent_id"`
}

type GuildChannelModifyPositionsRequest

type GuildChannelModifyPositionsRequest = []GuildChannelModifyPositionsEntry

type GuildChannelModifyPositionsResponse

type GuildChannelModifyPositionsResponse struct{}

type GuildCreateEvent

type GuildCreateEvent = Guild

type GuildDeleteEvent

type GuildDeleteEvent = UnavailableGuild

type GuildEmojiListRequest

type GuildEmojiListRequest struct {
	GuildID Snowflake `json:"guild_id"`
}

type GuildEmojiListResponse

type GuildEmojiListResponse = []Emoji

type GuildEmojisUpdateEvent

type GuildEmojisUpdateEvent struct {
	GuildID Snowflake `json:"guild_id"`
	Emojis  []Emoji   `json:"emojis"`
}

type GuildGetRequest

type GuildGetRequest struct {
	GuildID Snowflake `json:"guild_id"`
}

type GuildGetResponse

type GuildGetResponse = Guild

type GuildIntegrationDeleteRequest

type GuildIntegrationDeleteRequest struct {
	GuildID       Snowflake `json:"guild_id"`
	IntegrationID Snowflake `json:"integration_id"`
}

type GuildIntegrationListRequest

type GuildIntegrationListRequest struct {
	GuildID Snowflake `json:"guild_id"`
}

type GuildIntegrationListResponse

type GuildIntegrationListResponse = []Integration

type GuildIntegrationsUpdateEvent

type GuildIntegrationsUpdateEvent struct {
	GuildID Snowflake `json:"guild_id"`
}

type GuildIntegtrationDeleteResponse

type GuildIntegtrationDeleteResponse struct{}

type GuildInviteListRequest

type GuildInviteListRequest struct {
	GuildID Snowflake `json:"guild_id"`
}

type GuildInviteListResponse

type GuildInviteListResponse = []Invite

type GuildMemberListRequest

type GuildMemberListRequest struct {
	GuildID Snowflake           `json:"guild_id"`
	Limit   Optional[int]       `json:"limit,omitempty"`
	After   Optional[Snowflake] `json:"after,omitempty"`
}

type GuildMemberListResponse

type GuildMemberListResponse = []Member

type GuildMemberSearchRequest

type GuildMemberSearchRequest struct {
	GuildID Snowflake     `json:"guild_id"`
	Query   string        `json:"query"`
	Limit   Optional[int] `json:"limit,omitempty"`
}

type GuildMemberSearchResponse

type GuildMemberSearchResponse = []Member

type GuildNSFWLevel

type GuildNSFWLevel int
const (
	GuildNSFWLevelDefault       GuildNSFWLevel = 0
	GuildNSFWLevelExplicit      GuildNSFWLevel = 1
	GuildNSFWLevelSafe          GuildNSFWLevel = 2
	GuildNSFWLevelAgeRestricted GuildNSFWLevel = 3
)

type GuildRoleListRequest

type GuildRoleListRequest struct {
	GuildID Snowflake `json:"guild_id"`
}

type GuildRoleListResponse

type GuildRoleListResponse = []Role

type GuildScheduledEventListRequest

type GuildScheduledEventListRequest struct {
	GuildID       Snowflake      `json:"guild_id"`
	WithUserCount Optional[bool] `json:"with_user_count,omitempty"`
}

type GuildScheduledEventListResponse

type GuildScheduledEventListResponse = []ScheduledEvent

type GuildStickerListRequest

type GuildStickerListRequest struct {
	GuildID Snowflake `json:"guild_id"`
}

type GuildStickerListResponse

type GuildStickerListResponse = []Sticker

type GuildStickersUpdateEvent

type GuildStickersUpdateEvent struct {
	GuildID  Snowflake `json:"guild_id"`
	Stickers []Sticker `json:"stickers"`
}

type GuildThreadListActiveRequest

type GuildThreadListActiveRequest struct {
	GuildID Snowflake `json:"guild_id"`
}

type GuildThreadListActiveResponse

type GuildThreadListActiveResponse struct {
	Threads []Channel      `json:"threads"`
	Members []ThreadMember `json:"members"`
}

type GuildUpdateEvent

type GuildUpdateEvent = Guild

type GuildUpdateRequest

type GuildUpdateRequest struct {
	GuildID                     Snowflake                                 `json:"guild_id"`
	Name                        Optional[string]                          `json:"name,omitempty"`
	Region                      Optional[Nullable[string]]                `json:"region,omitempty"`
	VerificationLevel           Optional[VerificationLevel]               `json:"verification_level,omitempty"`
	DefaultMessageNotifications Optional[DefaultMessageNotificationlevel] `json:"default_message_notifications,omitempty"`
	ExplicitContentFilter       Optional[ExplicitContentFilterLevel]      `json:"explicit_content_filter,omitempty"`
	AFKChannelID                Optional[Nullable[Snowflake]]             `json:"afk_channel_id,omitempty"`
	AFKTimeout                  Optional[int]                             `json:"afk_timeout,omitempty"`
	Icon                        Optional[Nullable[string]]                `json:"icon,omitempty"`
	OwnerID                     Optional[Snowflake]                       `json:"owner_id,omitempty"`
	Splash                      Optional[Nullable[string]]                `json:"splash,omitempty"`
	DiscoverySplash             Optional[Nullable[string]]                `json:"discovery_splash,omitempty"`
	Banner                      Optional[Nullable[string]]                `json:"banner,omitempty"`
	SystemChannelID             Optional[Nullable[Snowflake]]             `json:"system_channel_id,omitempty"`
	SystemChannelFlags          Optional[SystemChannelFlags]              `json:"system_channel_flags,omitempty"`
	RulesChannelID              Optional[Nullable[Snowflake]]             `json:"rules_channel_id,omitempty"`
	PublicUpdatesChannelID      Optional[Nullable[Snowflake]]             `json:"public_updates_channel_id,omitempty"`
	PreferredLocale             Optional[Nullable[string]]                `json:"preferred_locale,omitempty"`
	Features                    []string                                  `json:"features,omitempty"`
	Description                 Optional[Nullable[string]]                `json:"description,omitempty"`
	PremiumProgressBarEnabled   Optional[bool]                            `json:"premium_progress_bar_enabled,omitempty"`
	SafetyAlertsChannelID       Optional[Nullable[Snowflake]]             `json:"safety_alerts_channel_id,omitempty"`
}

type GuildUpdateResponse

type GuildUpdateResponse = Guild

type GuildWebhookListRequest

type GuildWebhookListRequest struct {
	GuildID Snowflake `json:"guild_id"`
}

type GuildWebhookListResponse

type GuildWebhookListResponse = []Webhook

type HeartbeatData

type HeartbeatData int64

type HelloData

type HelloData struct {
	HeartbeatInterval int `json:"heartbeat_interval"`
}

type IdentifyData

type IdentifyData struct {
	Token          string                       `json:"token"`
	Properties     ConnectionProperties         `json:"properties"`
	Compress       Optional[bool]               `json:"compress,omitempty"`
	LargeThreshold Optional[int]                `json:"large_threshold,omitempty"`
	Shard          Optional[[2]int]             `json:"shard,omitempty"`
	Presence       Optional[PresenceUpdateData] `json:"presence,omitempty"`
	Intents        int                          `json:"intents"`
}

type InstallParams

type InstallParams struct {
	Scopes      []string    `json:"scopes"`
	Permissions Permissions `json:"permissions"`
}

type IntOrString

type IntOrString struct {
	Int    int
	String string
}

func (IntOrString) MarshalJSON

func (i IntOrString) MarshalJSON() ([]byte, error)

func (*IntOrString) UnmarshalJSON

func (i *IntOrString) UnmarshalJSON(data []byte) error

type Integration

type Integration struct {
	ID                Snowflake                           `json:"id"`
	Name              string                              `json:"name"`
	Type              IntegrationType                     `json:"type"`
	Enabled           bool                                `json:"enabled"`
	Syncing           Optional[bool]                      `json:"syncing,omitempty"`
	RoleID            Optional[Snowflake]                 `json:"role_id,omitempty"`
	EnableEmoticons   Optional[bool]                      `json:"enable_emoticons,omitempty"`
	ExpireBehavior    Optional[IntegrationExpireBehavior] `json:"expire_behavior,omitempty"`
	ExpireGracePeriod Optional[int]                       `json:"expire_grace_period,omitempty"`
	User              Optional[User]                      `json:"user,omitempty"`
	Account           IntegrationAccount                  `json:"account"`
	SyncedAt          Optional[time.Time]                 `json:"synced_at,omitempty"`
	SubscriberCount   Optional[int]                       `json:"subscriber_count,omitempty"`
	Revoked           Optional[bool]                      `json:"revoked,omitempty"`
	Application       Optional[Application]               `json:"application,omitempty"`
	Scopes            []string                            `json:"scopes,omitempty"`
}

type IntegrationAccount

type IntegrationAccount struct {
	ID   string `json:"id"`
	Name string `json:"name"`
}

type IntegrationCreateEvent

type IntegrationCreateEvent = Integration

type IntegrationDeleteEvent

type IntegrationDeleteEvent struct {
	ID            Snowflake           `json:"id"`
	GuildID       Snowflake           `json:"guild_id"`
	ApplicationID Optional[Snowflake] `json:"application_id,omitempty"`
}

type IntegrationExpireBehavior

type IntegrationExpireBehavior int
const (
	IntegrationExpireBehaviorRemoveRole IntegrationExpireBehavior = 0
	IntegrationExpireBehaviorKick       IntegrationExpireBehavior = 1
)

type IntegrationType

type IntegrationType string
const (
	IntegrationTypeTwitch            IntegrationType = "twitch"
	IntegrationTypeYouTube           IntegrationType = "youtube"
	IntegrationTypeDiscord           IntegrationType = "discord"
	IntegrationTypeGuildSubscription IntegrationType = "guild_subscription"
)

type IntegrationUpdateEvent

type IntegrationUpdateEvent = Integration

type Interaction

type Interaction struct {
	ID             Snowflake           `json:"id"`
	ApplicationID  Snowflake           `json:"application_id"`
	Type           InteractionType     `json:"type"`
	Data           InteractionData     `json:"data,omitempty"`
	GuildID        Optional[Snowflake] `json:"guild_id,omitempty"`
	Channel        Optional[Channel]   `json:"channel,omitempty"`
	ChannelID      Optional[Snowflake] `json:"channel_id,omitempty"`
	Member         Optional[Member]    `json:"member,omitempty"`
	User           Optional[User]      `json:"user,omitempty"`
	Token          string              `json:"token"`
	Version        int                 `json:"version"`
	Message        Optional[Message]   `json:"message,omitempty"`
	AppPermissions Optional[string]    `json:"app_permissions,omitempty"`
	Locale         Optional[string]    `json:"locale,omitempty"`
	GuildLocale    Optional[string]    `json:"guild_locale,omitempty"`
	Entitlements   []Entitlement       `json:"entitlements,omitempty"`
}

func (*Interaction) UnmarshalJSON

func (i *Interaction) UnmarshalJSON(raw []byte) error

type InteractionAutocompleteResponse

type InteractionAutocompleteResponse struct{} // TODO

func (InteractionAutocompleteResponse) InteractionResponseType

func (InteractionAutocompleteResponse) InteractionResponseType() InteractionResponseType

type InteractionCreateEvent

type InteractionCreateEvent = Interaction

type InteractionData

type InteractionData interface {
	InteractionType() InteractionType
}

type InteractionFollowupCreateRequest

type InteractionFollowupCreateRequest struct {
	ApplicationID    Snowflake `json:"application_id"`
	InteractionToken string    `json:"interaction_token"`
	MessageCreateParams
}

type InteractionFollowupCreateResponse

type InteractionFollowupCreateResponse = Message

type InteractionFollowupDeleteRequest

type InteractionFollowupDeleteRequest struct {
	ApplicationID    Snowflake `json:"application_id"`
	InteractionToken string    `json:"interaction_token"`
	MessageID        Snowflake `json:"message_id"`
}

type InteractionFollowupDeleteResponse

type InteractionFollowupDeleteResponse struct{}

type InteractionFollowupEditRequest

type InteractionFollowupEditRequest struct {
	ApplicationID    Snowflake `json:"application_id"`
	InteractionToken string    `json:"interaction_token"`
	MessageID        Snowflake `json:"message_id"`
	MessageEditParams
}

type InteractionFollowupEditResponse

type InteractionFollowupEditResponse = Message

type InteractionFollowupGetRequest

type InteractionFollowupGetRequest struct {
	ApplicationID    Snowflake `json:"application_id"`
	InteractionToken string    `json:"interaction_token"`
	MessageID        Snowflake `json:"message_id"`
}

type InteractionFollowupGetResponse

type InteractionFollowupGetResponse = Message

type InteractionMessageResponse

type InteractionMessageResponse struct{} // TODO

func (InteractionMessageResponse) InteractionResponseType

func (InteractionMessageResponse) InteractionResponseType() InteractionResponseType

type InteractionModalResponse

type InteractionModalResponse struct{} // TODO

func (InteractionModalResponse) InteractionResponseType

func (InteractionModalResponse) InteractionResponseType() InteractionResponseType

type InteractionResponse

type InteractionResponse struct {
	Type InteractionResponseType `json:"type"`
	Data InteractionResponseData `json:"data,omitempty"` // TODO: implement unmarshaler
}

type InteractionResponseCreateRequest

type InteractionResponseCreateRequest struct {
	InteractionID    Snowflake `json:"interaction_id"`
	InteractionToken string    `json:"interaction_token"`
	InteractionResponse
}

type InteractionResponseCreateResponse

type InteractionResponseCreateResponse struct{}

type InteractionResponseData

type InteractionResponseData interface {
	InteractionResponseType() InteractionResponseType
}

type InteractionResponseDeleteRequest

type InteractionResponseDeleteRequest struct {
	ApplicationID    Snowflake `json:"application_id"`
	InteractionToken string    `json:"interaction_token"`
}

type InteractionResponseDeleteResponse

type InteractionResponseDeleteResponse struct{}

type InteractionResponseEditRequest

type InteractionResponseEditRequest struct {
	ApplicationID    Snowflake `json:"application_id"`
	InteractionToken string    `json:"interaction_token"`
	MessageEditParams
}

type InteractionResponseEditResponse

type InteractionResponseEditResponse = Message

type InteractionResponseGetRequest

type InteractionResponseGetRequest struct {
	ApplicationID    Snowflake `json:"application_id"`
	InteractionToken string    `json:"interaction_token"`
}

type InteractionResponseGetResponse

type InteractionResponseGetResponse = Message

type InteractionResponseType

type InteractionResponseType int
const (
	InteractionResponseTypePong                                 InteractionResponseType = 1
	InteractionResponseTypeChannelMessageWithSource             InteractionResponseType = 4
	InteractionResponseTypeDeferredChannelMessageWithSource     InteractionResponseType = 5
	InteractionResponseTypeDeferredUpdateMessage                InteractionResponseType = 6
	InteractionResponseTypeUpdateMessage                        InteractionResponseType = 7
	InteractionResponseTypeApplicationCommandAutocompleteResult InteractionResponseType = 8
	InteractionResponseTypeModal                                InteractionResponseType = 9
	InteractionResponseTypePremiumRequired                      InteractionResponseType = 10
)

type InteractionType

type InteractionType int
const (
	InteractionTypePing                           InteractionType = 1
	InteractionTypeApplicationCommand             InteractionType = 2
	InteractionTypeMessageComponent               InteractionType = 3
	InteractionTypeApplicationCommandAutocomplete InteractionType = 4
	InteractionTypeModalSubmit                    InteractionType = 5
)

type Invite

type Invite struct {
	Code                     string                     `json:"code"`
	Guild                    Optional[Guild]            `json:"guild,omitempty"`
	Channel                  Nullable[Channel]          `json:"channel"`
	Inviter                  Optional[User]             `json:"inviter,omitempty"`
	TargetType               Optional[InviteTargetType] `json:"target_type,omitempty"`
	TargetUser               Optional[User]             `json:"target_user,omitempty"`
	TargetApplication        Optional[Application]      `json:"target_application,omitempty"`
	ApproximatePresenceCount Optional[int]              `json:"approximate_presence_count,omitempty"`
	ApproximateMemberCount   Optional[int]              `json:"approximate_member_count,omitempty"`
	ExpiresAt                Optional[Nullable[string]] `json:"expires_at,omitempty"`
	StageInstance            Optional[StageInstance]    `json:"stage_instance,omitempty"`
	GuildScheduledEvent      Optional[ScheduledEvent]   `json:"guild_scheduled_event,omitempty"`

	// Extra metadata for the invite, like the number of times it's been used
	Uses      Optional[int]       `json:"uses"`
	MaxUses   Optional[int]       `json:"max_uses"`
	MaxAge    Optional[int]       `json:"max_age"`
	Temporary Optional[bool]      `json:"temporary"`
	CreatedAt Optional[time.Time] `json:"created_at"`
}

type InviteCreateEvent

type InviteCreateEvent struct {
	ChannelID         Snowflake                  `json:"channel_id"`
	Code              string                     `json:"code"`
	CreatedAt         time.Time                  `json:"created_at"`
	GuildID           Optional[Snowflake]        `json:"guild_id,omitempty"`
	Inviter           Optional[User]             `json:"inviter,omitempty"`
	MaxAge            int                        `json:"max_age"`
	MaxUses           int                        `json:"max_uses"`
	TargetType        Optional[InviteTargetType] `json:"target_type"`
	TargetUser        Optional[User]             `json:"target_user,omitempty"`
	TargetApplication Optional[Application]      `json:"target_application,omitempty"`
	Temporary         bool                       `json:"temporary"`
	Uses              int                        `json:"uses"`
}

type InviteDeleteEvent

type InviteDeleteEvent struct {
	ChannelID Snowflake           `json:"channel_id"`
	GuildID   Optional[Snowflake] `json:"guild_id,omitempty"`
	Code      string              `json:"code"`
}

type InviteDeleteRequest

type InviteDeleteRequest struct {
	Code string `json:"code"`
}

type InviteDeleteResponse

type InviteDeleteResponse = Invite

type InviteGetRequest

type InviteGetRequest struct {
	Code                  string              `json:"code"`
	WithCounts            Optional[bool]      `json:"with_counts,omitempty"`
	WithExpiration        Optional[bool]      `json:"with_expiration,omitempty"`
	GuildScheduledEventID Optional[Snowflake] `json:"guild_scheduled_event_id,omitempty"`
}

type InviteGetResponse

type InviteGetResponse = Invite

type InviteTargetType

type InviteTargetType int
const (
	InviteTargetTypeStream              InviteTargetType = 1
	InviteTargetTypeEmbeddedApplication InviteTargetType = 2
)

type MFALevel

type MFALevel int
const (
	MFALevelNone     MFALevel = 0
	MFALevelElevated MFALevel = 1
)

type Member

type Member struct {
	User                       Optional[User]             `json:"user,omitempty"`
	Nick                       Optional[Nullable[string]] `json:"nick,omitempty"`
	Avatar                     Optional[Nullable[string]] `json:"avatar,omitempty"`
	Roles                      []Snowflake                `json:"roles"`
	JoinedAt                   time.Time                  `json:"joined_at"`
	PremiumSince               Optional[time.Time]        `json:"premium_since,omitempty"`
	Deaf                       bool                       `json:"deaf"`
	Mute                       bool                       `json:"mute"`
	Flags                      MemberFlags                `json:"flags"`
	Pending                    Optional[bool]             `json:"pending,omitempty"`
	Permissions                Optional[Permissions]      `json:"permissions,omitempty"`
	CommunicationDisabledUntil Optional[time.Time]        `json:"communication_disabled_until,omitempty"`
}

type MemberAddEvent

type MemberAddEvent struct {
	Member
	GuildID Snowflake `json:"guild_id"`
}

type MemberAddRequest

type MemberAddRequest struct {
	GuildID     Snowflake        `json:"guild_id"`
	UserID      Snowflake        `json:"user_id"`
	AccessToken string           `json:"access_token"`
	Nick        Optional[string] `json:"nick,omitempty"`
	Roles       []Snowflake      `json:"roles,omitempty"`
	Mute        Optional[bool]   `json:"mute,omitempty"`
	Deaf        Optional[bool]   `json:"deaf,omitempty"`
}

type MemberChunkEvent

type MemberChunkEvent struct {
	GuildID    Snowflake   `json:"guild_id"`
	Members    []Member    `json:"members"`
	ChunkIndex int         `json:"chunk_index"`
	ChunkCount int         `json:"chunk_count"`
	NotFound   []Snowflake `json:"not_found,omitempty"`
	Nonce      string      `json:"nonce,omitempty"`
}

type MemberFlags

type MemberFlags int
const (
	MemberFlagsDidRejoin            MemberFlags = 1 << 0
	MemberFlagsCompletedOnboarding  MemberFlags = 1 << 1
	MemberFlagsBypassesVerification MemberFlags = 1 << 2
	MemberFlagsStartedOnboarding    MemberFlags = 1 << 3
)

type MemberGetRequest

type MemberGetRequest struct {
	GuildID Snowflake `json:"guild_id"`
	UserID  Snowflake `json:"user_id"`
}

type MemberGetResponse

type MemberGetResponse = Member

type MemberModifyCurrentRequest

type MemberModifyCurrentRequest struct {
	GuildID Snowflake        `json:"guild_id"`
	Nick    Optional[string] `json:"nick,omitempty"`
}

type MemberModifyCurrentResponse

type MemberModifyCurrentResponse struct{}

type MemberModifyRequest

type MemberModifyRequest struct {
	GuildID                    Snowflake             `json:"guild_id"`
	UserID                     Snowflake             `json:"user_id"`
	Nick                       Optional[string]      `json:"nick,omitempty"`
	Roles                      []Snowflake           `json:"roles,omitempty"`
	Mute                       Optional[bool]        `json:"mute,omitempty"`
	Deaf                       Optional[bool]        `json:"deaf,omitempty"`
	ChannelID                  Optional[Snowflake]   `json:"channel_id,omitempty"`
	CommunicationDisabledUntil Optional[time.Time]   `json:"communication_disabled_until,omitempty"`
	Flags                      Optional[MemberFlags] `json:"flags,omitempty"`
}

type MemberModifyResponse

type MemberModifyResponse = Member

type MemberPruneCountRequest

type MemberPruneCountRequest struct {
	GuildID      Snowflake   `json:"guild_id"`
	Days         int         `json:"days"`
	IncludeRoles []Snowflake `json:"include_roles,omitempty"`
}

type MemberPruneCountResponse

type MemberPruneCountResponse struct {
	Pruned int `json:"pruned"`
}

type MemberPruneRequest

type MemberPruneRequest struct {
	GuildID           Snowflake      `json:"guild_id"`
	Days              int            `json:"days"`
	ComputePruneCount Optional[bool] `json:"compute_prune_count,omitempty"`
	IncludeRoles      []Snowflake    `json:"include_roles,omitempty"`
}

type MemberPruneResponse

type MemberPruneResponse struct {
	Pruned Nullable[int] `json:"pruned"`
}

type MemberRemoveEvent

type MemberRemoveEvent struct {
	User    User      `json:"user"`
	GuildID Snowflake `json:"guild_id"`
}

type MemberRemoveRequest

type MemberRemoveRequest struct {
	GuildID Snowflake `json:"guild_id"`
	UserID  Snowflake `json:"user_id"`
}

type MemberRemoveResponse

type MemberRemoveResponse struct{}

type MemberRoleAddRequest

type MemberRoleAddRequest struct {
	GuildID Snowflake `json:"guild_id"`
	UserID  Snowflake `json:"user_id"`
	RoleID  Snowflake `json:"role_id"`
}

type MemberRoleAddResponse

type MemberRoleAddResponse struct{}

type MemberRoleRemoveRequest

type MemberRoleRemoveRequest struct {
	GuildID Snowflake `json:"guild_id"`
	UserID  Snowflake `json:"user_id"`
	RoleID  Snowflake `json:"role_id"`
}

type MemberRoleRemoveResponse

type MemberRoleRemoveResponse struct{}

type MemberUpdateEvent

type MemberUpdateEvent = Member

type MembershipState

type MembershipState int
const (
	MembershipStateInvited  MembershipState = 1
	MembershipStateAccepted MembershipState = 2
)

type Message

type Message struct {
	ID                   Snowflake                      `json:"id"`
	ChannelID            Snowflake                      `json:"channel_id"`
	Author               User                           `json:"author"`
	Content              string                         `json:"content"`
	Timestamp            time.Time                      `json:"timestamp"`
	EditedTimestamp      Nullable[time.Time]            `json:"edited_timestamp"`
	TTS                  bool                           `json:"tts"`
	MentionEveryone      bool                           `json:"mention_everyone"`
	Mentions             []User                         `json:"mentions"`
	MentionRoles         []Snowflake                    `json:"mention_roles"`
	MentionChannels      []ChannelMention               `json:"mention_channels,omitempty"`
	Attachments          []Attachment                   `json:"attachments"`
	Embeds               []Embed                        `json:"embeds"`
	Reactions            []Reaction                     `json:"reactions,omitempty"`
	Nonce                Optional[IntOrString]          `json:"nonce,omitempty"`
	Pinned               bool                           `json:"pinned"`
	WebhookID            Optional[Snowflake]            `json:"webhook_id,omitempty"`
	Type                 MessageType                    `json:"type"`
	Activity             Optional[MessageActivity]      `json:"activity,omitempty"`
	Application          Optional[Application]          `json:"application,omitempty"`
	ApplicationID        Optional[Snowflake]            `json:"application_id,omitempty"`
	MessageReference     Optional[MessageReference]     `json:"message_reference,omitempty"`
	Flags                Optional[MessageFlags]         `json:"flags,omitempty"`
	ReferencedMessage    Optional[Nullable[Message]]    `json:"referenced_message,omitempty"`
	Interaction          Optional[MessageInteraction]   `json:"interaction,omitempty"`
	Thread               Optional[Channel]              `json:"thread,omitempty"`
	Components           []MessageComponent             `json:"components,omitempty"`
	StickerItems         []MessageStickerItem           `json:"sticker_items,omitempty"`
	Stickers             []Sticker                      `json:"stickers,omitempty"`
	Position             Optional[int]                  `json:"position,omitempty"`
	RoleSubscriptionData Optional[RoleSubscriptionData] `json:"role_subscription_data,omitempty"`
	Resolved             Optional[ResolvedData]         `json:"resolved,omitempty"`
	// Only set for message events
	GuildID Optional[Snowflake] `json:"guild_id,omitempty"`
	Member  Optional[Member]    `json:"member,omitempty"`
}

func (*Message) UnmarshalJSON

func (m *Message) UnmarshalJSON(data []byte) error

type MessageActivity

type MessageActivity struct {
	Type    MessageActivityType `json:"type"`
	PartyID string              `json:"party_id"`
}

type MessageActivityType

type MessageActivityType int
const (
	MessageActivityTypeJoin        MessageActivityType = 1
	MessageActivityTypeSpectate    MessageActivityType = 2
	MessageActivityTypeListen      MessageActivityType = 3
	MessageActivityTypeJoinRequest MessageActivityType = 5
)

type MessageBulkDeleteRequest

type MessageBulkDeleteRequest struct {
	ChannelID Snowflake   `json:"channel_id"`
	Messages  []Snowflake `json:"messages"`
}

type MessageBulkDeleteResponse

type MessageBulkDeleteResponse struct{}

type MessageComponent

type MessageComponent interface {
	json.Marshaler
	Type() MessageComponentType
}

type MessageComponentData

type MessageComponentData struct {
	CustomID      string                 `json:"custom_id"`
	ComponentType MessageComponentType   `json:"component_type"`
	Values        []string               `json:"values,omitempty"`
	Resolved      Optional[ResolvedData] `json:"resolved,omitempty"`
}

func (MessageComponentData) InteractionType

func (MessageComponentData) InteractionType() InteractionType

type MessageComponentType

type MessageComponentType int
const (
	MessageComponentTypeActionRow         MessageComponentType = 1
	MessageComponentTypeButton            MessageComponentType = 2
	MessageComponentTypeStringSelect      MessageComponentType = 3
	MessageComponentTypeTextInput         MessageComponentType = 4
	MessageComponentTypeUserSelect        MessageComponentType = 5
	MessageComponentTypeRoleSelect        MessageComponentType = 6
	MessageComponentTypeMentionableSelect MessageComponentType = 7
	MessageComponentTypeChannelSelect     MessageComponentType = 8
)

type MessageCreateEvent

type MessageCreateEvent = Message

type MessageCreateParams

type MessageCreateParams struct {
	Content          Optional[string]           `json:"content,omitempty"`
	Nonce            Optional[string]           `json:"nonce,omitempty"`
	TTS              Optional[bool]             `json:"tts,omitempty"`
	Embeds           []Embed                    `json:"embeds,omitempty"`
	AllowedMentions  Optional[AllowedMentions]  `json:"allowed_mentions,omitempty"`
	MessageReference Optional[MessageReference] `json:"message_reference,omitempty"`
	Components       []MessageComponent         `json:"components,omitempty"`
	StickerIDs       []Snowflake                `json:"sticker_ids,omitempty"`
	Attachments      []Attachment               `json:"attachments,omitempty"`
	Files            []File                     `json:"files,omitempty"`
	Flags            Optional[MessageFlags]     `json:"flags,omitempty"`
}

type MessageCreateRequest

type MessageCreateRequest struct {
	ChannelID Snowflake `json:"channel_id"`
	MessageCreateParams
}

type MessageCreateResponse

type MessageCreateResponse = Message

type MessageCrosspostRequest

type MessageCrosspostRequest struct {
	ChannelID Snowflake `json:"channel_id"`
	MessageID Snowflake `json:"message_id"`
}

type MessageCrosspostResponse

type MessageCrosspostResponse = Message

type MessageDeleteBulkEvent

type MessageDeleteBulkEvent struct {
	IDs       []Snowflake         `json:"ids"`
	ChannelID Snowflake           `json:"channel_id"`
	GuildID   Optional[Snowflake] `json:"guild_id,omitempty"`
}

type MessageDeleteEvent

type MessageDeleteEvent struct {
	ID        Snowflake           `json:"id"`
	ChannelID Snowflake           `json:"channel_id"`
	GuildID   Optional[Snowflake] `json:"guild_id,omitempty"`
}

type MessageDeleteRequest

type MessageDeleteRequest struct {
	ChannelID Snowflake `json:"channel_id"`
	MessageID Snowflake `json:"message_id"`
}

type MessageDeleteResponse

type MessageDeleteResponse struct{}

type MessageEditParams

type MessageEditParams struct {
	Content          Optional[string]           `json:"content,omitempty"`
	Embeds           []Embed                    `json:"embeds,omitempty"`
	AllowedMentions  Optional[AllowedMentions]  `json:"allowed_mentions,omitempty"`
	MessageReference Optional[MessageReference] `json:"message_reference,omitempty"`
	Components       []MessageComponent         `json:"components,omitempty"`
	StickerIDs       []Snowflake                `json:"sticker_ids,omitempty"`
	Attachments      []Attachment               `json:"attachments,omitempty"`
	Files            []File                     `json:"files,omitempty"`
	Flags            Optional[MessageFlags]     `json:"flags,omitempty"`
}

type MessageEditRequest

type MessageEditRequest struct {
	ChannelID Snowflake `json:"channel_id"`
	MessageID Snowflake `json:"message_id"`
	MessageEditParams
}

type MessageEditResponse

type MessageEditResponse = Message

type MessageFlags

type MessageFlags int
const (
	MessageFlagsCrossposted                      MessageFlags = 1 << 0
	MessageFlagsIsCrosspost                      MessageFlags = 1 << 1
	MessageFlagsSuppressEmbeds                   MessageFlags = 1 << 2
	MessageFlagsSourceMessageDeleted             MessageFlags = 1 << 3
	MessageFlagsUrgent                           MessageFlags = 1 << 4
	MessageFlagsHasThread                        MessageFlags = 1 << 5
	MessageFlagsEphemeral                        MessageFlags = 1 << 6
	MessageFlagsLoading                          MessageFlags = 1 << 7
	MessageFlagsFailedToMentionSomeRolesInThread MessageFlags = 1 << 8
	MessageFlagsSuppressNotifications            MessageFlags = 1 << 12
	MessageFlagsIsVoiceMessage                   MessageFlags = 1 << 13
)

type MessageGetRequest

type MessageGetRequest struct {
	ChannelID Snowflake `json:"channel_id"`
	MessageID Snowflake `json:"message_id"`
}

type MessageGetResponse

type MessageGetResponse = Message

type MessageInteraction

type MessageInteraction struct {
	ID     Snowflake        `json:"id"`
	Type   InteractionType  `json:"type"`
	Name   string           `json:"name"`
	User   User             `json:"user"`
	Member Optional[Member] `json:"member,omitempty"`
}

type MessagePinRequest

type MessagePinRequest struct {
	ChannelID Snowflake `json:"channel_id"`
	MessageID Snowflake `json:"message_id"`
}

type MessagePinResponse

type MessagePinResponse struct{}

type MessageReactionAddEvent

type MessageReactionAddEvent struct {
	UserID          Snowflake           `json:"user_id"`
	ChannelID       Snowflake           `json:"channel_id"`
	MessageID       Snowflake           `json:"message_id"`
	GuildID         Optional[Snowflake] `json:"guild_id,omitempty"`
	Member          Optional[Member]    `json:"member,omitempty"`
	Emoji           Emoji               `json:"emoji"`
	MessageAuthorID Optional[Snowflake] `json:"message_author_id,omitempty"`
}

type MessageReactionCreateRequest

type MessageReactionCreateRequest struct {
	ChannelID Snowflake `json:"channel_id"`
	MessageID Snowflake `json:"message_id"`
	Emoji     string    `json:"emoji"`
}

type MessageReactionCreateResponse

type MessageReactionCreateResponse struct{}

type MessageReactionDeleteAllRequest

type MessageReactionDeleteAllRequest struct {
	ChannelID Snowflake `json:"channel_id"`
	MessageID Snowflake `json:"message_id"`
}

type MessageReactionDeleteAllResponse

type MessageReactionDeleteAllResponse struct{}

type MessageReactionDeleteEmojiRequest

type MessageReactionDeleteEmojiRequest struct {
	ChannelID Snowflake `json:"channel_id"`
	MessageID Snowflake `json:"message_id"`
	Emoji     string    `json:"emoji"`
}

type MessageReactionDeleteEmojiResponse

type MessageReactionDeleteEmojiResponse struct{}

type MessageReactionDeleteOwnRequest

type MessageReactionDeleteOwnRequest struct {
	ChannelID Snowflake `json:"channel_id"`
	MessageID Snowflake `json:"message_id"`
	Emoji     string    `json:"emoji"`
}

type MessageReactionDeleteOwnResponse

type MessageReactionDeleteOwnResponse struct{}

type MessageReactionDeleteRequest

type MessageReactionDeleteRequest struct {
	ChannelID Snowflake `json:"channel_id"`
	MessageID Snowflake `json:"message_id"`
	Emoji     string    `json:"emoji"`
	UserID    Snowflake `json:"user_id"`
}

type MessageReactionDeleteResponse

type MessageReactionDeleteResponse struct{}

type MessageReactionListRequest

type MessageReactionListRequest struct {
	ChannelID Snowflake           `json:"channel_id"`
	MessageID Snowflake           `json:"message_id"`
	Emoji     Optional[string]    `json:"emoji,omitempty"`
	After     Optional[Snowflake] `json:"after,omitempty"`
	Limit     Optional[int]       `json:"limit,omitempty"`
}

type MessageReactionListResponse

type MessageReactionListResponse = []Reaction

type MessageReactionRemoveAllEvent

type MessageReactionRemoveAllEvent struct {
	ChannelID Snowflake           `json:"channel_id"`
	MessageID Snowflake           `json:"message_id"`
	GuildID   Optional[Snowflake] `json:"guild_id,omitempty"`
}

type MessageReactionRemoveEmojiEvent

type MessageReactionRemoveEmojiEvent struct {
	ChannelID Snowflake           `json:"channel_id"`
	MessageID Snowflake           `json:"message_id"`
	GuildID   Optional[Snowflake] `json:"guild_id,omitempty"`
	Emoji     Emoji               `json:"emoji"`
}

type MessageReactionRemoveEvent

type MessageReactionRemoveEvent struct {
	UserID    Snowflake           `json:"user_id"`
	ChannelID Snowflake           `json:"channel_id"`
	MessageID Snowflake           `json:"message_id"`
	GuildID   Optional[Snowflake] `json:"guild_id,omitempty"`
	Emoji     Emoji               `json:"emoji"`
}

type MessageReference

type MessageReference struct {
	MessageID       Optional[Snowflake] `json:"message_id,omitempty"`
	ChannelID       Optional[Snowflake] `json:"channel_id,omitempty"`
	GuildID         Optional[Snowflake] `json:"guild_id,omitempty"`
	FailIfNotExists Optional[bool]      `json:"fail_if_not_exists,omitempty"`
}

type MessageStickerItem

type MessageStickerItem struct {
	ID         Snowflake         `json:"id"`
	Name       string            `json:"name"`
	FormatType StickerFormatType `json:"format_type"`
}

type MessageType

type MessageType int
const (
	MessageTypeDefault                                 MessageType = 0
	MessageTypeRecipientAdd                            MessageType = 1
	MessageTypeRecipientRemove                         MessageType = 2
	MessageTypeCall                                    MessageType = 3
	MessageTypeChannelNameChange                       MessageType = 4
	MessageTypeChannelIconChange                       MessageType = 5
	MessageTypeChannelPinnedMessage                    MessageType = 6
	MessageTypeUserJoin                                MessageType = 7
	MessageTypeGuildBoost                              MessageType = 8
	MessageTypeGuildBoostTier1                         MessageType = 9
	MessageTypeGuildBoostTier2                         MessageType = 10
	MessageTypeGuildBoostTier3                         MessageType = 11
	MessageTypeChannelFollowAdd                        MessageType = 12
	MessageTypeGuildDiscoveryDisqualified              MessageType = 14
	MessageTypeGuildDiscoveryRequalified               MessageType = 15
	MessageTypeGuildDiscoveryGracePeriodInitialWarning MessageType = 16
	MessageTypeGuildDiscoveryGracePeriodFinalWarning   MessageType = 17
	MessageTypeThreadCreated                           MessageType = 18
	MessageTypeReply                                   MessageType = 19
	MessageTypeChatInputCommand                        MessageType = 20
	MessageTypeThreadStarterMessage                    MessageType = 21
	MessageTypeGuildInviteReminder                     MessageType = 22
	MessageTypeContextMenuCommand                      MessageType = 23
	MessageTypeAutoModerationAction                    MessageType = 24
	MessageTypeRoleSubscriptionPurchase                MessageType = 25
	MessageTypeInteractionPremiumUpsell                MessageType = 26
	MessageTypeStageStart                              MessageType = 27
	MessageTypeStageEnd                                MessageType = 28
	MessageTypeStageSpeaker                            MessageType = 29
	MessageTypeStageTopic                              MessageType = 31
	MessageTypeGuildApplicationPremiumSubscription     MessageType = 32
)

type MessageUnpinRequest

type MessageUnpinRequest struct {
	ChannelID Snowflake `json:"channel_id"`
	MessageID Snowflake `json:"message_id"`
}

type MessageUnpinResponse

type MessageUnpinResponse struct{}

type MessageUpdateEvent

type MessageUpdateEvent = Message

type ModalSubmitData

type ModalSubmitData struct {
	CustomID   string             `json:"custom_id"`
	Components []MessageComponent `json:"components"` // TODO: implement unmarshalJSON for MessageComponent
}

func (ModalSubmitData) InteractionType

func (ModalSubmitData) InteractionType() InteractionType

func (*ModalSubmitData) UnmarshalJSON

func (d *ModalSubmitData) UnmarshalJSON(data []byte) error

type Nullable

type Nullable[T any] struct {
	Valid bool
	Value T
}

func NullString

func NullString(s string, valid bool) Nullable[string]

func (Nullable[T]) MarshalJSON

func (n Nullable[T]) MarshalJSON() ([]byte, error)

func (*Nullable[T]) UnmarshalJSON

func (n *Nullable[T]) UnmarshalJSON(data []byte) error

type Optional

type Optional[T any] *T

func OptionalNullString

func OptionalNullString(s string, valid bool) Optional[Nullable[string]]

func OptionalString

func OptionalString(s string, valid bool) Optional[string]

type Permission

type Permission = uint64
const (
	PermissionCreateInstantInvite Permission = 0x00000001 // TODO
)

type PermissionOverwrite

type PermissionOverwrite struct {
	ID    Snowflake               `json:"id"`
	Type  PermissionOverwriteType `json:"type"`
	Allow Permissions             `json:"allow"`
	Deny  Permissions             `json:"deny"`
}

type PermissionOverwriteType

type PermissionOverwriteType int
const (
	PermissionOverwriteTypeRole   PermissionOverwriteType = 0
	PermissionOverwriteTypeMember PermissionOverwriteType = 1
)

type Permissions

type Permissions string

func (Permissions) Has

func (p Permissions) Has(permission Permission) bool

func (Permissions) Parse

func (p Permissions) Parse() uint64

func (Permissions) String

func (p Permissions) String() string

type PremiumTier

type PremiumTier int
const (
	PremiumTierNone PremiumTier = 0
	PremiumTier1    PremiumTier = 1
	PremiumTier2    PremiumTier = 2
	PremiumTier3    PremiumTier = 3
)

type PremiumType

type PremiumType int
const (
	PremiumTypeNone         PremiumType = 0
	PremiumTypeNitroClassic PremiumType = 1
	PremiumTypeNitro        PremiumType = 2
	PremiumTypeNitroBasic   PremiumType = 3
)

type PresenceUpdateData

type PresenceUpdateData struct {
	Since      Nullable[UnixTimestamp] `json:"since"`
	Activities []Activity              `json:"activities"`
	Status     Status                  `json:"status"`
	AFK        bool                    `json:"afk"`
}

type PresenceUpdateEvent

type PresenceUpdateEvent struct {
	User         User         `json:"user"`
	GuildID      Snowflake    `json:"guild_id"`
	Status       Status       `json:"status"`
	Activities   []Activity   `json:"activities"`
	ClientStatus ClientStatus `json:"client_status"`
}

type PrivacyLevel

type PrivacyLevel int
const (
	PrivacyLevelPublic    PrivacyLevel = 1
	PrivacyLevelGuildOnly PrivacyLevel = 2
)

type Reaction

type Reaction struct {
	Count        int                  `json:"count"`
	CountDetails ReactionCountDetails `json:"count_details"`
	Me           bool                 `json:"me"`
	MeBurst      bool                 `json:"me_burst"`
	Emoji        Emoji                `json:"emoji"`
	BurstColors  []string             `json:"burst_colors"`
}

type ReactionCountDetails

type ReactionCountDetails struct {
	Burst  int `json:"burst"`
	Normal int `json:"normal"`
}

type ReadyEvent

type ReadyEvent struct {
	V                int                `json:"v"`
	User             User               `json:"user"`
	Guilds           []UnavailableGuild `json:"guilds"`
	SessionID        string             `json:"session_id"`
	ResumeGatewayURL string             `json:"resume_gateway_url"`
	Shard            [2]int             `json:"shard"`
	Application      Application        `json:"application"`
}

type RequestGuildMembersData

type RequestGuildMembersData struct {
	GuildID   Snowflake        `json:"guild_id"`
	Query     Optional[string] `json:"query,omitempty"`
	Limit     int              `json:"limit"`
	Presences Optional[bool]   `json:"presences,omitempty"`
	UserIDs   []string         `json:"user_ids,omitempty"`
	Nonce     Optional[string] `json:"nonce,omitempty"`
}

type ResolvedData

type ResolvedData struct {
	Users       map[Snowflake]User       `json:"users,omitempty"`
	Members     map[Snowflake]Member     `json:"members,omitempty"`
	Roles       map[Snowflake]Role       `json:"roles,omitempty"`
	Channels    map[Snowflake]Channel    `json:"channels,omitempty"`
	Messages    map[Snowflake]Message    `json:"messages,omitempty"`
	Attachments map[Snowflake]Attachment `json:"attachments,omitempty"`
}

type RestErrorMessage

type RestErrorMessage struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
}

type RestTooManyRequests

type RestTooManyRequests struct {
	Bucket     string        `json:"bucket"`
	Message    string        `json:"message"`
	RetryAfter time.Duration `json:"retry_after"`
}

type ResumeData

type ResumeData struct {
	Token     string `json:"token"`
	SessionID string `json:"session_id"`
	Sequence  int64  `json:"seq"`
}

type Role

type Role struct {
	ID           Snowflake                  `json:"id"`
	Name         string                     `json:"name"`
	Color        int                        `json:"color"`
	Hoist        bool                       `json:"hoist"`
	Icon         Optional[Nullable[string]] `json:"icon,omitempty"`
	UnicodeEmoji Optional[Nullable[string]] `json:"unicode_emoji,omitempty"`
	Position     int                        `json:"position"`
	Permissions  Permissions                `json:"permissions"`
	Managed      bool                       `json:"managed"`
	Mentionable  bool                       `json:"mentionable"`
	Tags         Optional[RoleTags]         `json:"tags,omitempty"`
	Flags        RoleFlags                  `json:"flags"`
}

type RoleCreateEvent

type RoleCreateEvent struct {
	Role    Role      `json:"role"`
	GuildID Snowflake `json:"guild_id"`
}

type RoleCreateRequest

type RoleCreateRequest struct {
	GuildID      Snowflake             `json:"guild_id"`
	Name         Optional[string]      `json:"name,omitempty"`
	Permissions  Optional[Permissions] `json:"permissions,omitempty"`
	Color        Optional[int]         `json:"color,omitempty"`
	Hoist        Optional[bool]        `json:"hoist,omitempty"`
	Icon         Optional[string]      `json:"icon,omitempty"`
	UnicodeEmoji Optional[string]      `json:"unicode_emoji,omitempty"`
	Mentionable  Optional[bool]        `json:"mentionable,omitempty"`
}

type RoleCreateResponse

type RoleCreateResponse = Role

type RoleDeleteEvent

type RoleDeleteEvent struct {
	RoleID  Snowflake `json:"role_id"`
	GuildID Snowflake `json:"guild_id"`
}

type RoleDeleteRequest

type RoleDeleteRequest struct {
	GuildID Snowflake `json:"guild_id"`
	RoleID  Snowflake `json:"role_id"`
}

type RoleDeleteResponse

type RoleDeleteResponse struct{}

type RoleFlags

type RoleFlags int
const (
	RoleFlagsInPrompt RoleFlags = 1 << 0
)

type RoleModifyRequest

type RoleModifyRequest struct {
	GuildID      Snowflake             `json:"guild_id"`
	RoleID       Snowflake             `json:"role_id"`
	Name         Optional[string]      `json:"name,omitempty"`
	Permissions  Optional[Permissions] `json:"permissions,omitempty"`
	Color        Optional[int]         `json:"color,omitempty"`
	Icon         Optional[string]      `json:"icon,omitempty"`
	UnicodeEmoji Optional[string]      `json:"unicode_emoji,omitempty"`
	Mentionable  Optional[bool]        `json:"mentionable,omitempty"`
	Hoist        Optional[bool]        `json:"hoist,omitempty"`
}

type RoleModifyResponse

type RoleModifyResponse = Role

type RolePositionsModifyEntry

type RolePositionsModifyEntry struct {
	ID       Snowflake     `json:"id"`
	Position Optional[int] `json:"position,omitempty"`
}

type RolePositionsModifyRequest

type RolePositionsModifyRequest = []RolePositionsModifyEntry

type RolePositionsModifyResponse

type RolePositionsModifyResponse struct{}

type RoleSubscriptionData

type RoleSubscriptionData struct {
	RoleSubscriptionListingID Snowflake `json:"role_subscription_listing_id"`
	TierName                  string    `json:"tier_name"`
	TotalMonthsSubscribed     int       `json:"total_months_subscribed"`
	IsRenewal                 bool      `json:"is_renewal"`
}

type RoleTags

type RoleTags struct {
	BotID                 Optional[Snowflake]          `json:"bot_id,omitempty"`
	IntegrationID         Optional[Snowflake]          `json:"integration_id,omitempty"`
	PremiumSubscriber     Optional[Nullable[struct{}]] `json:"premium_subscriber,omitempty"`
	SubscriptionListingID Optional[Snowflake]          `json:"subscription_listing_id"`
	AvailableForPurchase  Optional[Nullable[struct{}]] `json:"available_for_purchase,omitempty"`
	GuildConnections      Optional[Nullable[struct{}]] `json:"guild_connections,omitempty"`
}

type RoleUpdateEvent

type RoleUpdateEvent struct {
	Role    Role      `json:"role"`
	GuildID Snowflake `json:"guild_id"`
}

type ScheduledEvent

type ScheduledEvent struct {
	ID                 Snowflake                              `json:"id"`
	GuildID            Snowflake                              `json:"guild_id"`
	ChannelID          Nullable[Snowflake]                    `json:"channel_id"`
	CreatorID          Optional[Nullable[Snowflake]]          `json:"creator_id,omitempty"`
	Name               string                                 `json:"name"`
	Desc               Optional[string]                       `json:"description,omitempty"`
	ScheduledStartTime time.Time                              `json:"scheduled_start_time"`
	ScheduledEndTime   Nullable[time.Time]                    `json:"scheduled_end_time"`
	PrivacyLevel       PrivacyLevel                           `json:"privacy_level"`
	Status             ScheduledEventStatus                   `json:"status"`
	EntityType         ScheduledEventEntityType               `json:"entity_type"`
	EntityID           Nullable[Snowflake]                    `json:"entity_id"`
	EntityMetadata     Nullable[ScheduledEventEntityMetadata] `json:"entity_metadata"`
	Creator            Optional[User]                         `json:"creator,omitempty"`
	UserCount          Optional[int]                          `json:"user_count,omitempty"`
	Image              Optional[Nullable[string]]             `json:"image,omitempty"`
}

type ScheduledEventCreateEvent

type ScheduledEventCreateEvent = ScheduledEvent

type ScheduledEventCreateRequest

type ScheduledEventCreateRequest struct {
	GuildID            Snowflake                              `json:"guild_id"`
	ChannelID          Optional[Snowflake]                    `json:"channel_id,omitempty"`
	Name               string                                 `json:"name"`
	EntityMetadata     Optional[ScheduledEventEntityMetadata] `json:"entity_metadata,omitempty"`
	PrivacyLevel       Optional[PrivacyLevel]                 `json:"privacy_level,omitempty"`
	ScheduledStartTime time.Time                              `json:"scheduled_start_time"`
	ScheduledEndTime   Optional[time.Time]                    `json:"scheduled_end_time,omitempty"`
	Description        Optional[string]                       `json:"description,omitempty"`
	EntityType         ScheduledEventEntityType               `json:"entity_type"`
	Image              Optional[Nullable[string]]             `json:"image,omitempty"`
}

type ScheduledEventCreateResponse

type ScheduledEventCreateResponse = ScheduledEvent

type ScheduledEventDeleteEvent

type ScheduledEventDeleteEvent = ScheduledEvent

type ScheduledEventDeleteRequest

type ScheduledEventDeleteRequest struct {
	GuildID               Snowflake `json:"guild_id"`
	GuildScheduledEventID Snowflake `json:"guild_scheduled_event_id"`
}

type ScheduledEventDeleteResponse

type ScheduledEventDeleteResponse struct{}

type ScheduledEventEntityMetadata

type ScheduledEventEntityMetadata struct {
	Location Optional[string] `json:"location,omitempty"`
}

type ScheduledEventEntityType

type ScheduledEventEntityType int
const (
	ScheduledEventEntityTypeStageInstance ScheduledEventEntityType = 1
	ScheduledEventEntityTypeVoice         ScheduledEventEntityType = 2
	ScheduledEventEntityTypeExternal      ScheduledEventEntityType = 3
)

type ScheduledEventGetRequest

type ScheduledEventGetRequest struct {
	GuildID               Snowflake `json:"guild_id"`
	GuildScheduledEventID Snowflake `json:"guild_scheduled_event_id"`
}

type ScheduledEventGetResponse

type ScheduledEventGetResponse = ScheduledEvent

type ScheduledEventModifyRequest

type ScheduledEventModifyRequest struct {
	GuildID               Snowflake                              `json:"guild_id"`
	GuildScheduledEventID Snowflake                              `json:"guild_scheduled_event_id"`
	ChannelID             Optional[Snowflake]                    `json:"channel_id,omitempty"`
	Name                  Optional[string]                       `json:"name,omitempty"`
	EntityMetadata        Optional[ScheduledEventEntityMetadata] `json:"entity_metadata,omitempty"`
	PrivacyLevel          Optional[PrivacyLevel]                 `json:"privacy_level,omitempty"`
	ScheduledStartTime    Optional[time.Time]                    `json:"scheduled_start_time,omitempty"`
	ScheduledEndTime      Optional[time.Time]                    `json:"scheduled_end_time,omitempty"`
	Description           Optional[string]                       `json:"description,omitempty"`
	Image                 Optional[Nullable[string]]             `json:"image,omitempty"`
	Status                Optional[ScheduledEventStatus]         `json:"status,omitempty"`
	EntityType            Optional[ScheduledEventEntityType]     `json:"entity_type,omitempty"`
}

type ScheduledEventModifyResponse

type ScheduledEventModifyResponse = ScheduledEvent

type ScheduledEventStatus

type ScheduledEventStatus int
const (
	ScheduledEventStatusScheduled ScheduledEventStatus = 1
	ScheduledEventStatusActive    ScheduledEventStatus = 2
	ScheduledEventStatusCompleted ScheduledEventStatus = 3
	ScheduledEventStatusCanceled  ScheduledEventStatus = 4
)

type ScheduledEventUpdateEvent

type ScheduledEventUpdateEvent = ScheduledEvent

type ScheduledEventUser

type ScheduledEventUser struct {
	GuildScheduledEventID Snowflake        `json:"guild_scheduled_event_id"`
	User                  User             `json:"user"`
	Member                Optional[Member] `json:"member,omitempty"`
}

type ScheduledEventUserAddEvent

type ScheduledEventUserAddEvent struct {
	GuildScheduledEventID Snowflake `json:"guild_scheduled_event_id"`
	UserID                Snowflake `json:"user_id"`
	GuildID               Snowflake `json:"guild_id"`
}

type ScheduledEventUserListRequest

type ScheduledEventUserListRequest struct {
	GuildID               Snowflake           `json:"guild_id"`
	GuildScheduledEventID Snowflake           `json:"guild_scheduled_event_id"`
	Limit                 Optional[int]       `json:"limit,omitempty"`
	WithMember            Optional[bool]      `json:"with_member,omitempty"`
	Before                Optional[Snowflake] `json:"before,omitempty"`
	After                 Optional[Snowflake] `json:"after,omitempty"`
}

type ScheduledEventUserListResponse

type ScheduledEventUserListResponse = []ScheduledEventUser

type ScheduledEventUserRemoveEvent

type ScheduledEventUserRemoveEvent struct {
	GuildScheduledEventID Snowflake `json:"guild_scheduled_event_id"`
	UserID                Snowflake `json:"user_id"`
	GuildID               Snowflake `json:"guild_id"`
}

type SelectDefaultValue

type SelectDefaultValue struct {
	ID   string                 `json:"id"`
	Type SelectDefaultValueType `json:"type"`
}

type SelectDefaultValueType

type SelectDefaultValueType string
const (
	SelectDefaultValueTypeUser    SelectDefaultValueType = "user"
	SelectDefaultValueTypeRole    SelectDefaultValueType = "role"
	SelectDefaultValueTypeChannel SelectDefaultValueType = "channel"
)

type SelectMenu

type SelectMenu struct {
	MenuType      SelectMenuType       `json:"type"`
	CustomID      string               `json:"custom_id"`
	Options       []SelectOption       `json:"options,omitempty"`
	ChannelTypes  []ChannelType        `json:"channel_types,omitempty"`
	Placeholder   Optional[string]     `json:"placeholder,omitempty"`
	DefaultValues []SelectDefaultValue `json:"default_values,omitempty"`
	MinValues     Optional[int]        `json:"min_values,omitempty"`
	MaxValues     Optional[int]        `json:"max_values,omitempty"`
	Disabled      Optional[bool]       `json:"disabled,omitempty"`
}

func (SelectMenu) MarshalJSON

func (s SelectMenu) MarshalJSON() ([]byte, error)

func (SelectMenu) Type

type SelectMenuType

type SelectMenuType int
const (
	SelectMenuTypeString      SelectMenuType = 3
	SelectMenuTypeChannel     SelectMenuType = 8
	SelectMenuTypeUser        SelectMenuType = 5
	SelectMenuTypeRole        SelectMenuType = 6
	SelectMenuTypeMentionable SelectMenuType = 7
)

type SelectOption

type SelectOption struct {
	Label       string           `json:"label"`
	Value       string           `json:"value"`
	Description Optional[string] `json:"description,omitempty"`
	Emoji       Optional[Emoji]  `json:"emoji,omitempty"`
	Default     Optional[bool]   `json:"default,omitempty"`
}

type SessionInvalidData

type SessionInvalidData bool

type SessionStartLimit

type SessionStartLimit struct {
	Total          int `json:"total"`
	Remaining      int `json:"remaining"`
	ResetAfter     int `json:"reset_after"`
	MaxConcurrency int `json:"max_concurrency"`
}

type Snowflake

type Snowflake string

func (Snowflake) String

func (s Snowflake) String() string

func (Snowflake) Timestamp

func (s Snowflake) Timestamp() time.Time

type SortOrderType

type SortOrderType int
const (
	SortOrderTypeLatestActivity SortOrderType = 0
	SortOrderTypeCreationDate   SortOrderType = 1
)

type StageInstance

type StageInstance struct {
	ID                    Snowflake    `json:"id"`
	GuildID               Snowflake    `json:"guild_id"`
	ChannelID             Snowflake    `json:"channel_id"`
	Topic                 string       `json:"topic"`
	PrivacyLevel          PrivacyLevel `json:"privacy_level"`
	DiscoverableDisabled  bool         `json:"discoverable_disabled"`
	GuildScheduledEventID Snowflake    `json:"guild_scheduled_event_id"`
}

type StageInstanceCreateEvent

type StageInstanceCreateEvent = StageInstance

type StageInstanceCreateRequest

type StageInstanceCreateRequest struct {
	ChannelID             Snowflake              `json:"channel_id"`
	Topic                 string                 `json:"topic"`
	PrivacyLevel          Optional[PrivacyLevel] `json:"privacy_level,omitempty"`
	SendStartNotification Optional[bool]         `json:"send_start_notification,omitempty"`
	GuildScheduledEventID Optional[Snowflake]    `json:"guild_scheduled_event_id,omitempty"`
}

type StageInstanceCreateResponse

type StageInstanceCreateResponse = StageInstance

type StageInstanceDeleteEvent

type StageInstanceDeleteEvent = StageInstance

type StageInstanceDeleteRequest

type StageInstanceDeleteRequest struct {
	ChannelID Snowflake `json:"channel_id"`
}

type StageInstanceDeleteResponse

type StageInstanceDeleteResponse struct{}

type StageInstanceGetRequest

type StageInstanceGetRequest struct {
	ChannelID Snowflake `json:"channel_id"`
}

type StageInstanceGetResponse

type StageInstanceGetResponse = StageInstance

type StageInstanceModifyRequest

type StageInstanceModifyRequest struct {
	ChannelID    Snowflake              `json:"channel_id"`
	Topic        Optional[string]       `json:"topic,omitempty"`
	PrivacyLevel Optional[PrivacyLevel] `json:"privacy_level,omitempty"`
}

type StageInstanceModifyResponse

type StageInstanceModifyResponse = StageInstance

type StageInstanceUpdateEvent

type StageInstanceUpdateEvent = StageInstance

type Status

type Status string
const (
	StatusOnline    Status = "online"
	StatusDND       Status = "dnd"
	StatusIdle      Status = "idle"
	StatusInvisible Status = "invisible"
	StatusOffline   Status = "offline"
)

type Sticker

type Sticker struct {
	ID          Snowflake           `json:"id"`
	PackID      Optional[string]    `json:"pack_id,omitempty"`
	Name        string              `json:"name"`
	Description Optional[string]    `json:"description,omitempty"`
	Tags        string              `json:"tags"`
	Asset       Optional[string]    `json:"asset,omitempty"`
	Type        StickerType         `json:"type"`
	FormatType  StickerFormatType   `json:"format_type"`
	Available   Optional[bool]      `json:"available,omitempty"`
	GuildID     Optional[Snowflake] `json:"guild_id,omitempty"`
	User        Optional[User]      `json:"user,omitempty"`
	SortValue   Optional[int]       `json:"sort_value,omitempty"`
}

type StickerCreateRequest

type StickerCreateRequest struct {
	GuildID     Snowflake `json:"guild_id"`
	Name        string    `json:"name"`
	Description string    `json:"description"`
	Tags        string    `json:"tags"`
	File        string    `json:"file"`
}

type StickerCreateResponse

type StickerCreateResponse = Sticker

type StickerDeleteRequest

type StickerDeleteRequest struct {
	GuildID   Snowflake `json:"guild_id"`
	StickerID Snowflake `json:"sticker_id"`
}

type StickerDeleteResponse

type StickerDeleteResponse struct{}

type StickerFormatType

type StickerFormatType int
const (
	StickerFormatTypePNG    StickerFormatType = 1
	StickerFormatTypeAPNG   StickerFormatType = 2
	StickerFormatTypeLOTTIE StickerFormatType = 3
	StickerFormatTypeGIF    StickerFormatType = 4
)

type StickerGetRequest

type StickerGetRequest struct {
	GuildID   Snowflake `json:"guild_id"`
	StickerID Snowflake `json:"sticker_id"`
}

type StickerGetResponse

type StickerGetResponse = Sticker

type StickerModifyRequest

type StickerModifyRequest struct {
	GuildID     Snowflake `json:"guild_id"`
	StickerID   Snowflake `json:"sticker_id"`
	Name        string    `json:"name"`
	Description string    `json:"description"`
	Tags        string    `json:"tags"`
}

type StickerModifyResponse

type StickerModifyResponse = Sticker

type StickerType

type StickerType int
const (
	StickerTypeStandard StickerType = 1
	StickerTypeGuild    StickerType = 2
)

type SystemChannelFlags

type SystemChannelFlags int
const (
	SystemChannelFlagsSuppressJoinNotifications                           SystemChannelFlags = 1 << 0
	SystemChannelFlagsSuppressPremiumSubscriptions                        SystemChannelFlags = 1 << 1
	SystemChannelFlagsSuppressGuildReminderNotifications                  SystemChannelFlags = 1 << 2
	SystemChannelFlagsSuppressJoinNotificationReplies                     SystemChannelFlags = 1 << 3
	SystemChannelFlagsSuppressRoleSubscriptionPurchaseNotifications       SystemChannelFlags = 1 << 4
	SystemChannelFlagsSuppressRoleSubscriptionPurchaseNotificationReplies SystemChannelFlags = 1 << 5
)

type Team

type Team struct {
	Icon        Nullable[string] `json:"icon"`
	ID          Snowflake        `json:"id"`
	Members     []TeamMember     `json:"members"`
	Name        string           `json:"name"`
	OwnerUserID Snowflake        `json:"owner_user_id"`
}

type TeamMember

type TeamMember struct {
	MembershipState MembershipState    `json:"membership_state"`
	TeamID          Snowflake          `json:"team_id"`
	User            User               `json:"user"`
	Role            TeamMemberRoleType `json:"role"`
}

type TeamMemberRoleType

type TeamMemberRoleType string
const (
	TeamMemberRoleTypeAdmin     TeamMemberRoleType = "admin"
	TeamMemberRoleTypeDeveloper TeamMemberRoleType = "developer"
	TeamMemberRoleReadOnly      TeamMemberRoleType = "read_only"
)

type TextInput

type TextInput struct {
	CustomID    string           `json:"custom_id"`
	Style       TextInputStyle   `json:"style"`
	Label       string           `json:"label"`
	MinLength   Optional[int]    `json:"min_length,omitempty"`
	MaxLength   Optional[int]    `json:"max_length,omitempty"`
	Required    Optional[bool]   `json:"required,omitempty"`
	Value       Optional[string] `json:"value,omitempty"`
	Placeholder Optional[string] `json:"placeholder,omitempty"`
}

func (TextInput) MarshalJSON

func (t TextInput) MarshalJSON() ([]byte, error)

func (TextInput) Type

type TextInputStyle

type TextInputStyle int
const (
	TextInputStyleShort     TextInputStyle = 1
	TextInputStyleParagraph TextInputStyle = 2
)

type ThreadCreateEvent

type ThreadCreateEvent = Channel

type ThreadDeleteEvent

type ThreadDeleteEvent = Channel

type ThreadJoinRequest

type ThreadJoinRequest struct {
	ChannelID Snowflake `json:"channel_id"`
}

type ThreadJoinResponse

type ThreadJoinResponse struct{}

type ThreadLeaveRequest

type ThreadLeaveRequest struct {
	ChannelID Snowflake `json:"channel_id"`
}

type ThreadLeaveResponse

type ThreadLeaveResponse struct{}

type ThreadListJoinedPrivateArchivedRequest

type ThreadListJoinedPrivateArchivedRequest struct {
	ChannelID Snowflake           `json:"channel_id"`
	Before    Optional[time.Time] `json:"before,omitempty"`
	Limit     Optional[int]       `json:"limit,omitempty"`
}

type ThreadListJoinedPrivateArchivedResponse

type ThreadListJoinedPrivateArchivedResponse struct {
	Threads []Channel      `json:"threads"`
	Members []ThreadMember `json:"members"`
	HasMore bool           `json:"has_more"`
}

type ThreadListPrivateArchivedRequest

type ThreadListPrivateArchivedRequest struct {
	ChannelID Snowflake           `json:"channel_id"`
	Before    Optional[time.Time] `json:"before,omitempty"`
	Limit     Optional[int]       `json:"limit,omitempty"`
}

type ThreadListPrivateArchivedResponse

type ThreadListPrivateArchivedResponse struct {
	Threads []Channel      `json:"threads"`
	Members []ThreadMember `json:"members"`
	HasMore bool           `json:"has_more"`
}

type ThreadListPublicArchivedRequest

type ThreadListPublicArchivedRequest struct {
	ChannelID Snowflake           `json:"channel_id"`
	Before    Optional[time.Time] `json:"before,omitempty"`
	Limit     Optional[int]       `json:"limit,omitempty"`
}

type ThreadListPublicArchivedResponse

type ThreadListPublicArchivedResponse struct {
	Threads []Channel      `json:"threads"`
	Members []ThreadMember `json:"members"`
	HasMore bool           `json:"has_more"`
}

type ThreadListSyncEvent

type ThreadListSyncEvent struct {
	GuildID    Snowflake      `json:"guild_id"`
	ChannelIDs []Snowflake    `json:"channel_ids,omitempty"`
	Threads    []Channel      `json:"threads"`
	Members    []ThreadMember `json:"members"`
}

type ThreadMember

type ThreadMember struct {
	ID            Optional[Snowflake] `json:"id,omitempty"`
	UserID        Optional[Snowflake] `json:"user_id,omitempty"`
	GuildID       Optional[Snowflake] `json:"guild_id,omitempty"`
	JoinTimestamp time.Time           `json:"join_timestamp"`
	Flags         int                 `json:"flags"`
	Member        Optional[Member]    `json:"member,omitempty"`
}

type ThreadMemberAddRequest

type ThreadMemberAddRequest struct {
	ChannelID Snowflake `json:"channel_id"`
	UserID    Snowflake `json:"user_id"`
}

type ThreadMemberAddResponse

type ThreadMemberAddResponse struct{}

type ThreadMemberGetRequest

type ThreadMemberGetRequest struct {
	ChannelID Snowflake `json:"channel_id"`
	UserID    Snowflake `json:"user_id"`
}

type ThreadMemberGetResponse

type ThreadMemberGetResponse = ThreadMember

type ThreadMemberListRequest

type ThreadMemberListRequest struct {
	ChannelID  Snowflake           `json:"channel_id"`
	WithMember Optional[bool]      `json:"with_member,omitempty"`
	After      Optional[Snowflake] `json:"after,omitempty"`
	Limit      Optional[int]       `json:"limit,omitempty"`
}

type ThreadMemberListResponse

type ThreadMemberListResponse = []ThreadMember

type ThreadMemberRemoveRequest

type ThreadMemberRemoveRequest struct {
	ChannelID Snowflake `json:"channel_id"`
	UserID    Snowflake `json:"user_id"`
}

type ThreadMemberRemoveResponse

type ThreadMemberRemoveResponse struct{}

type ThreadMemberUpdateEvent

type ThreadMemberUpdateEvent = ThreadMember

type ThreadMembersUpdateEvent

type ThreadMembersUpdateEvent struct {
	ID               Snowflake      `json:"id"`
	GuildID          Snowflake      `json:"guild_id"`
	MemberCount      int            `json:"member_count"`
	AddedMembers     []ThreadMember `json:"added_members,omitempty"`
	RemovedMemberIDs []Snowflake    `json:"removed_member_ids,omitempty"`
}

type ThreadMetadata

type ThreadMetadata struct {
	Archived            bool                `json:"archived"`
	AutoArchiveDuration Optional[int]       `json:"auto_archive_duration,omitempty"`
	ArchiveTimestamp    Optional[time.Time] `json:"archive_timestamp,omitempty"`
	Locked              bool                `json:"locked"`
	Invitable           Optional[bool]      `json:"invitable,omitempty"`
	CreateTimestamp     Optional[time.Time] `json:"create_timestamp,omitempty"`
}

type ThreadStartFromMessageRequest

type ThreadStartFromMessageRequest struct {
	ChannelID           Snowflake           `json:"channel_id"`
	MessageID           Snowflake           `json:"message_id"`
	Name                string              `json:"name"`
	AutoArchiveDuration Optional[time.Time] `json:"auto_archive_duration,omitempty"`
	RateLimitPerUser    Optional[int]       `json:"rate_limit"`
}

type ThreadStartFromMessageResponse

type ThreadStartFromMessageResponse = Channel

type ThreadStartInForumRequest

type ThreadStartInForumRequest struct {
	ChannelID           Snowflake                     `json:"channel_id"`
	Name                string                        `json:"name"`
	AutoArchiveDuration Optional[time.Time]           `json:"auto_archive_duration,omitempty"`
	RateLimitPerUser    Optional[int]                 `json:"rate_limit"`
	Message             Optional[MessageCreateParams] `json:"message,omitempty"`
	AppliedTags         []Snowflake                   `json:"applied_tags,omitempty"`
}

type ThreadStartInForumResponse

type ThreadStartInForumResponse = Channel

type ThreadStartWithoutMessageRequest

type ThreadStartWithoutMessageRequest struct {
	ChannelID           Snowflake             `json:"channel_id"`
	Name                string                `json:"name"`
	AutoArchiveDuration Optional[time.Time]   `json:"auto_archive_duration,omitempty"`
	Type                Optional[ChannelType] `json:"type,omitempty"`
	Invitable           Optional[bool]        `json:"invitable,omitempty"`
	RateLimitPerUser    Optional[int]         `json:"rate_limit"`
}

type ThreadStartWithoutMessageResponse

type ThreadStartWithoutMessageResponse = Channel

type ThreadUpdateEvent

type ThreadUpdateEvent = Channel

type TypingStartEvent

type TypingStartEvent struct {
	ChannelID Snowflake           `json:"channel_id"`
	GuildID   Optional[Snowflake] `json:"guild_id,omitempty"`
	UserID    Snowflake           `json:"user_id"`
	Timestamp UnixTimestamp       `json:"timestamp"`
	Member    Optional[Member]    `json:"member,omitempty"`
}

type UnavailableGuild

type UnavailableGuild struct {
	ID          Snowflake `json:"id"`
	Unavailable bool      `json:"unavailable"`
}

type UnixTimestamp

type UnixTimestamp time.Time

func (UnixTimestamp) MarshalJSON

func (t UnixTimestamp) MarshalJSON() ([]byte, error)

func (*UnixTimestamp) UnmarshalJSON

func (t *UnixTimestamp) UnmarshalJSON(data []byte) error

type User

type User struct {
	ID               Snowflake                  `json:"id"`
	Username         string                     `json:"username"`
	Discriminator    string                     `json:"discriminator"`
	GlobalName       Nullable[string]           `json:"global_name"`
	Avatar           Nullable[string]           `json:"avatar"`
	Bot              Optional[bool]             `json:"bot,omitempty"`
	System           Optional[bool]             `json:"system,omitempty"`
	MFAEnabled       Optional[bool]             `json:"mfa_enabled,omitempty"`
	Banner           Optional[Nullable[string]] `json:"banner,omitempty"`
	AccentColor      Optional[Nullable[int]]    `json:"accent_color,omitempty"`
	Locale           Optional[string]           `json:"locale,omitempty"`
	Verified         Optional[bool]             `json:"verified,omitempty"`
	Email            Optional[Nullable[string]] `json:"email,omitempty"`
	Flags            Optional[UserFlags]        `json:"flags,omitempty"`
	PremiumType      Optional[int]              `json:"premium_type,omitempty"`
	PublicFlags      Optional[UserFlags]        `json:"public_flags,omitempty"`
	AvatarDecoration Optional[Nullable[string]] `json:"avatar_decoration,omitempty"`
}

func (User) AvatarURL

func (u User) AvatarURL() string

type UserFlags

type UserFlags int
const (
	UserFlagsStaff                 UserFlags = 1 << 0
	UserFlagsPartner               UserFlags = 1 << 1
	UserFlagsHypeSquad             UserFlags = 1 << 2
	UserFlagsBugHunterLevel1       UserFlags = 1 << 3
	UserFlagsHypeSquadOnlineHouse1 UserFlags = 1 << 6
	UserFlagsHypeSquadOnlineHouse2 UserFlags = 1 << 7
	UserFlagsHypeSquadOnlineHouse3 UserFlags = 1 << 8
	UserFlagsPremiumEarlySupporter UserFlags = 1 << 9
	UserFlagsTeamPseudoUser        UserFlags = 1 << 10
	UserFlagsBugHunterLevel2       UserFlags = 1 << 14
	UserFlagsVerifiedBot           UserFlags = 1 << 16
	UserFlagsVerifiedDeveloper     UserFlags = 1 << 17
	UserFlagsCertifiedModerator    UserFlags = 1 << 18
	UserFlagsBotHTTPInteractions   UserFlags = 1 << 19
	UserFlagsActiveDeveloper       UserFlags = 1 << 22
)

type UserGetRequest

type UserGetRequest struct {
	UserID Snowflake `json:"user_id"`
}

type UserGetResponse

type UserGetResponse = User

type UserUpdateEvent

type UserUpdateEvent = User

type VerificationLevel

type VerificationLevel int
const (
	VerificationLevelNone     VerificationLevel = 0
	VerificationLevelLow      VerificationLevel = 1
	VerificationLevelMedium   VerificationLevel = 2
	VerificationLevelHigh     VerificationLevel = 3
	VerificationLevelVeryHigh VerificationLevel = 4
)

type VideoQualityMode

type VideoQualityMode int
const (
	VideoQualityModeAuto VideoQualityMode = 1
	VideoQualityModeFull VideoQualityMode = 2
)

type VoiceServerUpdateEvent

type VoiceServerUpdateEvent struct {
	Token    string           `json:"token"`
	GuildID  Snowflake        `json:"guild_id"`
	Endpoint Nullable[string] `json:"endpoint"`
}

type VoiceState

type VoiceState struct {
}

type VoiceStateUpdataData

type VoiceStateUpdataData struct {
	GuildID   Snowflake           `json:"guild_id"`
	ChannelID Nullable[Snowflake] `json:"channel_id"`
	SelfMute  bool                `json:"self_mute"`
	SelfDeaf  bool                `json:"self_deaf"`
}

type VoiceStateUpdateEvent

type VoiceStateUpdateEvent = VoiceState

type Webhook

type Webhook struct {
	ID            Snowflake           `json:"id"`
	Type          WebhookType         `json:"type"`
	GuildID       Nullable[Snowflake] `json:"guild_id"`
	ChannelID     Nullable[Snowflake] `json:"channel_id"`
	User          Optional[User]      `json:"user,omitempty"`
	Name          Nullable[string]    `json:"name"`
	Avatar        Nullable[string]    `json:"avatar"`
	Token         Optional[string]    `json:"token,omitempty"`
	ApplicationID Nullable[Snowflake] `json:"application_id"`
	SourceGuild   Optional[Guild]     `json:"source_guild,omitempty"`
	SoureChannel  Optional[Channel]   `json:"source_channel,omitempty"`
	URL           Optional[string]    `json:"url,omitempty"`
}

type WebhookCreateRequest

type WebhookCreateRequest struct {
	ChannelID Snowflake                  `json:"channel_id"`
	Name      string                     `json:"name"`
	Avatar    Optional[Nullable[string]] `json:"avatar,omitempty"`
}

type WebhookCreateResponse

type WebhookCreateResponse = Webhook

type WebhookDeleteRequest

type WebhookDeleteRequest struct {
	WebhookID Snowflake `json:"webhook_id"`
}

type WebhookDeleteResponse

type WebhookDeleteResponse struct{}

type WebhookDeleteWithTokenRequest

type WebhookDeleteWithTokenRequest struct {
	WebhookID    Snowflake `json:"webhook_id"`
	WebhookToken string    `json:"webhook_token"`
}

type WebhookDeleteWithTokenResponse

type WebhookDeleteWithTokenResponse struct{}

type WebhookExecuteRequest

type WebhookExecuteRequest struct {
	WebhookID    Snowflake           `json:"webhook_id"`
	WebhookToken string              `json:"webhook_token"`
	Wait         Optional[bool]      `json:"wait,omitempty"`
	ThreadID     Optional[Snowflake] `json:"thread_id,omitempty"`
	MessageCreateParams
}

type WebhookExecuteResponse

type WebhookExecuteResponse = Optional[Message]

type WebhookGetRequest

type WebhookGetRequest struct {
	WebhookID Snowflake `json:"webhook_id"`
}

type WebhookGetResponse

type WebhookGetResponse = Webhook

type WebhookGetWithTokenRequest

type WebhookGetWithTokenRequest struct {
	WebhookID    Snowflake `json:"webhook_id"`
	WebhookToken string    `json:"webhook_token"`
}

type WebhookGetWithTokenResponse

type WebhookGetWithTokenResponse = Webhook

type WebhookMessageDeleteRequest

type WebhookMessageDeleteRequest struct {
	WebhookID    Snowflake `json:"webhook_id"`
	WebhookToken string    `json:"webhook_token"`
	MessageID    Snowflake `json:"message_id"`
}

type WebhookMessageDeleteResponse

type WebhookMessageDeleteResponse = Message

type WebhookMessageEditRequest

type WebhookMessageEditRequest struct {
	WebhookID    Snowflake `json:"webhook_id"`
	WebhookToken string    `json:"webhook_token"`
	MessageID    Snowflake `json:"message_id"`
	MessageEditParams
}

type WebhookMessageEditResponse

type WebhookMessageEditResponse = Message

type WebhookMessageGetRequest

type WebhookMessageGetRequest struct {
	WebhookID    Snowflake `json:"webhook_id"`
	WebhookToken string    `json:"webhook_token"`
	MessageID    Snowflake `json:"message_id"`
}

type WebhookMessageGetResponse

type WebhookMessageGetResponse = Message

type WebhookModifyRequest

type WebhookModifyRequest struct {
	WebhookID Snowflake                  `json:"webhook_id"`
	Name      Optional[string]           `json:"name,omitempty"`
	Avatar    Optional[Nullable[string]] `json:"avatar,omitempty"`
	ChannelID Optional[Snowflake]        `json:"channel_id,omitempty"`
}

type WebhookModifyResponse

type WebhookModifyResponse = Webhook

type WebhookModifyWithTokenRequest

type WebhookModifyWithTokenRequest struct {
	WebhookID    Snowflake                  `json:"webhook_id"`
	WebhookToken string                     `json:"webhook_token"`
	Name         Optional[string]           `json:"name,omitempty"`
	Avatar       Optional[Nullable[string]] `json:"avatar,omitempty"`
	ChannelID    Optional[Snowflake]        `json:"channel_id,omitempty"`
}

type WebhookModifyWithTokenResponse

type WebhookModifyWithTokenResponse = Webhook

type WebhookType

type WebhookType int
const (
	WebhookTypeIncoming        WebhookType = 1
	WebhookTypeChannelFollower WebhookType = 2
	WebhookTypeApplication     WebhookType = 3
)

type WebhooksUpdateEvent

type WebhooksUpdateEvent struct {
	GuildID   Snowflake `json:"guild_id"`
	ChannelID Snowflake `json:"channel_id"`
}

type WelcomeScreen

type WelcomeScreen struct {
	Description     Nullable[string]       `json:"description"`
	WelcomeChannels []WelcomeScreenChannel `json:"welcome_channels"`
}

type WelcomeScreenChannel

type WelcomeScreenChannel struct {
	ChannelID   Snowflake           `json:"channel_id"`
	Description string              `json:"description"`
	EmojiID     Nullable[Snowflake] `json:"emoji_id"`
	EmojiName   Nullable[string]    `json:"emoji_name"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL