Documentation ¶
Overview ¶
Package discord contains every Discord resources used throughout Harmony as well as some utility functions and methods to work with them.
Objects suffixed by "Settings" or "Parameters" are settings and parameters objects are sent by the client to Discord. They all use the `optional` package to handle optional fields properly. Convenience functions are provided to create settings and parameters, see "New*Settings" and "New*Parameters" functions. Most of other objects are sent from Discord to the client. Some of these objects contain fields that are pointers. When this is the case, it means this field is nullable, be sure to check whether it's set before accessing it.
Index ¶
- Constants
- Variables
- func CreationTimeOf(id string) (time.Time, error)
- func NewAPIError(resp *http.Response) error
- func PermissionsContains(permissions, permission int) bool
- type APIError
- type Activity
- type ActivityAssets
- type ActivityEmoji
- type ActivityFlag
- type ActivityParty
- type ActivitySecrets
- type ActivityTimestamp
- type ActivityType
- type Application
- type ApplicationCommand
- type ApplicationCommandOption
- type ApplicationCommandOptionChoice
- type ApplicationCommandOptionType
- type ApplicationCommandPermissionType
- type ApplicationCommandPermissions
- type Ban
- type BotStatus
- type BotStatusActivity
- type Channel
- type ChannelMention
- type ChannelSetting
- func WithChannelBitrate(bitrate int) ChannelSetting
- func WithChannelNSFW(yes bool) ChannelSetting
- func WithChannelName(name string) ChannelSetting
- func WithChannelParent(id string) ChannelSetting
- func WithChannelPermissions(perms []PermissionOverwrite) ChannelSetting
- func WithChannelPosition(pos int) ChannelSetting
- func WithChannelRateLimitPerUser(rateLimit ChannelUserRateLimit) ChannelSetting
- func WithChannelTopic(topic string) ChannelSetting
- func WithChannelType(t ChannelType) ChannelSetting
- func WithChannelUserLimit(limit int) ChannelSetting
- type ChannelSettings
- type ChannelType
- type ChannelUserRateLimit
- type ClientStatus
- type Emoji
- type File
- type GatewayIntent
- type Guild
- type GuildAFKTimeout
- type GuildApplicationCommandPermissions
- type GuildDefaultNotificationLevel
- type GuildExplicitContentFilter
- type GuildFeature
- type GuildIntegration
- type GuildIntegrationAccount
- type GuildIntegrationApplication
- type GuildIntegrationSetting
- type GuildIntegrationSettings
- type GuildMember
- type GuildMemberSetting
- type GuildMemberSettings
- type GuildSetting
- func WithGuildAFKChannel(id string) GuildSetting
- func WithGuildAFKTimeout(t GuildAFKTimeout) GuildSetting
- func WithGuildDefaultMessageNotifications(lvl GuildDefaultNotificationLevel) GuildSetting
- func WithGuildExplicitContentFilter(lvl GuildExplicitContentFilter) GuildSetting
- func WithGuildIcon(icon string) GuildSetting
- func WithGuildName(name string) GuildSetting
- func WithGuildOwner(id string) GuildSetting
- func WithGuildRegion(region string) GuildSetting
- func WithGuildSplash(splash string) GuildSetting
- func WithGuildSystemChannel(id string) GuildSetting
- func WithGuildVerificationLevel(lvl GuildVerificationLevel) GuildSetting
- type GuildSettings
- type GuildVerificationLevel
- type GuildWidget
- type Interaction
- type InteractionData
- type InteractionDataOption
- func (o *InteractionDataOption) Boolean() bool
- func (o *InteractionDataOption) Channel() string
- func (o *InteractionDataOption) Int64() int64
- func (o *InteractionDataOption) Mentionable() string
- func (o *InteractionDataOption) Role() string
- func (o *InteractionDataOption) String() string
- func (o *InteractionDataOption) User() string
- type InteractionDataResolved
- type InteractionType
- type Invite
- type InviteMetadata
- type InviteSetting
- type InviteSettings
- type MFALevel
- type Message
- type MessageActivity
- type MessageActivityType
- type MessageApplication
- type MessageAttachment
- type MessageEmbed
- type MessageEmbedAuthor
- type MessageEmbedField
- type MessageEmbedFooter
- type MessageEmbedImage
- type MessageEmbedProvider
- type MessageEmbedThumbnail
- type MessageEmbedType
- type MessageEmbedVideo
- type MessageFlag
- type MessageReaction
- type MessageReference
- type MessageSticker
- type MessageType
- type PartialApplication
- type PartialGuild
- type PermissionOverwrite
- type PremiumTier
- type PremiumType
- type Presence
- type Role
- type RoleSetting
- type RoleSettings
- type Status
- type StickerFormat
- type SystemChannelFlag
- type Team
- type TeamMember
- type Time
- type UnavailableGuild
- type User
- type UserConnection
- type UserFlag
- type ValidationError
- type Visibility
- type VoiceRegion
- type Webhook
- type WebhookParameter
- func WithWebhookAvatarURL(content string) WebhookParameter
- func WithWebhookContent(content string) WebhookParameter
- func WithWebhookEmbeds(embeds []MessageEmbed) WebhookParameter
- func WithWebhookFiles(files []File) WebhookParameter
- func WithWebhookTTS(yes bool) WebhookParameter
- func WithWebhookUsername(content string) WebhookParameter
- type WebhookParameters
- type WebhookSetting
- type WebhookSettings
Constants ¶
const ( GuildFeatureInviteSplash = "INVITE_SPLASH" GuildFeatureVIPRegions = "VIP_REGIONS" GuildFeatureVanityURL = "VANITY_URL" GuildFeatureVerified = "VERIFIED" GuildFeaturePartenered = "PARTNERED" GuildFeatureCommunity = "COMMUNITY" GuildFeatureCommerce = "COMMERCE" GuildFeatureNews = "NEWS" GuildFeatureDiscoverable = "DISCOVERABLE" GuildFeatureFeaturable = "FEATURABLE" GuildFeatureAnimatedIcon = "ANIMATED_ICON" GuildFeatureBanner = "BANNER" GuildFeatureWelcomeScreenEnabled = "WELCOME_SCREEN_ENABLED" )
const ( PermissionNone = 0x00000000 // Allows nothing. PermissionCreateInvite = 0x00000001 // Allows creation of instant invites. PermissionKickMembers = 0x00000002 // Allows kicking members. PermissionBanMembers = 0x00000004 // Allows banning members. PermissionAdministrator = 0x00000008 // Allows *all permissions* and bypasses channel permission overwrites. PermissionManageChannels = 0x00000010 // Allows management and editing of channels. PermissionManageGuild = 0x00000020 // Allows management and editing of the guild. PermissionAddReactions = 0x00000040 // Allows for the addition of reactions to messages. PermissionViewAuditLog = 0x00000080 // Allows for viewing of audit logs. PermissionViewChannel = 0x00000400 // Allows guild members to view a channel, which includes reading messages in text channels. PermissionSendMessages = 0x00000800 // Allows for sending messages in a channel. PermissionSendTTSMessages = 0x00001000 // Allows for sending of /tts messages. PermissionManageMessages = 0x00002000 // Allows for deletion of other users messages. PermissionEmbedLinks = 0x00004000 // Links sent by users with this permission will be auto-embedded. PermissionAttachFiles = 0x00008000 // Allows for uploading images and files. PermissionReadMessageHistory = 0x00010000 // Allows for reading of message history. PermissionMentionEveryone = 0x00020000 // Allows for using the @everyone tag to notify all users in a channel, and the @here tag to notify all online users in a channel. PermissionUseExternalEmojis = 0x00040000 // Allows the usage of custom emojis from other servers. PermissionConnect = 0x00100000 // Allows for joining of a voice channel. PermissionSpeak = 0x00200000 // Allows for speaking in a voice channel. PermissionMuteMembers = 0x00400000 // Allows for muting members in a voice channel. PermissionDeafenMembers = 0x00800000 // Allows for deafening of members in a voice channel. PermissionMoveMembers = 0x01000000 // Allows for moving of members between voice channels. PermissionUseVAD = 0x02000000 // Allows for using voice-activity-detection in a voice channel. PermissionPrioritySpeaker = 0x00000100 // Allows for using priority speaker in a voice channel. PermissionChangeNickname = 0x04000000 // Allows for modification of own nickname. PermissionManageNicknames = 0x08000000 // Allows for modification of other users nicknames. PermissionManageRoles = 0x10000000 // Allows management and editing of roles. PermissionManageWebhooks = 0x20000000 // Allows management and editing of webhooks. PermissionManageEmojis = 0x40000000 // Allows management and editing of emojis. )
Set of permissions that can be assigned to Users and Roles.
const GatewayIntentUnprivileged = GatewayIntentGuild | GatewayIntentGuildBans | GatewayIntentGuildEmojis | GatewayIntentGuildIntegrations | GatewayIntentGuildWebhooks | GatewayIntentGuildInvites | GatewayIntentGuildVoiceStates | GatewayIntentGuildMessages | GatewayIntentGuildMessageReactions | GatewayIntentGuildMessageTyping | GatewayIntentDirectMessages | GatewayIntentDirectMessageReactions | GatewayIntentDirectMessageTyping
Equivalent to all intents except privileged (GatewayIntentGuildMembers and GatewayIntentGuildPresences), OR'd.
Variables ¶
var ( // ErrGatewayNotConnected is returned when the client is not connected to the Gateway. ErrGatewayNotConnected = errors.New("gateway is not connected") // ErrGatewayAlreadyConnected is returned by Connect when a connection to the Gateway already exists. ErrGatewayAlreadyConnected = errors.New("already connected to the Gateway") // ErrInvalidMessageSend is returned by Send when no files are provided. ErrInvalidMessageSend = errors.New("no content, embed nor file provided") // ErrAlreadyConnectedToVoice is returned when trying to join a voice channel in // a guild where you are already have an active voice connection. ErrAlreadyConnectedToVoice = errors.New("already connected to a voice channel in this guild, consider using the SwitchVoiceChannel method") // ErrNotConnectedToVoice is returned when trying to switch to a different voice // channel in a guild where you are not yet connected to a voice channel. ErrNotConnectedToVoice = errors.New("not connected to a voice channel in this guild, use the JoinVoiceChannel method first") // ErrNotCurrentUser is returned for user endpoints used with an ID different than "@me". ErrNotCurrentUser = errors.New("endpoint only available for current user (@me)") )
Functions ¶
func CreationTimeOf ¶
CreationTimeOf returns the creation time of the given Discord ID (userID, guildID, channelID). For more information, see : https://discord.com/developers/docs/reference#snowflakes.
func NewAPIError ¶
NewAPIError is a helper function that extracts an API error from an HTTP response and returns it as a generic APIError or a ValidationError.
func PermissionsContains ¶
PermissionsContains returns whether the given permission is set in permissions.
Types ¶
type APIError ¶
type APIError struct { HTTPCode int `json:"http_code"` Code int `json:"code"` Message string `json:"message"` Misc []string `json:"_misc"` }
APIError is a generic error returned by the Discord HTTP API.
type Activity ¶
type Activity struct { Name string `json:"name"` Type ActivityType `json:"type"` // Stream url, is validated when type is Streaming. URL string `json:"url"` // Time at which the activity was added to the user's session. CreatedAt int `json:"created_at"` // Unix timestamps for start and/or end of the game. Timestamps ActivityTimestamp `json:"timestamps"` // Application id for the game. ApplicationID string `json:"application_id"` // What the player is currently doing. Details string `json:"details"` // The user's current party status. State string `json:"state"` // The emoji used for a custom status. Emoji ActivityEmoji `json:"emoji"` // Information for the current party of the player. Party ActivityParty `json:"party"` // Images for the presence and their hover texts. Assets ActivityAssets `json:"assets"` // Secrets for Rich Presence joining and spectating. Secrets ActivitySecrets `json:"secrets"` // Whether or not the activity is an instanced game session. Instance bool `json:"instance"` // Activity flags ORd together, describes what the payload includes. Flags ActivityFlag `json:"flags"` }
Activity represents a user activity (playing a game, streaming, etc.). Bots are only able to send Name, Type, and optionally URL.
type ActivityAssets ¶
type ActivityAssets struct { LargeImage string `json:"large_image"` LargeText string `json:"large_text"` SmallImage string `json:"small_image"` SmallText string `json:"small_text"` }
ActivityAssets contains images for the presence and their hover texts.
type ActivityEmoji ¶
type ActivityEmoji struct { ID string `json:"id"` Name string `json:"name"` Animated bool `json:"animated"` }
ActivityEmoji is the emoji set in a custom activity status.
type ActivityFlag ¶
type ActivityFlag int
ActivityFlag describes an Activity.
const ( ActivityFlagInstance ActivityFlag = 1 << 0 ActivityFlagJoin ActivityFlag = 1 << 1 ActivityFlagSpectate ActivityFlag = 1 << 2 ActivityFlagJoinRequest ActivityFlag = 1 << 3 ActivityFlagSync ActivityFlag = 1 << 4 ActivityFlagPlay ActivityFlag = 1 << 5 )
type ActivityParty ¶
type ActivityParty struct { ID string `json:"id"` Size []int `json:"size"` // Array of two integers (current_size, max_size). }
ActivityParty contains information for the current party of the player.
type ActivitySecrets ¶
type ActivitySecrets struct { Join string `json:"join"` Spectate string `json:"spectate"` Match string `json:"match"` }
ActivitySecrets are secrets than can be attached to an activity.
type ActivityTimestamp ¶
ActivityTimestamp is the unix time (in milliseconds) of when the activity starts and ends.
type ActivityType ¶
type ActivityType int
ActivityType describes what the user is doing.
const ( // ActivityTypePlaying will display "Playing {name}". ActivityTypePlaying ActivityType = 0 // ActivityTypeStreaming will display "Streaming {name}". ActivityTypeStreaming ActivityType = 1 // ActivityTypeListening will display "Listening to {name}". ActivityTypeListening ActivityType = 2 // ActivityTypeCustom will display "{emoji} {name}". ActivityTypeCustom ActivityType = 4 // ActivityTypeCompeting will display "Competing in {name}". ActivityTypeCompeting ActivityType = 5 )
type Application ¶
type Application struct { ID string `json:"id"` Name string `json:"name"` Icon string `json:"icon"` Description string `json:"description"` RPCOrigins []string `json:"rpc_origins"` BotPublic bool `json:"bot_public"` BotRequireCodeGrant bool `json:"bot_require_code_grant"` Owner *User `json:"owner"` Summary string `json:"summary"` VerifyKey string `json:"verify_key"` Team Team `json:"team"` GuildID string `json:"guild_id"` PrimarySKUID string `json:"primary_sku_id"` Slug string `json:"slug"` CoverImage string `json:"cover_image"` Flag int `json:"flag"` }
Application represents a Discord developer application.
type ApplicationCommand ¶
type ApplicationCommand struct { ID string `json:"id"` ApplicationID string `json:"application_id"` Name string `json:"name"` Description string `json:"description"` DefaultPermissions bool `json:"default_permissions,omitempty"` }
ApplicationCommand represents a command that is part of an application.
type ApplicationCommandOption ¶
type ApplicationCommandOption struct { Type ApplicationCommandOptionType `json:"type"` Name string `json:"name"` Description string `json:"description"` Required bool `json:"required,omitempty"` Choices []*ApplicationCommandOptionChoice `json:"choices,omitempty"` Options []*ApplicationCommandOption `json:"options,omitempty"` }
ApplicationCommandOption represents an option in an application command.
type ApplicationCommandOptionChoice ¶
type ApplicationCommandOptionChoice struct { Name string `json:"name"` Value interface{} `json:"value"` }
ApplicationCommandOptionChoice is the choice value of an application command option.
type ApplicationCommandOptionType ¶
type ApplicationCommandOptionType int
ApplicationCommandOptionType defines the type of argument being sent with an Interaction.
const ( OptionTypeSubCommand ApplicationCommandOptionType = iota + 1 OptionTypeSubCommandGroup OptionTypeString OptionTypeInteger OptionTypeBoolean OptionTypeUser OptionTypeChannel OptionTypeRole OptionTypeMentionable )
type ApplicationCommandPermissionType ¶
type ApplicationCommandPermissionType int
ApplicationCommandPermissionType defines the basis of application command permission types.
const ( // PermissionTypeRole is sent when an overwrite is acting upon a role. PermissionTypeRole ApplicationCommandPermissionType = iota + 1 // PermissionTypeUser is sent when an overwrite is acting upon a user. PermissionTypeUser )
type ApplicationCommandPermissions ¶
type ApplicationCommandPermissions struct { ID string `json:"id"` Type ApplicationCommandPermissionType `json:"type"` Permission bool `json:"permission"` }
type BotStatus ¶
type BotStatus struct { Since int `json:"since"` Activities []BotStatusActivity `json:"activities,omitempty"` Status Status `json:"status,omitempty"` AFK bool `json:"afk"` }
BotStatus is sent by the client to indicate a presence or status update.
type BotStatusActivity ¶
type BotStatusActivity struct { Type ActivityType `json:"type"` Name string `json:"name"` URL string `json:"url,omitempty"` // Used when Type is ActivityTypeStreaming. }
BotStatusActivity is the subset of allowed values for bots from regular Activities.
type Channel ¶
type Channel struct { ID string `json:"id"` Type ChannelType `json:"type"` GuildID string `json:"guild_id"` Position int `json:"position"` // Sorting position of the channel. PermissionOverwrites []PermissionOverwrite `json:"permission_overwrites"` Name string `json:"name"` Topic string `json:"topic"` NSFW bool `json:"nsfw"` ParentID string `json:"parent_id"` // ID of the parent category for a channel. // For text channels only. LastMessageID string `json:"last_message_id"` LastPinTimestamp Time `json:"last_pin_timestamp"` RateLimitPerUser ChannelUserRateLimit `json:"rate_limit_per_user"` // For voice channels only. Bitrate int `json:"bitrate"` UserLimit int `json:"user_limit"` // For DMs only. Recipients []User `json:"recipients"` Icon string `json:"icon"` OwnerID string `json:"owner_id"` ApplicationID string `json:"application_id"` // Application id of the group DM creator if it is bot-created. }
Channel represents a guild or DM channel within Discord.
type ChannelMention ¶
type ChannelMention struct { ID string `json:"id"` GuildID string `json:"guild_id"` Type ChannelType `json:"type"` Name string `json:"name"` }
ChannelMention represents a channel mention.
type ChannelSetting ¶
type ChannelSetting func(*ChannelSettings)
ChannelSetting is a function that configures a channel.
func WithChannelBitrate ¶
func WithChannelBitrate(bitrate int) ChannelSetting
WithChannelBitrate sets the bit rate of a channel (audio only). Must be a value between 8 and 96 for regular, non-premium channels and can go up to 256 for Tier 2 guild and 384 for Tier 3 guilds.
func WithChannelNSFW ¶
func WithChannelNSFW(yes bool) ChannelSetting
WithChannelNSFW sets whether a channel is not safe for work.
func WithChannelName ¶
func WithChannelName(name string) ChannelSetting
WithChannelName sets the name of a channel.
func WithChannelParent ¶
func WithChannelParent(id string) ChannelSetting
WithChannelParent sets the parent ID channel of a channel.
func WithChannelPermissions ¶
func WithChannelPermissions(perms []PermissionOverwrite) ChannelSetting
WithChannelPermissions sets the permission overwrites of a channel. Pass an empty array to remove all permission overwrites.
func WithChannelPosition ¶
func WithChannelPosition(pos int) ChannelSetting
WithChannelPosition sets the position of a channel.
func WithChannelRateLimitPerUser ¶
func WithChannelRateLimitPerUser(rateLimit ChannelUserRateLimit) ChannelSetting
WithChannelRateLimitPerUser sets the rate limit per user (text only).
func WithChannelTopic ¶
func WithChannelTopic(topic string) ChannelSetting
WithChannelTopic sets the topic of a channel (text only).
func WithChannelType ¶
func WithChannelType(t ChannelType) ChannelSetting
WithChannelType sets the name of a channel.
func WithChannelUserLimit ¶
func WithChannelUserLimit(limit int) ChannelSetting
WithChannelUserLimit sets the user limit of a channel (audio only).
type ChannelSettings ¶
type ChannelSettings struct { Name *optional.String `json:"name,omitempty"` // 2-100 characters. Type *optional.Int `json:"type,omitempty"` Topic *optional.String `json:"topic,omitempty"` // 0-1000 characters. Bitrate *optional.Int `json:"bitrate,omitempty"` UserLimit *optional.Int `json:"user_limit,omitempty"` // RateLimitPerUser is the amount of seconds a user has to wait before sending // another message (0-120); bots, as well as users with the permission // 'manage_messages' or 'manage_channel', are unaffected. RateLimitPerUser *optional.Int `json:"rate_limit_per_user,omitempty"` // Sorting position of the channel. Position *optional.Int `json:"position,omitempty"` Permissions []PermissionOverwrite `json:"permission_overwrites,omitempty"` ParentID *optional.String `json:"parent_id,omitempty"` NSFW *optional.Bool `json:"nsfw,omitempty"` }
ChannelSettings describes a channel creation or update.
func NewChannelSettings ¶
func NewChannelSettings(opts ...ChannelSetting) *ChannelSettings
NewChannelSettings returns new ChannelSettings to create or modify a channel.
type ChannelType ¶
type ChannelType int
ChannelType describes the type of a channel. Different fields are set or not depending on the channel's type.
const ( ChannelTypeGuildText ChannelType = iota ChannelTypeDM ChannelTypeGuildVoice ChannelTypeGroupDM ChannelTypeGuildCategory ChannelTypeGuildNews ChannelTypeGuildStore )
Supported channel types:
type ChannelUserRateLimit ¶
type ChannelUserRateLimit int
ChannelUserRateLimit is the set of allowed values for Channel.RateLimitPerUser.
const ( ChannelUserRateLimit5s ChannelUserRateLimit = 5 ChannelUserRateLimit10s ChannelUserRateLimit = 10 ChannelUserRateLimit15s ChannelUserRateLimit = 15 ChannelUserRateLimit30s ChannelUserRateLimit = 30 ChannelUserRateLimit1m ChannelUserRateLimit = 60 ChannelUserRateLimit2m ChannelUserRateLimit = 120 ChannelUserRateLimit5m ChannelUserRateLimit = 300 ChannelUserRateLimit10m ChannelUserRateLimit = 600 ChannelUserRateLimit15m ChannelUserRateLimit = 900 ChannelUserRateLimit30m ChannelUserRateLimit = 1800 ChannelUserRateLimit1h ChannelUserRateLimit = 3600 ChannelUserRateLimit2h ChannelUserRateLimit = 7200 ChannelUserRateLimit6h ChannelUserRateLimit = 21600 )
Valid Channel User rate limits:
type ClientStatus ¶
type ClientStatus struct { Desktop string `json:"desktop"` Mobile string `json:"mobile"` Web string `json:"web"` }
ClientStatus is a platform-specific client status.
type Emoji ¶
type Emoji struct { ID string `json:"id"` Name string `json:"name"` Roles []string `json:"roles"` User *User `json:"user"` // The user that created this emoji. RequireColons bool `json:"require_colons"` Managed bool `json:"managed"` Animated bool `json:"animated"` // Whether this emoji can be used, may be false due to loss of Server Boosts. Available bool `json:"available"` }
Emoji represents a Discord emoji (both standard and custom).
type File ¶
type File struct { Name string Reader io.ReadCloser }
File represents a file that can be sent with Send and the WithFiles option.
func FileFromDisk ¶
FileFromDisk returns a File from a local, on disk file. If name is left empty, it will default to the name of the file on disk. Note that since Send is responsible for closing files opened by FileFromDisk, calling this function and *not* calling Send after can lead to resource leaks.
func FileFromReadCloser ¶
func FileFromReadCloser(r io.ReadCloser, name string) *File
FileFromReadCloser returns a File given a ReadCloser and a name. If the name ends with a valid extension recognized by Discord's client applications, the file will be displayed inline in the channel instead of asking users to manually download it.
func FileFromURL ¶
FileFromURL returns a File from a remote HTTP resource. If the name is left empty, it will default to the name of the file specified in the URL. Note that since Send is responsible for closing files opened by FileFromURL, calling this function and *not* calling Send after can lead to resource leaks.
type GatewayIntent ¶
type GatewayIntent int
GatewayIntent specifies which events the Gateway should send to a client.
const ( GatewayIntentGuild GatewayIntent = 1 << 0 GatewayIntentGuildMembers GatewayIntent = 1 << 1 GatewayIntentGuildBans GatewayIntent = 1 << 2 GatewayIntentGuildEmojis GatewayIntent = 1 << 3 GatewayIntentGuildIntegrations GatewayIntent = 1 << 4 GatewayIntentGuildWebhooks GatewayIntent = 1 << 5 GatewayIntentGuildInvites GatewayIntent = 1 << 6 GatewayIntentGuildVoiceStates GatewayIntent = 1 << 7 GatewayIntentGuildPresences GatewayIntent = 1 << 8 GatewayIntentGuildMessages GatewayIntent = 1 << 9 GatewayIntentGuildMessageReactions GatewayIntent = 1 << 10 GatewayIntentGuildMessageTyping GatewayIntent = 1 << 11 GatewayIntentDirectMessages GatewayIntent = 1 << 12 GatewayIntentDirectMessageReactions GatewayIntent = 1 << 13 GatewayIntentDirectMessageTyping GatewayIntent = 1 << 14 )
List of gateway intents a client can subscribe to.
func (GatewayIntent) String ¶
func (i GatewayIntent) String() string
String implements fmt.Stringer.
type Guild ¶
type Guild struct { ID string `json:"id"` Name string `json:"name"` Icon string `json:"icon"` Splash string `json:"splash"` DiscoverySplash string `json:"discovery_splash"` Description string `json:"description"` Banner string `json:"banner"` OwnerID string `json:"owner_id"` Region string `json:"region"` AFKChannelID string `json:"afk_channel_id"` AFKTimeout GuildAFKTimeout `json:"afk_timeout"` VerificationLevel GuildVerificationLevel `json:"verification_level"` DefaultMessageNotifications GuildDefaultNotificationLevel `json:"default_message_notifications"` ExplicitContentFilter GuildExplicitContentFilter `json:"explicit_content_filter"` Roles []Role `json:"roles"` Emojis []Emoji `json:"emojis"` Features []string `json:"features"` MFALevel MFALevel `json:"mfa_level"` ApplicationID string `json:"application_id"` PreferredLocale string `json:"preferred_locale"` WidgetEnabled bool `json:"widget_enabled"` WidgetChannelID string `json:"widget_channel_id"` SystemChannelID string `json:"system_channel_id"` SystemChannelFlags SystemChannelFlag `json:"system_channel_flags"` RulesChannelID string `json:"rules_channel_id"` PublicUpdatesChannelID string `json:"public_updates_channel_id"` VanityURLCode string `json:"vanity_url_code"` PremiumTier PremiumTier `json:"premium_tier"` PremiumSubscriptionCount int `json:"premium_subscription_count"` MaxMembers int `json:"max_members"` MaxVideoChannelUsers int `json:"max_video_channel_users"` // Following fields are only sent using the Get Guild method and are relative to the current user. Owner bool `json:"owner"` Permissions int `json:"permissions,string"` // Following fields are only sent within the GUILD_CREATE event. JoinedAt Time `json:"joined_at"` Large bool `json:"large"` MemberCount int `json:"member_count"` VoiceStates []voice.State `json:"voice_states"` Members []GuildMember `json:"members"` Channels []Channel `json:"channels"` Presences []Presence `json:"presences"` }
Guild in Discord represents an isolated collection of users and channels, and are often referred to as "servers" in the UI.
type GuildAFKTimeout ¶
type GuildAFKTimeout int
GuildAFKTimeout is the set of allowed values for AFK timeouts.
const ( GuildAFKTimeout1m GuildAFKTimeout = 60 GuildAFKTimeout5m GuildAFKTimeout = 300 GuildAFKTimeout15m GuildAFKTimeout = 900 GuildAFKTimeout30m GuildAFKTimeout = 1800 GuildAFKTimeout1h GuildAFKTimeout = 3600 )
Valid Guild AFK timeouts:
type GuildApplicationCommandPermissions ¶
type GuildApplicationCommandPermissions struct { ID string `json:"id"` ApplicationID string `json:"application_id"` GuildID string `json:"guild_id"` Permissions []*ApplicationCommandPermissions `json:"permissions"` }
type GuildDefaultNotificationLevel ¶
type GuildDefaultNotificationLevel int
GuildDefaultNotificationLevel determines whether members who have not explicitly set their notification settings receive a notification for every message sent in this server or not.
const ( // GuildDefaultNotificationLevelAll means a notification // will be sent for all messages. GuildDefaultNotificationLevelAll GuildDefaultNotificationLevel = iota // GuildDefaultNotificationLevelMentionOnly means a // notification will be sent for mentions only. GuildDefaultNotificationLevelMentionOnly )
type GuildExplicitContentFilter ¶
type GuildExplicitContentFilter int
GuildExplicitContentFilter determines how the explicit content filter should behave for a server.
const ( // GuildExplicitContentFilterDisabled disables the filter. GuildExplicitContentFilterDisabled GuildExplicitContentFilter = iota // GuildExplicitContentFilterWithoutRole filters messages from // members without a role. GuildExplicitContentFilterWithoutRole // GuildExplicitContentFilterAll filters messages from all members. GuildExplicitContentFilterAll )
type GuildIntegration ¶
type GuildIntegration struct { ID string `json:"id"` Name string `json:"name"` Type string `json:"type"` Enabled bool `json:"enabled"` Syncing bool `json:"syncing"` RoleID string `json:"role_id"` EnableEmoticons bool `json:"enable_emoticons"` ExpireBehavior int `json:"expire_behavior"` ExpireGracePeriod int `json:"expire_grace_period"` User User `json:"user"` Account GuildIntegrationAccount `json:"account"` SyncedAt Time `json:"synced_at"` SubscriberCount int `json:"subscriber_count"` Revoked bool `json:"revoked"` Application GuildIntegrationApplication `json:"application"` }
type GuildIntegrationAccount ¶
type GuildIntegrationSetting ¶
type GuildIntegrationSetting func(*GuildIntegrationSettings)
GuildIntegrationSetting is a function that configures a guild integration.
func WithGuildIntegrationEnableEmoticons ¶
func WithGuildIntegrationEnableEmoticons(yes bool) GuildIntegrationSetting
WithGuildIntegrationEnableEmoticons sets whether emoticons should be synced for this integration (twitch only currently).
func WithGuildIntegrationExpireBehavior ¶
func WithGuildIntegrationExpireBehavior(v int) GuildIntegrationSetting
WithGuildIntegrationExpireBehavior sets the behavior when an integration subscription lapses.
func WithGuildIntegrationExpireGracePeriod ¶
func WithGuildIntegrationExpireGracePeriod(v int) GuildIntegrationSetting
WithGuildIntegrationExpireGracePeriod sets the period (in seconds) where the integration will ignore lapsed subscriptions.
type GuildIntegrationSettings ¶
type GuildIntegrationSettings struct { ExpireBehavior *optional.Int `json:"expire_behavior,omitempty"` ExpireGracePeriod *optional.Int `json:"expire_grace_period,omitempty"` EnableEmoticons *optional.Bool `json:"enable_emoticons,omitempty"` }
GuildIntegrationSettings describes a guild integration's settings.
func NewGuildIntegrationSettings ¶
func NewGuildIntegrationSettings(opts ...GuildIntegrationSetting) *GuildIntegrationSettings
NewGuildIntegrationSettings returns new GuildIntegrationSettings to modify a a guild integration.
type GuildMember ¶
type GuildMember struct { User *User `json:"user"` Nick string `json:"nick"` Roles []string `json:"roles"` // Role IDs. JoinedAt Time `json:"joined_at"` PremiumSince Time `json:"premium_since"` Deaf bool `json:"deaf"` Mute bool `json:"mute"` }
GuildMember represents a User in a Guild. The field User won't be set in objects attached to MESSAGE_CREATE and MESSAGE_UPDATE gateway events.
func (*GuildMember) Clone ¶
func (m *GuildMember) Clone() *GuildMember
Clone returns a clone of this GuildMember.
func (*GuildMember) HasRole ¶
func (m *GuildMember) HasRole(id string) bool
HasRole returns whether this member has the given role. Note that this method does not try to fetch this member latest roles, it instead looks in the roles it already had when this member object was created.
func (*GuildMember) PermissionsIn ¶
func (m *GuildMember) PermissionsIn(g *Guild, ch *Channel) (permissions int)
PermissionsIn returns the permissions of the Guild member in the given Guild and channel.
type GuildMemberSetting ¶
type GuildMemberSetting func(*GuildMemberSettings)
GuildMemberSetting is a function that configures a guild member.
func WithGuildMemberChannelID ¶
func WithGuildMemberChannelID(id string) GuildMemberSetting
WithGuildMemberChannelID sets the channel id of a guild member (if connected to voice).
func WithGuildMemberDeaf ¶
func WithGuildMemberDeaf(yes bool) GuildMemberSetting
WithGuildMemberDeaf sets whether a guild member is deafen.
func WithGuildMemberMute ¶
func WithGuildMemberMute(yes bool) GuildMemberSetting
WithGuildMemberMute sets whether a guild member is muted.
func WithGuildMemberNick ¶
func WithGuildMemberNick(name string) GuildMemberSetting
WithGuildMemberNick sets the name of a guild member.
func WithGuildMemberRoles ¶
func WithGuildMemberRoles(roleIDs []string) GuildMemberSetting
WithGuildMemberRoles sets the roles of a guild member.
type GuildMemberSettings ¶
type GuildMemberSettings struct { Nick *optional.String `json:"nick,omitempty"` Roles *optional.StringSlice `json:"roles,omitempty"` Mute *optional.Bool `json:"mute,omitempty"` Deaf *optional.Bool `json:"deaf,omitempty"` // ID of channel to move user to (if they are connected to voice). ChannelID *optional.String `json:"channel_id,omitempty"` }
GuildMemberSettings are the settings of a guild member, all fields are optional and only those explicitly set will be modified.
func NewGuildMemberSettings ¶
func NewGuildMemberSettings(opts ...GuildMemberSetting) *GuildMemberSettings
NewGuildMemberSettings returns new GuildMemberSetting to modify a a guild member.
type GuildSetting ¶
type GuildSetting func(*GuildSettings)
GuildSetting is a function that configures a guild.
func WithGuildAFKChannel ¶
func WithGuildAFKChannel(id string) GuildSetting
WithGuildAFKChannel sets the AFK channel ID of a guild. An empty id will disable the AFK channel.
func WithGuildAFKTimeout ¶
func WithGuildAFKTimeout(t GuildAFKTimeout) GuildSetting
WithGuildAFKTimeout sets the AFK timeout of a guild.
func WithGuildDefaultMessageNotifications ¶
func WithGuildDefaultMessageNotifications(lvl GuildDefaultNotificationLevel) GuildSetting
WithGuildDefaultMessageNotifications sets the default notification level of a guild.
func WithGuildExplicitContentFilter ¶
func WithGuildExplicitContentFilter(lvl GuildExplicitContentFilter) GuildSetting
WithGuildExplicitContentFilter sets the explicit content filter of a guild.
func WithGuildIcon ¶
func WithGuildIcon(icon string) GuildSetting
WithGuildIcon sets the Guild icon which is a base64 encoded 128x128 jpeg image.
func WithGuildName ¶
func WithGuildName(name string) GuildSetting
WithGuildName sets the name of a guild.
func WithGuildOwner ¶
func WithGuildOwner(id string) GuildSetting
WithGuildOwner sets the owner ID of a guild (must be the guild owner to for this to have effect).
func WithGuildRegion ¶
func WithGuildRegion(region string) GuildSetting
WithGuildRegion sets the region of a guild.
func WithGuildSplash ¶
func WithGuildSplash(splash string) GuildSetting
WithGuildSplash sets the Guild splash (VIP only) which is a base64 encoded 128x128 image.
func WithGuildSystemChannel ¶
func WithGuildSystemChannel(id string) GuildSetting
WithGuildSystemChannel sets the id of the channel to which system messages are sent.
func WithGuildVerificationLevel ¶
func WithGuildVerificationLevel(lvl GuildVerificationLevel) GuildSetting
WithGuildVerificationLevel sets the verification level of a guild.
type GuildSettings ¶
type GuildSettings struct { Name *optional.String `json:"name,omitempty"` Region *optional.String `json:"region,omitempty"` VerificationLevel *optional.Int `json:"verification_level,omitempty"` DefaultMessageNotifications *optional.Int `json:"default_message_notifications,omitempty"` ExplicitContentFilter *optional.Int `json:"explicit_content_filter,omitempty"` AFKChannelID *optional.String `json:"afk_channel_id,omitempty"` AFKTimeout *optional.Int `json:"afk_timeout,omitempty"` Icon *optional.String `json:"icon,omitempty"` OwnerID *optional.String `json:"owner_id,omitempty"` Splash *optional.String `json:"splash,omitempty"` SystemChannelID *optional.String `json:"system_channel_id,omitempty"` }
GuildSettings are the settings of a guild, all fields are optional and only those explicitly set will be modified.
func NewGuildSettings ¶
func NewGuildSettings(opts ...GuildSetting) *GuildSettings
NewGuildSettings returns new GuildSettings to modify a a guild.
type GuildVerificationLevel ¶
type GuildVerificationLevel int
GuildVerificationLevel is the level of verification that applies on a guild. Members must meet criteria before they can send messages or initiate direct message conversations with other guild members. This does not apply for members that have a role assigned to them.
const ( // GuildVerificationLevelNone means there is no verification. GuildVerificationLevelNone GuildVerificationLevel = iota // GuildVerificationLevelLow means a member must have // a verified email on their account. GuildVerificationLevelLow // GuildVerificationLevelMedium means a member must be // registered on Discord for longer than 5 minutes. GuildVerificationLevelMedium // GuildVerificationLevelHigh means a member must be // in this server for longer than 10 minutes. GuildVerificationLevelHigh // GuildVerificationLevelVeryHigh means a member must have // a verified phone number. GuildVerificationLevelVeryHigh )
type GuildWidget ¶
type Interaction ¶
type Interaction struct { ID string `json:"id"` ApplicationID string `json:"application_id"` // Always present; optional for future-proofing. Data *InteractionData `json:"data,omitempty"` GuildID string `json:"guild_id,omitempty"` ChannelID string `json:"channel_id,omitempty"` Member *GuildMember `json:"member,omitempty"` User *User `json:"user,omitempty"` Token string `json:"token"` Version int `json:"version"` }
Interaction is the data sent by Discord when a user triggers a Slash Command.
type InteractionData ¶
type InteractionData struct { ID string `json:"id"` Name string `json:"name"` Resolved *InteractionDataResolved `json:"resolved,omitempty"` Options *InteractionDataOption `json:"options,omitempty"` }
type InteractionDataOption ¶
type InteractionDataOption struct { Name string `json:"name"` Type ApplicationCommandOptionType `json:"type"` Value interface{} `json:"value,omitempty"` // Sent if the root Option is a group or subcommand. Options []*InteractionDataOption `json:"options,omitempty"` }
InteractionDataOption are user-provided parameters and values sent with an Interaction.
func (*InteractionDataOption) Boolean ¶
func (o *InteractionDataOption) Boolean() bool
Boolean casts the value of an InteractionDataOption to a boolean.
func (*InteractionDataOption) Channel ¶
func (o *InteractionDataOption) Channel() string
Channel is an alias for *InteractionDataOption#String().
func (*InteractionDataOption) Int64 ¶
func (o *InteractionDataOption) Int64() int64
Int64 casts the value of an InteractionDataOption to an int64.
func (*InteractionDataOption) Mentionable ¶
func (o *InteractionDataOption) Mentionable() string
Mentionable is an alias for *InteractionDataOption#String().
func (*InteractionDataOption) Role ¶
func (o *InteractionDataOption) Role() string
Role is an alias for *InteractionDataOption#String().
func (*InteractionDataOption) String ¶
func (o *InteractionDataOption) String() string
String casts the value of an InteractionDataOption to a string.
func (*InteractionDataOption) User ¶
func (o *InteractionDataOption) User() string
User is an alias for *InteractionDataOption#String().
type InteractionDataResolved ¶
type InteractionDataResolved struct { Users map[string]*User `json:"users,omitempty"` Members map[string]*GuildMember `json:"members,omitempty"` Roles map[string]*Role `json:"roles,omitempty"` Channels map[string]*Channel `json:"channels,omitempty"` }
InteractionDataResolved is are Discord objects sent with an interaction, resolved.
type InteractionType ¶
type InteractionType int
InteractionType defines the type of Interaction.
const ( InteractionTypePing InteractionType = iota + 1 InteractionTypeApplicationCommand )
type Invite ¶
type Invite struct { Code string `json:"code"` Guild Guild `json:"guild"` // Nil if this invite is for a group DM channel. Channel Channel `json:"channel"` ApproximatePresenceCount int `json:"approximate_presence_count"` ApproximateMemberCount int `json:"approximate_member_count"` InviteMetadata }
Invite represents a code that when used, adds a user to a guild or group DM channel.
type InviteMetadata ¶
type InviteMetadata struct { Inviter User `json:"inviter"` Uses int `json:"uses"` MaxUses int `json:"max_uses"` MaxAge int `json:"max_age"` Temporary bool `json:"temporary"` CreatedAt Time `json:"created_at"` Revoked bool `json:"revoked"` }
InviteMetadata contains additional information about an Invite.
type InviteSetting ¶
type InviteSetting func(*InviteSettings)
InviteSetting is a function that configures an invite.
func WithInviteMaxAge ¶
func WithInviteMaxAge(age time.Duration) InviteSetting
WithInviteMaxAge sets the delay before an invitation expires.
func WithInviteMaxUses ¶
func WithInviteMaxUses(uses int) InviteSetting
WithInviteMaxUses sets the maximum number of uses of an invitation.
func WithInviteTemporary ¶
func WithInviteTemporary(yes bool) InviteSetting
WithInviteTemporary sets whether this invite only grants a temporary membership.
func WithInviteUnique ¶
func WithInviteUnique(yes bool) InviteSetting
WithInviteUnique determines if we should try to reuse a similar existing invite or not (enable this to create many single-use invites).
type InviteSettings ¶
type InviteSettings struct { 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"` }
InviteSettings describes how to create a channel invite. All fields are optional.
func NewInviteSettings ¶
func NewInviteSettings(opts ...InviteSetting) *InviteSettings
NewInviteSettings returns new InviteSettings to create an invite.
type Message ¶
type Message struct { ID string `json:"id"` ChannelID string `json:"channel_id"` GuildID string `json:"guild_id"` // Author of this message. Can be a user or a webhook. // Check the WebhookID field to know. Author User `json:"author"` // Guild member info of the author that sent the message. // Only set for MESSAGE_CREATE and MESSAGE_UPDATE Gateway // events. Member GuildMember `json:"member"` Content string `json:"content"` Timestamp Time `json:"timestamp"` EditedTimestamp Time `json:"edited_timestamp"` TTS bool `json:"tts"` // MentionEveryone is set to true if '@everyone' or '@here' // is set in the message's content. MentionEveryone bool `json:"mention_everyone"` // Mentions contains an array of users that where mentioned // in the message's content. Mentions []User `json:"mentions"` // MentionRoles contains an array of IDs of te roles that // were mentioned in the message's content. MentionRoles []string `json:"mention_roles"` // Not all channel mentions in a message will appear in mention_channels. // Only textual channels that are visible to everyone in a public guild // will ever be included. Only cross-posted messages (via Channel Following) // currently include mention_channels at all. If no mentions in the message // meet these requirements, this field will not be sent. MentionChannels []ChannelMention `json:"mention_channels"` Attachments []MessageAttachment `json:"attachments"` // Any attached files. Embeds []MessageEmbed `json:"embeds"` // Any embedded content. Reactions []MessageReaction `json:"reactions"` Nonce string `json:"nonce"` // Used for validating a message was sent. Pinned bool `json:"pinned"` WebhookID string `json:"webhook_id"` Type MessageType `json:"type"` // Sent with Rich Presence-related chat embeds. Activity MessageActivity `json:"activity"` Application MessageApplication `json:"application"` MessageReference MessageReference `json:"message_reference"` Flags MessageFlag `json:"flags"` Stickers []MessageSticker `json:"stickers"` ReferencedMessage *Message `json:"referenced_message"` }
Message represents a message sent in a channel within Discord. The author object follows the structure of the user object, but is only a valid user in the case where the message is generated by a user or bot user. If the message is generated by a webhook, the author object corresponds to the webhook's id, username, and avatar. You can tell if a message is generated by a webhook by checking for the webhook_id on the message object.
type MessageActivity ¶
type MessageActivity struct { Type MessageActivityType PartyID string }
type MessageActivityType ¶
type MessageActivityType int
const ( MessageActivityTypeJoin MessageActivityType = iota MessageActivityTypeSpectate MessageActivityTypeListen MessageActivityTypeJoinRequest )
type MessageApplication ¶
type MessageAttachment ¶
type MessageAttachment struct { ID string `json:"id"` Filename string `json:"filename"` Size int `json:"size"` URL string `json:"url"` ProxyURL string `json:"proxy_url"` Height int `json:"height"` Width int `json:"width"` }
MessageAttachment is a file attached to a message.
type MessageEmbed ¶
type MessageEmbed struct { Title string `json:"title,omitempty"` Type MessageEmbedType `json:"type,omitempty"` // Type of embed (always MessageEmbedTypeRich for webhook embeds). Description string `json:"description,omitempty"` URL string `json:"url,omitempty"` Timestamp Time `json:"timestamp,omitempty"` Color int `json:"color,omitempty"` Image *MessageEmbedImage `json:"image,omitempty"` Thumbnail *MessageEmbedThumbnail `json:"thumbnail,omitempty"` Video *MessageEmbedVideo `json:"video,omitempty"` Provider *MessageEmbedProvider `json:"provider,omitempty"` Author *MessageEmbedAuthor `json:"author,omitempty"` Fields []MessageEmbedField `json:"fields,omitempty"` }
MessageEmbed describes some rich content for a Discord message.
type MessageEmbedAuthor ¶
type MessageEmbedAuthor struct { Name string `json:"name,omitempty"` URL string `json:"url,omitempty"` IconURL string `json:"icon_url,omitempty"` ProxyIconURL string `json:"proxy_icon_url,omitempty"` }
MessageEmbedAuthor is the embedded author in a Discord message.
type MessageEmbedField ¶
type MessageEmbedField struct { Name string `json:"name,omitempty"` Value string `json:"value,omitempty"` Inline bool `json:"inline,omitempty"` }
MessageEmbedField is an embedded field in a Discord message.
type MessageEmbedFooter ¶
type MessageEmbedFooter struct {}
MessageEmbedFooter is a embedded footer in a Discord message.
type MessageEmbedImage ¶
type MessageEmbedImage struct { URL string `json:"url,omitempty"` // Source url of image (only supports http(s) and attachments). ProxyURL string `json:"proxy_url,omitempty"` // A proxied url of the image. Height int `json:"height,omitempty"` Width int `json:"width,omitempty"` }
MessageEmbedImage is an embedded image in a Discord Message.
type MessageEmbedProvider ¶
type MessageEmbedThumbnail ¶
type MessageEmbedThumbnail struct { URL string `json:"url,omitempty"` ProxyURL string `json:"proxy_url,omitempty"` Height int `json:"height,omitempty"` Width int `json:"width,omitempty"` }
MessageEmbedThumbnail is an embedded thumbnail in a Discord Message.
type MessageEmbedType ¶
type MessageEmbedType string
MessageEmbedType defines the type of an embed message.
const ( MessageEmbedTypeRich MessageEmbedType = "rich" MessageEmbedTypeImage MessageEmbedType = "image" MessageEmbedTypeVideo MessageEmbedType = "video" MessageEmbedTypeGIFV MessageEmbedType = "gifv" MessageEmbedTypeArticle MessageEmbedType = "article" MessageEmbedTypeLink MessageEmbedType = "link" )
type MessageEmbedVideo ¶
type MessageEmbedVideo struct { URL string `json:"url,omitempty"` Height int `json:"height,omitempty"` Width int `json:"width,omitempty"` }
MessageEmbedVideo is an embedded video in a Discord Message.
type MessageFlag ¶
type MessageFlag int
MessageFlag describes extra features a message can have.
const ( // This message has been published to subscribed channels (via Channel Following). MessageFlagCrossposted MessageFlag = 1 << 0 // This message originated from a message in another channel (via Channel Following). MessageFlagIsCrosspost MessageFlag = 1 << 1 // Do not include any embeds when serializing this message. MessageFlagSuppressEmbeds MessageFlag = 1 << 2 )
type MessageReaction ¶
type MessageReaction struct { Count int `json:"count"` Me bool `json:"me"` Emoji Emoji `json:"emoji"` }
MessageReaction is a reaction on a Discord message.
type MessageReference ¶
type MessageReference struct { MessageID string `json:"message_id"` ChannelID string `json:"channel_id"` GuildID string `json:"guild_id"` }
MessageReference is a reference to an original message.
type MessageSticker ¶
type MessageType ¶
type MessageType int
MessageType describes the type of a message. Different fields are set or not depending on the message's type.
const ( MessageTypeDefault MessageType = 0 MessageTypeRecipientAdd MessageType = 1 MessageTypeRecipientRemove MessageType = 2 MessageTypeCall MessageType = 3 MessageTypeChannelNameChange MessageType = 4 MessageTypeChannelIconChange MessageType = 5 MessageTypeChannelPinnedMessage MessageType = 6 MessageTypeGuildMemberJoin MessageType = 7 MessageTypeUserPremiumGuildSubscription MessageType = 8 MessageTypeUserPremiumGuildSubscriptionTier1 MessageType = 9 MessageTypeUserPremiumGuildSubscriptionTier2 MessageType = 10 MessageTypeUserPremiumGuildSubscriptionTier3 MessageType = 11 MessageTypeChannelFollowAdd MessageType = 12 MessageTypeGuildDiscoveryDisqualified MessageType = 14 MessageTypeGuildDiscoveryRequalified MessageType = 15 MessageTypeReply MessageType = 19 MessageTypeCommand MessageType = 20 )
Supported message types:
type PartialApplication ¶
PartialApplication is a partial application that is part of a Ready event.
type PartialGuild ¶
type PartialGuild struct { ID string `json:"id"` Name string `json:"name"` Icon string `json:"icon"` Owner bool `json:"owner"` Permissions int `json:"permissions,string"` }
PartialGuild is a subset of the Guild object, returned by the Discord API when fetching current user's guilds.
type PermissionOverwrite ¶
type PermissionOverwrite struct { Type int `json:"type"` // Either 0 for "role" or 1 for "member". ID string `json:"id"` // ID of the role or member, depending on Type. Allow int `json:"allow,string"` Deny int `json:"deny,string"` }
PermissionOverwrite describes a specific permission that overwrites server-wide permissions.
func (*PermissionOverwrite) Clone ¶
func (o *PermissionOverwrite) Clone() *PermissionOverwrite
Clone returns a clone of this PermissionOverwrite.
type PremiumTier ¶
type PremiumTier int
PremiumTier is the tier of a boosted server.
const ( PremiumTierNone PremiumTier = 0 PremiumTier1 PremiumTier = 1 PremiumTier2 PremiumTier = 2 PremiumTier3 PremiumTier = 3 )
type PremiumType ¶
type PremiumType int
PremiumType denotes the level of premium a user has.
const ( PremiumTypeNone PremiumType = 0 PremiumTypeNitroClassic PremiumType = 1 PremiumTypeNitro PremiumType = 2 )
type Presence ¶
type Presence struct { User *User `json:"user"` GuildID string `json:"guild_id"` Status Status `json:"status"` Activities []Activity `json:"activities"` ClientStatus ClientStatus `json:"client_status"` }
Presence is a user's current state on a guild. This event is sent when a user's presence is updated for a guild.
type Role ¶
type Role struct { ID string `json:"id"` Name string `json:"name"` Color int `json:"color"` // Integer representation of hexadecimal color code. Hoist bool `json:"hoist"` // Whether this role is pinned in the user listing. Position int `json:"position"` // Integer position of this role. Permissions int `json:"permissions,string"` Managed bool `json:"managed"` // Whether this role is managed by an integration. Mentionable bool `json:"mentionable"` }
Role represents a set of permissions attached to a group of users. Roles have unique names, colors, and can be "pinned" to the side bar, causing their members to be listed separately. Roles are unique per guild, and can have separate permission profiles for the global context (guild) and channel context.
type RoleSetting ¶
type RoleSetting func(*RoleSettings)
RoleSetting is a function that configures a guild role.
func WithRoleColor ¶
func WithRoleColor(hexCode int) RoleSetting
WithRoleColor sets the color of guild a role. It accepts hexadecimal value.
func WithRoleHoist ¶
func WithRoleHoist(yes bool) RoleSetting
WithRoleHoist sets whether this guild role is hoisted.
func WithRoleMentionable ¶
func WithRoleMentionable(yes bool) RoleSetting
WithRoleMentionable sets whether this guild role is mentionable by others.
func WithRoleName ¶
func WithRoleName(name string) RoleSetting
WithRoleName sets the name of guild a role.
func WithRolePermissions ¶
func WithRolePermissions(perm int) RoleSetting
WithRolePermissions sets the permissions of guild a role.
type RoleSettings ¶
type RoleSettings struct { Name *optional.String `json:"name,omitempty"` Permissions *optional.String `json:"permissions,omitempty"` Color *optional.Int `json:"color,omitempty"` Hoist *optional.Bool `json:"hoist,omitempty"` Mentionable *optional.Bool `json:"mentionable,omitempty"` }
RoleSettings describes how to modify a guild role, all fields are optional and only those explicitly set will be modified.
func NewRoleSettings ¶
func NewRoleSettings(opts ...RoleSetting) *RoleSettings
NewRoleSettings returns new RoleSettings to modify a a guild role.
type StickerFormat ¶
type StickerFormat int
StickerFormat is the format of a MessageSticker.
const ( StickerFormatPNG StickerFormat = 1 StickerFormatAPNG StickerFormat = 2 StickerFormatLOTTIE StickerFormat = 3 )
type SystemChannelFlag ¶
type SystemChannelFlag int
SystemChannelFlag are flags that customize the behavior of the system channel.
const ( SystemChannelFlagSupressJoinNotifications SystemChannelFlag = 1 << 0 SystemChannelFlagSupressPremiumSubscriptions SystemChannelFlag = 1 << 1 )
type Team ¶
type Team struct { ID string `json:"id"` Members []TeamMember `json:"members"` OwnerUserID string `json:"owner_member_id"` Icon string `json:"icon"` }
Team represents a Discord developer team.
type TeamMember ¶
type TeamMember struct { TeamID string `json:"team_id"` User User `json:"user"` MembershipState int `json:"membership_state"` Permissions []string `json:"permissions"` }
TeamMember is a member part of a Discord developer team.
type Time ¶
Time wraps the standard time.Time structure and handles zero-value JSON marshaling properly.
func (Time) MarshalJSON ¶
MarshalJSON implements the json.Marshaler interface.
func (*Time) UnmarshalJSON ¶
UnmarshalJSON implements the json.Unmarshaler interface.
type UnavailableGuild ¶
type UnavailableGuild struct {}
UnavailableGuild is a Guild that is not available, either because there is a guild outage or because the connected user was removed from this guild.
func (*UnavailableGuild) Clone ¶
func (g *UnavailableGuild) Clone() *UnavailableGuild
Clone returns a clone of this UnavailableGuild.
type User ¶
type User struct { ID string `json:"id"` Username string `json:"username"` Discriminator string `json:"discriminator"` Avatar string `json:"avatar"` Locale string `json:"locale"` Email string `json:"email"` Verified bool `json:"verified"` MFAEnabled bool `json:"mfa_enabled"` Bot bool `json:"bot"` System bool `json:"system"` PremiumType PremiumType `json:"premium_type"` Flags UserFlag `json:"flags"` PublicFlags UserFlag `json:"public_flags"` }
User in Discord is generally considered the base entity. Users can spawn across the entire platform, be members of guilds, participate in text and voice chat, and much more. Users are separated by a distinction of "bot" vs "normal." Although they are similar, bot users are automated users that are "owned" by another user. Unlike normal users, bot users do not have a limitation on the number of Guilds they can be a part of.
type UserConnection ¶
type UserConnection struct { ID string `json:"id"` Name string `json:"name"` Type string `json:"type"` Revoked bool `json:"revoked"` Integrations []GuildIntegration `json:"integrations"` // Partial server integrations. Verified bool `json:"verified"` FriendSync bool `json:"friend_sync"` ShowActivity bool `json:"show_activity"` Visibility Visibility `json:"visibility"` }
UserConnection that the user has attached.
type UserFlag ¶
type UserFlag int
UserFlag are specific attributes a User can have.
const ( UserFlagNone UserFlag = 0 UserFlagDiscordEmployee UserFlag = 1 << 0 UserFlagPartneredServerOwner UserFlag = 1 << 1 UserFlagHypeSquadEvents UserFlag = 1 << 2 UserFlagBugHunterLevel1 UserFlag = 1 << 3 UserFlagHouseBravery UserFlag = 1 << 6 UserFlagHouseBrilliance UserFlag = 1 << 7 UserFlagHouseBalance UserFlag = 1 << 8 UserFlagEarlySupporter UserFlag = 1 << 9 UserFlagTeamUser UserFlag = 1 << 10 UserFlagSystem UserFlag = 1 << 12 UserFlagBugHunterLevel2 UserFlag = 1 << 14 UserFlagVerifiedBot UserFlag = 1 << 16 UserFlagEarlyVerifiedBotDeveloper UserFlag = 1 << 17 )
type ValidationError ¶
type ValidationError struct { HTTPCode int Errors map[string]json.RawMessage `json:"errors"` }
ValidationError is a validation error returned by the Discord HTTP API when it receives invalid parameters.
func (ValidationError) Error ¶
func (e ValidationError) Error() string
Error implements the error interface.
type Visibility ¶
type Visibility int
const ( VisibilityNone Visibility = 0 VisibilityEveryone Visibility = 1 )
type VoiceRegion ¶
type VoiceRegion struct { ID string `json:"id"` Name string `json:"name"` // Whether this is a vip-only server. VIP bool `json:"vip"` // Whether this is a single server that is closest to the current user's client. Optimal bool `json:"optimal"` // Whether this is a deprecated voice region (avoid switching to these. Deprecated bool `json:"deprecated"` // Whether this is a custom voice region (used for events/etc). Custom bool `json:"custom"` }
VoiceRegion represents a voice region a guild can use or is using for its voice channels.
type Webhook ¶
type Webhook struct { ID string `json:"id"` GuildID string `json:"guild_id"` ChannelID string `json:"channel_id"` User *User `json:"user"` Name string `json:"name"` Avatar string `json:"avatar"` Token string `json:"token"` }
Webhook is a low-effort way to post messages to channels in Discord. It do not require a bot user or authentication to use.
type WebhookParameter ¶
type WebhookParameter func(*WebhookParameters)
WebhookParameter is a function that sets webhook parameters.
func WithWebhookAvatarURL ¶
func WithWebhookAvatarURL(content string) WebhookParameter
WithWebhookAvatarURL sets the content of a webhook.
func WithWebhookContent ¶
func WithWebhookContent(content string) WebhookParameter
WithWebhookContent sets the content of a webhook.
func WithWebhookEmbeds ¶
func WithWebhookEmbeds(embeds []MessageEmbed) WebhookParameter
WithWebhookEmbeds sets the content of a webhook.
func WithWebhookFiles ¶
func WithWebhookFiles(files []File) WebhookParameter
WithWebhookFiles sets the content of a webhook.
func WithWebhookTTS ¶
func WithWebhookTTS(yes bool) WebhookParameter
WithWebhookTTS sets the content of a webhook.
func WithWebhookUsername ¶
func WithWebhookUsername(content string) WebhookParameter
WithWebhookUsername sets the content of a webhook.
type WebhookParameters ¶
type WebhookParameters struct { Content *optional.String `json:"content,omitempty"` Username *optional.String `json:"username,omitempty"` AvatarURL *optional.String `json:"avatar_url,omitempty"` TTS *optional.Bool `json:"tts,omitempty"` Embeds []MessageEmbed `json:"embeds,omitempty"` Files []File `json:"-"` }
WebhookParameters are the parameters available when executing a webhook with ExecWebhook.
func NewWebhookParameters ¶
func NewWebhookParameters(opts ...WebhookParameter) *WebhookParameters
NewWebhookParameters returns new WebhookParameters to modify a a webhook.
func (*WebhookParameters) Bytes ¶
func (p *WebhookParameters) Bytes() ([]byte, error)
Bytes implements the rest.MultipartPayload interface so WebhookParameters can be used as a payload with the rest.MultipartFromFiles function.
type WebhookSetting ¶
type WebhookSetting func(*WebhookSettings)
WebhookSetting is a function that configures a webhook.
func WithWebhookAvatar ¶
func WithWebhookAvatar(name string) WebhookSetting
WithWebhookAvatar sets the avatar of a webhook.
func WithWebhookChannel ¶
func WithWebhookChannel(id string) WebhookSetting
WithWebhookChannel sets the channel ID of a webhook.
func WithWebhookName ¶
func WithWebhookName(name string) WebhookSetting
WithWebhookName sets the name of a webhook.
type WebhookSettings ¶
type WebhookSettings struct { Name *optional.String `json:"name,omitempty"` // Avatar is a data URI scheme that support JPG, GIF, and PNG formats, see // https://discord.com/developers/docs/resources/user#avatar-data // for more information. Avatar *optional.String `json:"avatar,omitempty"` ChannelID *optional.String `json:"channel_id,omitempty"` }
WebhookSettings describes a webhook's settings.
func NewWebhookSettings ¶
func NewWebhookSettings(opts ...WebhookSetting) *WebhookSettings
NewWebhookSettings returns new WebhookSettings to modify a a webhook.
Source Files ¶
- activity.go
- application.go
- application_command.go
- channel.go
- channel_settings.go
- clone.go
- doc.go
- error.go
- file.go
- gateway_intent.go
- guild.go
- guild_settings.go
- interaction.go
- invite.go
- invite_settings.go
- message.go
- message_embed.go
- permission.go
- presence.go
- snowflake.go
- time.go
- user.go
- webhook.go
- webhook_parameters.go
- webhook_settings.go