Documentation ¶
Overview ¶
Package discord provides common structures that the whole repository uses. It does not (and should not) contain API-specific structures, or WS-specific structures.
Index ¶
- Constants
- func DurationSinceDiscordEpoch(t time.Time) time.Duration
- func HasFlag(flag, has uint64) bool
- type Activity
- type ActivityAssets
- type ActivityFlags
- type ActivityParty
- type ActivitySecrets
- type ActivityTimestamp
- type ActivityType
- type Attachment
- type AuditEntryInfo
- type AuditLog
- type AuditLogChange
- type AuditLogChangeKey
- type AuditLogEntry
- type AuditLogEvent
- type Ban
- type Channel
- type ChannelMention
- type ChannelOverwritten
- type ChannelType
- type Color
- type Connection
- type ConnectionVisibility
- type Embed
- type EmbedAuthor
- type EmbedField
- type EmbedFooter
- type EmbedImage
- type EmbedProvider
- type EmbedThumbnail
- type EmbedType
- type EmbedVideo
- type Emoji
- type ErrOverbound
- type ExpireBehavior
- type ExplicitFilter
- type Guild
- type GuildEmbed
- type GuildFeature
- type GuildPreview
- func (g GuildPreview) DiscoverySplashURL() string
- func (g GuildPreview) DiscoverySplashURLWithType(t ImageType) string
- func (g GuildPreview) IconURL() string
- func (g GuildPreview) IconURLWithType(t ImageType) string
- func (g GuildPreview) SplashURL() string
- func (g GuildPreview) SplashURLWithType(t ImageType) string
- type GuildUser
- type Hash
- type ImageType
- type Integration
- type Invite
- type InviteMetadata
- type InviteUserType
- type MFALevel
- type Member
- type Message
- type MessageActivity
- type MessageActivityType
- type MessageApplication
- type MessageFlags
- type MessageReference
- type MessageType
- type Milliseconds
- type NitroBoost
- type Notification
- type Overwrite
- type OverwriteType
- type Permissions
- type Presence
- type Reaction
- type Role
- type Seconds
- type Service
- type Snowflake
- func (s Snowflake) Increment() uint16
- func (s Snowflake) MarshalJSON() ([]byte, error)
- func (s Snowflake) PID() uint8
- func (s Snowflake) String() string
- func (s Snowflake) Time() time.Time
- func (s *Snowflake) UnmarshalJSON(v []byte) error
- func (s Snowflake) Valid() bool
- func (s Snowflake) Worker() uint8
- type Status
- type Timestamp
- type URL
- type UnixMsTimestamp
- type UnixTimestamp
- type User
- type UserFlags
- type UserNitro
- type Verification
- type VoiceRegion
- type VoiceState
- type Webhook
- type WebhookType
Constants ¶
const DefaultMaxPresences = 5000
Guild.MaxPresences is 5000 when it's 0.
const DiscordEpoch = 1420070400000 * time.Millisecond
DiscordEpoch is the Discord epoch constant in time.Duration (nanoseconds) since Unix epoch.
const NullSecond = -1
NullSecond is used in cases where null should be used instead of a number or omitted. This is similar to NullSnowflake.
const TimestampFormat = time.RFC3339 // same as ISO8601
Variables ¶
This section is empty.
Functions ¶
func DurationSinceDiscordEpoch ¶ added in v0.7.0
DurationSinceDiscordEpoch returns the duration from the Discord epoch to current.
Types ¶
type Activity ¶
type Activity struct { Name string `json:"name"` Type ActivityType `json:"type"` URL URL `json:"url,omitempty"` CreatedAt UnixTimestamp `json:"created_at,omitempty"` Timestamps *ActivityTimestamp `json:"timestamps,omitempty"` ApplicationID Snowflake `json:"application_id,omitempty"` Details string `json:"details,omitempty"` State string `json:"state,omitempty"` // party status Emoji *Emoji `json:"emoji,omitempty"` Party *ActivityParty `json:"party,omitempty"` Assets *ActivityAssets `json:"assets,omitempty"` Secrets *ActivitySecrets `json:"secrets,omitempty"` Instance bool `json:"instance,omitempty"` Flags ActivityFlags `json:"flags,omitempty"` // Undocumented fields SyncID string `json:"sync_id,omitempty"` SessionID string `json:"session_id,omitempty"` }
type ActivityAssets ¶ added in v0.2.0
type ActivityFlags ¶
type ActivityFlags uint32
const ( InstanceActivity ActivityFlags = 1 << iota JoinActivity SpectateActivity JoinRequestActivity SyncActivity PlayActivity )
type ActivityParty ¶ added in v0.2.0
type ActivitySecrets ¶ added in v0.2.0
type ActivityTimestamp ¶ added in v0.2.0
type ActivityTimestamp struct { Start UnixMsTimestamp `json:"start,omitempty"` End UnixMsTimestamp `json:"end,omitempty"` }
type ActivityType ¶
type ActivityType uint8
const ( // Playing $name GameActivity ActivityType = iota // Streaming $details StreamingActivity // Listening to $name ListeningActivity // $emoji $state CustomActivity )
type Attachment ¶
type AuditEntryInfo ¶ added in v0.6.3
type AuditEntryInfo struct { // MEMBER_PRUNE DeleteMemberDays string `json:"delete_member_days,omitempty"` // MEMBER_PRUNE MembersRemoved string `json:"members_removed,omitempty"` // MEMBER_MOVE & MESSAGE_PIN & MESSAGE_UNPIN & MESSAGE_DELETE ChannelID Snowflake `json:"channel_id,omitempty"` // MESSAGE_PIN & MESSAGE_UNPIN MessageID Snowflake `json:"message_id,omitempty"` // MESSAGE_DELETE & MESSAGE_BULK_DELETE & MEMBER_DISCONNECT & MEMBER_MOVE Count string `json:"count,omitempty"` // CHANNEL_OVERWRITE_CREATE & CHANNEL_OVERWRITE_UPDATE & CHANNEL_OVERWRITE_DELETE ID Snowflake `json:"id,omitempty"` // CHANNEL_OVERWRITE_CREATE & CHANNEL_OVERWRITE_UPDATE & CHANNEL_OVERWRITE_DELETE Type ChannelOverwritten `json:"type,omitempty"` // CHANNEL_OVERWRITE_CREATE & CHANNEL_OVERWRITE_UPDATE & CHANNEL_OVERWRITE_DELETE RoleName string `json:"role_name,omitempty"` }
type AuditLog ¶ added in v0.6.3
type AuditLog struct { // List of webhooks found in the audit log Webhooks []Webhook `json:"webhooks"` // List of users found in the audit log Users []User `json:"users"` // List of audit log entries Entries []AuditLogEntry `json:"audit_log_entries"` // List of partial integration objects, only ID, Name, Type, and Account Integrations []Integration `json:"integrations"` }
type AuditLogChange ¶ added in v0.6.3
type AuditLogChange struct { Key string `json:"key"` NewValue json.Raw `json:"new_value,omitempty"` // nullable OldValue json.Raw `json:"old_value,omitempty"` // nullable }
AuditLogChange is a single key type to changed value audit log entry. The type can be found in the key's comment. Values can be nil.
What ¶
I'm glad to see the same reaction that I had on you. In short, in this struct, the Key dictates what type NewValue and OldValue will have. They will always be the same type, but I will leave that as JSON for the user.
Usage ¶
The usage of this is pretty simple, as AuditLogChange already has a convenient method to use. Here's an example on how to do "owner_id":
if change.Key != discord.AuditGuildOwnerID { return errors.New("not owner ID") } // We know these are snowflakes because the comment said so for AuditGuildOwnerID. var oldOwnerID, newOwnerID discord.Snowflake if err := change.UnmarshalValues(&oldOwnerID, &newOwnerID); err != nil { return err } log.Println("Transferred ownership from user", oldOwnerID, "to", newOwnerID)
func (AuditLogChange) UnmarshalValues ¶ added in v0.6.4
func (a AuditLogChange) UnmarshalValues(old, new interface{}) error
type AuditLogChangeKey ¶ added in v0.6.3
type AuditLogChangeKey string
const ( // Type string, name changed AuditGuildName AuditLogChangeKey = "name" // Type Hash, icon changed AuditGuildIconHash AuditLogChangeKey = "icon_hash" // Type Hash, invite splash page artwork changed AuditGuildSplashHash AuditLogChangeKey = "splash_hash" // Type Snowflake, owner changed AuditGuildOwnerID AuditLogChangeKey = "owner_id" // Type string, region changed AuditGuildRegion AuditLogChangeKey = "region" // Type Snowflake, afk channel changed AuditGuildAFKChannelID AuditLogChangeKey = "afk_channel_id" // Type Seconds, afk timeout duration changed AuditGuildAFKTimeout AuditLogChangeKey = "afk_timeout" // Type int, two-factor auth requirement changed AuditGuildMFA AuditLogChangeKey = "mfa_level" // Type Verification, required verification level changed AuditGuildVerification AuditLogChangeKey = "verification_level" // Type ExplicitFilter, change in whose messages are scanned and deleted for // explicit content in the server AuditGuildExplicitFilter AuditLogChangeKey = "explicit_content_filter" // Type Notification, default message notification level changed AuditGuildNotification AuditLogChangeKey = "default_message_notifications" // Type string, guild invite vanity URL changed AuditGuildVanityURLCode AuditLogChangeKey = "vanity_url_code" // Type []Role{ID, Name}, new role added AuditGuildRoleAdd AuditLogChangeKey = "$add" // Type []Role{ID, Name}, role removed AuditGuildRoleRemove AuditLogChangeKey = "$remove" // Type int, change in number of days after which inactive and // role-unassigned members are kicked AuditGuildPruneDeleteDays AuditLogChangeKey = "prune_delete_days" // Type bool, server widget enabled/disable AuditGuildWidgetEnabled AuditLogChangeKey = "widget_enabled" // Type Snowflake, channel ID of the server widget changed AuditGuildWidgetChannelID AuditLogChangeKey = "widget_channel_id" // Type Snowflake, ID of the system channel changed AuditGuildSystemChannelID AuditLogChangeKey = "system_channel_id" )
const ( // Type int, text or voice channel position changed AuditChannelPosition AuditLogChangeKey = "position" // Type string, text channel topic changed AuditChannelTopic AuditLogChangeKey = "topic" // Type uint, voice channel bitrate changed AuditChannelBitrate AuditLogChangeKey = "bitrate" // Type []Overwrite, permissions on a channel changed AuditChannelPermissionOverwrites AuditLogChangeKey = "permission_overwrites" // Type bool, channel NSFW restriction changed AuditChannelNSFW AuditLogChangeKey = "nsfw" // Type Snowflake, application ID of the added or removed webhook or bot AuditChannelApplicationID AuditLogChangeKey = "application_id" // Type Seconds, amount of seconds a user has to wait before sending another // message changed AuditChannelRateLimitPerUser AuditLogChangeKey = "rate_limit_per_user" )
const ( // Type Permissions, permissions for a role changed AuditRolePermissions AuditLogChangeKey = "permissions" // Type Color, role color changed AuditRoleColor AuditLogChangeKey = "color" // Type bool, role is now displayed/no longer displayed separate from online // users AuditRoleHoist AuditLogChangeKey = "hoist" // Type bool, role is now mentionable/unmentionable AuditRoleMentionable AuditLogChangeKey = "mentionable" // Type Permissions, a permission on a text or voice channel was allowed for // a role AuditRoleAllow AuditLogChangeKey = "allow" // Type Permissions, a permission on a text or voice channel was denied for // a role AuditRoleDeny AuditLogChangeKey = "deny" )
const ( // Type string, invite code changed AuditInviteCode AuditLogChangeKey = "code" // Type Snowflake, channel for invite code changed AuditInviteChannelID AuditLogChangeKey = "channel_id" // Type Snowflake, person who created invite code changed AuditInviteInviterID AuditLogChangeKey = "inviter_id" // Type int, change to max number of times invite code can be used AuditInviteMaxUses AuditLogChangeKey = "max_uses" // Type int, number of times invite code used changed AuditInviteUses AuditLogChangeKey = "uses" // Type Seconds, how long invite code lasts changed AuditInviteMaxAge AuditLogChangeKey = "max_age" // Type bool, invite code is temporary/never expires AuditInviteTemporary AuditLogChangeKey = "temporary" )
const ( // Type bool, user server deafened/undeafened AuditUserDeaf AuditLogChangeKey = "deaf" // Type bool, user server muted/unmuted AuditUserMute AuditLogChangeKey = "mute" // Type string, user nickname changed AuditUserNick AuditLogChangeKey = "nick" // Type Hash, user avatar changed AuditUserAvatarHash AuditLogChangeKey = "avatar_hash" )
const ( // Type Snowflake, the ID of the changed entity - sometimes used in // conjunction with other keys AuditAnyID AuditLogChangeKey = "id" // Type int (channel type) or string, type of entity created AuditAnyType AuditLogChangeKey = "type" )
const ( // Type bool, integration emoticons enabled/disabled AuditIntegrationEnableEmoticons AuditLogChangeKey = "enable_emoticons" // Type int, integration expiring subscriber behavior changed AuditIntegrationExpireBehavior AuditLogChangeKey = "expire_behavior" // Type int, integration expire grace period changed AuditIntegrationExpireGracePeriod AuditLogChangeKey = "expire_grace_period" )
type AuditLogEntry ¶ added in v0.6.4
type AuditLogEntry struct { ID Snowflake `json:"id"` UserID Snowflake `json:"user_id"` TargetID string `json:"target_id,omitempty"` ActionType AuditLogEvent `json:"action_type"` Changes []AuditLogChange `json:"changes,omitempty"` Options AuditEntryInfo `json:"options,omitempty"` Reason string `json:"reason,omitempty"` }
AuditLogEntry is a single entry in the audit log.
type AuditLogEvent ¶ added in v0.6.3
type AuditLogEvent uint8
AuditLogEvent is the type of audit log action that occured.
const ( GuildUpdate AuditLogEvent = 1 ChannelCreate AuditLogEvent = 10 ChannelUpdate AuditLogEvent = 11 ChannelDelete AuditLogEvent = 12 ChannelOverwriteCreate AuditLogEvent = 13 ChannelOverwriteUpdate AuditLogEvent = 14 ChannelOverwriteDelete AuditLogEvent = 15 MemberKick AuditLogEvent = 20 MemberPrune AuditLogEvent = 21 MemberBanAdd AuditLogEvent = 22 MemberBanRemove AuditLogEvent = 23 MemberUpdate AuditLogEvent = 24 MemberRoleUpdate AuditLogEvent = 25 MemberMove AuditLogEvent = 26 MemberDisconnect AuditLogEvent = 27 BotAdd AuditLogEvent = 28 RoleCreate AuditLogEvent = 30 RoleUpdate AuditLogEvent = 31 RoleDelete AuditLogEvent = 32 InviteCreate AuditLogEvent = 40 InviteUpdate AuditLogEvent = 41 InviteDelete AuditLogEvent = 42 WebhookCreate AuditLogEvent = 50 WebhookUpdate AuditLogEvent = 51 WebhookDelete AuditLogEvent = 52 EmojiCreate AuditLogEvent = 60 EmojiUpdate AuditLogEvent = 61 EmojiDelete AuditLogEvent = 62 MessageDelete AuditLogEvent = 72 MessageBulkDelete AuditLogEvent = 73 MessagePin AuditLogEvent = 74 MessageUnpin AuditLogEvent = 75 IntegrationCreate AuditLogEvent = 80 IntegrationUpdate AuditLogEvent = 81 IntegrationDelete AuditLogEvent = 82 )
type Channel ¶
type Channel struct { ID Snowflake `json:"id,string"` Type ChannelType `json:"type"` GuildID Snowflake `json:"guild_id,string,omitempty"` Position int `json:"position,omitempty"` Name string `json:"name,omitempty"` // 2-100 chars Topic string `json:"topic,omitempty"` // 0-1024 chars NSFW bool `json:"nsfw"` Icon Hash `json:"icon,omitempty"` // Direct Messaging fields DMOwnerID Snowflake `json:"owner_id,string,omitempty"` DMRecipients []User `json:"recipients,omitempty"` // AppID of the group DM creator if it's bot-created AppID Snowflake `json:"application_id,string,omitempty"` // ID of the category the channel is in, if any. CategoryID Snowflake `json:"parent_id,string,omitempty"` LastPinTime Timestamp `json:"last_pin_timestamp,omitempty"` // Explicit permission overrides for members and roles. Permissions []Overwrite `json:"permission_overwrites,omitempty"` // ID of the last message, may not point to a valid one. LastMessageID Snowflake `json:"last_message_id,string,omitempty"` // Slow mode duration. Bots and people with "manage_messages" or // "manage_channel" permissions are unaffected. UserRateLimit Seconds `json:"rate_limit_per_user,omitempty"` // Voice, so GuildVoice only VoiceBitrate uint `json:"bitrate,omitempty"` VoiceUserLimit uint `json:"user_limit,omitempty"` }
type ChannelMention ¶
type ChannelMention struct { ChannelID Snowflake `json:"id,string"` GuildID Snowflake `json:"guild_id,string"` ChannelType ChannelType `json:"type"` ChannelName string `json:"name"` }
type ChannelOverwritten ¶ added in v0.6.3
type ChannelOverwritten string
ChannelOverwritten is the type of overwritten entity in (AuditEntryInfo).Type.
const ( MemberChannelOverwritten ChannelOverwritten = "member" RoleChannelOverwritten ChannelOverwritten = "role" )
type ChannelType ¶
type ChannelType uint8
var ( GuildText ChannelType = 0 DirectMessage ChannelType = 1 GuildVoice ChannelType = 2 GroupDM ChannelType = 3 GuildCategory ChannelType = 4 GuildNews ChannelType = 5 GuildStore ChannelType = 6 )
type Color ¶
type Color uint32
var DefaultEmbedColor Color = 0x303030
var DefaultMemberColor Color = 0x0
DefaultMemberColor is the color used for members without colored roles.
func MemberColor ¶ added in v0.0.7
type Connection ¶
type Connection struct { ID Snowflake `json:"id"` Name string `json:"name"` Type Service `json:"type"` Revoked bool `json:"revoked"` Verified bool `json:"verified"` FriendSync bool `json:"friend_sync"` ShowActivity bool `json:"show_activity"` Visibility ConnectionVisibility `json:"visibility"` // Only partial Integrations []Integration `json:"integrations"` }
type ConnectionVisibility ¶
type ConnectionVisibility uint8
const ( ConnectionNotVisible ConnectionVisibility = iota ConnectionVisibleEveryone )
type Embed ¶
type Embed struct { Title string `json:"title,omitempty"` Type EmbedType `json:"type,omitempty"` Description string `json:"description,omitempty"` URL URL `json:"url,omitempty"` Timestamp Timestamp `json:"timestamp,omitempty"` Color Color `json:"color,omitempty"` Image *EmbedImage `json:"image,omitempty"` Thumbnail *EmbedThumbnail `json:"thumbnail,omitempty"` Video *EmbedVideo `json:"video,omitempty"` Provider *EmbedProvider `json:"provider,omitempty"` Author *EmbedAuthor `json:"author,omitempty"` Fields []EmbedField `json:"fields,omitempty"` }
type EmbedAuthor ¶
type EmbedField ¶
type EmbedFooter ¶
type EmbedFooter struct {}
type EmbedImage ¶
type EmbedProvider ¶
type EmbedThumbnail ¶
type EmbedVideo ¶
type Emoji ¶
type Emoji struct { ID Snowflake `json:"id,string"` // NullSnowflake for unicode emojis Name string `json:"name"` RoleIDs []Snowflake `json:"roles,omitempty"` User User `json:"user,omitempty"` RequireColons bool `json:"require_colons,omitempty"` Managed bool `json:"managed,omitempty"` Animated bool `json:"animated,omitempty"` }
func (Emoji) EmojiURL ¶ added in v0.8.1
EmojiURL returns the URL of the emoji.
This will only work for custom emojis.
func (Emoji) EmojiURLWithType ¶ added in v0.8.1
EmojiURLWithType returns the URL to the emoji's image.
This will only work for custom emojis.
Supported ImageTypes: PNG, GIF
type ErrOverbound ¶
func (ErrOverbound) Error ¶
func (e ErrOverbound) Error() string
type ExpireBehavior ¶ added in v0.7.0
type ExpireBehavior uint8
ExpireBehavior is the integration expire behavior that regulates what happens, if a subscriber expires.
var ( // RemoveRole removes the role of the subscriber. RemoveRole ExpireBehavior = 0 // Kick kicks the subscriber from the guild. Kick ExpireBehavior = 1 )
type ExplicitFilter ¶
ExplicitFilter is the explicit content filter level of a guild.
var ( // NullExplicitFilter serialized to JSON null. // This should only be used on nullable fields. NullExplicitFilter ExplicitFilter = enum.Null // NoContentFilter disables content filtering for the guild. NoContentFilter ExplicitFilter = 0 // MembersWithoutRoles filters only members without roles. MembersWithoutRoles ExplicitFilter = 1 // AllMembers enables content filtering for all members. AllMembers ExplicitFilter = 2 )
func (ExplicitFilter) MarshalJSON ¶ added in v0.7.0
func (f ExplicitFilter) MarshalJSON() ([]byte, error)
func (*ExplicitFilter) UnmarshalJSON ¶ added in v0.7.0
func (f *ExplicitFilter) UnmarshalJSON(b []byte) error
type Guild ¶
type Guild struct { ID Snowflake `json:"id,string"` Name string `json:"name"` Icon Hash `json:"icon"` Splash Hash `json:"splash,omitempty"` // server invite bg Owner bool `json:"owner,omitempty"` // self is owner OwnerID Snowflake `json:"owner_id,string"` Permissions Permissions `json:"permissions,omitempty"` VoiceRegion string `json:"region"` AFKChannelID Snowflake `json:"afk_channel_id,string,omitempty"` AFKTimeout Seconds `json:"afk_timeout"` Embeddable bool `json:"embed_enabled,omitempty"` EmbedChannelID Snowflake `json:"embed_channel_id,string,omitempty"` Verification Verification `json:"verification_level"` Notification Notification `json:"default_message_notifications"` ExplicitFilter ExplicitFilter `json:"explicit_content_filter"` Roles []Role `json:"roles"` Emojis []Emoji `json:"emojis"` Features []GuildFeature `json:"guild_features"` MFA MFALevel `json:"mfa"` AppID Snowflake `json:"application_id,string,omitempty"` Widget bool `json:"widget_enabled,omitempty"` WidgetChannelID Snowflake `json:"widget_channel_id,string,omitempty"` SystemChannelID Snowflake `json:"system_channel_id,string,omitempty"` // It's DefaultMaxPresences when MaxPresences is 0. MaxPresences uint64 `json:"max_presences,omitempty"` MaxMembers uint64 `json:"max_members,omitempty"` VanityURLCode string `json:"vanity_url_code,omitempty"` Description string `json:"description,omitempty"` Banner Hash `json:"banner,omitempty"` NitroBoost NitroBoost `json:"premium_tier"` NitroBoosters uint64 `json:"premium_subscription_count,omitempty"` // Defaults to en-US, only set if guild has DISCOVERABLE PreferredLocale string `json:"preferred_locale"` // Only presented if WithCounts is true. ApproximateMembers uint64 `json:"approximate_member_count,omitempty"` ApproximatePresences uint64 `json:"approximate_presence_count,omitempty"` }
func (Guild) BannerURL ¶ added in v0.1.1
BannerURL returns the URL to the banner, which is the image on top of the channels list. This will always return a link to a PNG file.
func (Guild) BannerURLWithType ¶ added in v0.8.1
BannerURLWithType returns the URL to the banner, which is the image on top of the channels list using the passed image type.
Supported ImageTypes: PNG, JPEG, WebP
func (Guild) IconURL ¶ added in v0.1.1
IconURL returns the URL to the guild icon and auto detects a suitable type. An empty string is returned if there's no icon.
func (Guild) IconURLWithType ¶ added in v0.8.1
IconURLWithType returns the URL to the guild icon using the passed ImageType. An empty string is returned if there's no icon.
Supported ImageTypes: PNG, JPEG, WebP, GIF
func (Guild) SplashURL ¶ added in v0.1.1
SplashURL returns the URL to the guild splash, which is the invite page's background. This will always return a link to a PNG file.
func (Guild) SplashURLWithType ¶ added in v0.8.1
SplashURLWithType returns the URL to the guild splash, which is the invite page's background, using the passed ImageType.
Supported ImageTypes: PNG, JPEG, WebP
type GuildEmbed ¶
type GuildFeature ¶
type GuildFeature string
const ( // Guild has access to set an invite splash background InviteSplash GuildFeature = "INVITE_SPLASH" // Guild has access to set 384kbps bitrate in voice (previously VIP voice // servers) VIPRegions GuildFeature = "VIP_REGIONS" // Guild has access to set a vanity URL VanityURL GuildFeature = "VANITY_URL" // Guild is verified Verified GuildFeature = "VERIFIED" // Guild is partnered Partnered GuildFeature = "PARTNERED" // Guild is public Public GuildFeature = "PUBLIC" // Guild has access to use commerce features (i.e. create store channels) Commerce GuildFeature = "COMMERCE" // Guild has access to create news channels News GuildFeature = "NEWS" // Guild is able to be discovered in the directory Discoverable GuildFeature = "DISCOVERABLE" // Guild is able to be featured in the directory Featurable GuildFeature = "FEATURABLE" // Guild has access to set an animated guild icon AnimatedIcon GuildFeature = "ANIMATED_ICON" // Guild has access to set a guild banner image Banner GuildFeature = "BANNER" )
type GuildPreview ¶ added in v0.8.1
type GuildPreview struct { // ID is the guild id. ID Snowflake `json:"id"` // Name is the guild name (2-100 characters). Name string `json:"name"` // Icon is the icon hash. Icon Hash `json:"icon"` // Splash is the splash hash. Splash Hash `json:"splash"` // DiscoverySplash is the discovery splash hash. DiscoverySplash Hash `json:"discovery_splash"` // Emojis are the custom guild emojis. Emojis []Emoji `json:"emojis"` // Features are the enabled guild features. Features []GuildFeature `json:"guild_features"` // ApproximateMembers is the approximate number of members in this guild. ApproximateMembers uint64 `json:"approximate_member_count"` // ApproximatePresences is the approximate number of online members in this // guild. ApproximatePresences uint64 `json:"approximate_presence_count"` // Description is the description for the guild. Description string `json:"description,omitempty"` }
https://discord.com/developers/docs/resources/guild#guild-preview-object
func (GuildPreview) DiscoverySplashURL ¶ added in v0.8.1
func (g GuildPreview) DiscoverySplashURL() string
DiscoverySplashURL returns the URL to the guild splash, which is the invite page's background. This will always return a link to a PNG file.
func (GuildPreview) DiscoverySplashURLWithType ¶ added in v0.8.1
func (g GuildPreview) DiscoverySplashURLWithType(t ImageType) string
DiscoverySplashURLWithType returns the URL to the guild splash, which is the invite page's background, using the passed ImageType.
Supported ImageTypes: PNG, JPEG, WebP
func (GuildPreview) IconURL ¶ added in v0.8.1
func (g GuildPreview) IconURL() string
IconURL returns the URL to the guild icon and auto detects a suitable type. An empty string is returned if there's no icon.
func (GuildPreview) IconURLWithType ¶ added in v0.8.1
func (g GuildPreview) IconURLWithType(t ImageType) string
IconURLWithType returns the URL to the guild icon using the passed ImageType. An empty string is returned if there's no icon.
Supported ImageTypes: PNG, JPEG, WebP, GIF
func (GuildPreview) SplashURL ¶ added in v0.8.1
func (g GuildPreview) SplashURL() string
SplashURL returns the URL to the guild splash, which is the invite page's background. This will always return a link to a PNG file.
func (GuildPreview) SplashURLWithType ¶ added in v0.8.1
func (g GuildPreview) SplashURLWithType(t ImageType) string
SplashURLWithType returns the URL to the guild splash, which is the invite page's background, using the passed ImageType.
Supported ImageTypes: PNG, JPEG, WebP
type ImageType ¶ added in v0.8.1
type ImageType string
const ( // AutoImage chooses automatically between a PNG and GIF. AutoImage ImageType = "auto" // JPEGImage is the JPEG image type. JPEGImage ImageType = ".jpeg" // PNGImage is the PNG image type. PNGImage ImageType = ".png" // WebPImage is the WebP image type. WebPImage ImageType = ".webp" // GIFImage is the GIF image type. GIFImage ImageType = ".gif" )
type Integration ¶
type Integration struct { ID Snowflake `json:"id"` Name string `json:"name"` Type Service `json:"type"` Enabled bool `json:"enabled"` Syncing bool `json:"syncing"` // used for subscribers RoleID Snowflake `json:"role_id"` ExpireBehavior ExpireBehavior `json:"expire_behavior"` ExpireGracePeriod int `json:"expire_grace_period"` User User `json:"user"` Account struct { ID string `json:"id"` Name string `json:"name"` } `json:"account"` SyncedAt Timestamp `json:"synced_at"` }
type Invite ¶
type Invite struct { Code string `json:"code"` Channel Channel `json:"channel"` // partial Guild *Guild `json:"guild,omitempty"` // partial Inviter *User `json:"inviter,omitempty"` ApproxMembers uint `json:"approximate_members_count,omitempty"` Target *User `json:"target_user,omitempty"` // partial TargetType InviteUserType `json:"target_user_type,omitempty"` // Only available if Target is ApproxPresences uint `json:"approximate_presence_count,omitempty"` InviteMetadata // only available when fetching ChannelInvites or GuildInvites }
type InviteMetadata ¶ added in v0.6.3
type InviteMetadata struct { // Number of times this invite has been used Uses int `json:"uses"` // Max number of times this invite can be used MaxUses int `json:"max_uses"` // Duration (in seconds) after which the invite expires MaxAge Seconds `json:"max_age"` // Whether this invite only grants temporary membership Temporary bool `json:"temporary"` // When this invite was created CreatedAt Timestamp `json:"created_at"` }
Extra information about an invite, will extend the invite object.
type InviteUserType ¶
type InviteUserType uint8
const ( InviteNormalUser InviteUserType = iota InviteUserStream )
type Member ¶
type Message ¶
type Message struct { ID Snowflake `json:"id,string"` Type MessageType `json:"type"` ChannelID Snowflake `json:"channel_id,string"` GuildID Snowflake `json:"guild_id,string,omitempty"` // 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. Author User `json:"author"` Content string `json:"content"` Timestamp Timestamp `json:"timestamp,omitempty"` EditedTimestamp Timestamp `json:"edited_timestamp,omitempty"` TTS bool `json:"tts"` Pinned bool `json:"pinned"` // The user objects in the mentions array will only have the partial // member field present in MESSAGE_CREATE and MESSAGE_UPDATE events from // text-based guild channels. Mentions []GuildUser `json:"mentions"` MentionRoleIDs []Snowflake `json:"mention_roles"` MentionEveryone bool `json:"mention_everyone"` // Not all channel mentions in a message will appear in mention_channels. MentionChannels []ChannelMention `json:"mention_channels,omitempty"` Attachments []Attachment `json:"attachments"` Embeds []Embed `json:"embeds"` Reactions []Reaction `json:"reactions,omitempty"` // Used for validating a message was sent Nonce string `json:"nonce,omitempty"` WebhookID Snowflake `json:"webhook_id,string,omitempty"` Activity *MessageActivity `json:"activity,omitempty"` Application *MessageApplication `json:"application,omitempty"` Reference *MessageReference `json:"message_reference,omitempty"` Flags MessageFlags `json:"flags"` }
type MessageActivity ¶
type MessageActivity struct { Type MessageActivityType `json:"type"` // From a Rich Presence event PartyID string `json:"party_id,omitempty"` }
type MessageActivityType ¶
type MessageActivityType uint8
const ( JoinMessage MessageActivityType = iota + 1 SpectateMessage ListenMessage JoinRequestMessage )
type MessageApplication ¶
type MessageFlags ¶
var ( NullMessage MessageFlags = enum.Null CrosspostedMessage MessageFlags = 1 MessageIsCrosspost MessageFlags = 2 SuppressEmbeds MessageFlags = 4 SourceMessageDeleted MessageFlags = 8 UrgentMessage MessageFlags = 16 )
type MessageReference ¶
type MessageType ¶
type MessageType uint8
const ( DefaultMessage MessageType = iota RecipientAddMessage RecipientRemoveMessage CallMessage ChannelNameChangeMessage ChannelIconChangeMessage ChannelPinnedMessage GuildMemberJoinMessage NitroBoostMessage NitroTier1Message NitroTier2Message NitroTier3Message ChannelFollowAddMessage GuildDiscoveryDisqualifiedMessage GuildDiscoveryRequalifiedMessage )
type Milliseconds ¶
type Milliseconds float64
Milliseconds is in float64 because some Discord events return time with a trailing decimal.
func DurationToMilliseconds ¶
func DurationToMilliseconds(dura time.Duration) Milliseconds
func (Milliseconds) Duration ¶
func (ms Milliseconds) Duration() time.Duration
func (Milliseconds) String ¶
func (ms Milliseconds) String() string
type NitroBoost ¶
type NitroBoost uint8
const ( NoNitroLevel NitroBoost = iota NitroLevel1 NitroLevel2 NitroLevel3 )
type Notification ¶
Notification is the default message notification level of a guild.
var ( // NullNotification serialized to JSON null. // This should only be used on nullable fields. NullNotification Notification = enum.Null // AllMessages sends notifications for all messages. AllMessages Notification = 0 // OnlyMentions sends notifications only on mention. OnlyMentions Notification = 1 )
func (Notification) MarshalJSON ¶ added in v0.7.0
func (n Notification) MarshalJSON() ([]byte, error)
func (*Notification) UnmarshalJSON ¶ added in v0.7.0
func (n *Notification) UnmarshalJSON(b []byte) error
type Overwrite ¶
type Overwrite struct { ID Snowflake `json:"id,string,omitempty"` Type OverwriteType `json:"type"` Allow Permissions `json:"allow"` Deny Permissions `json:"deny"` }
type OverwriteType ¶
type OverwriteType string
const ( OverwriteRole OverwriteType = "role" OverwriteMember OverwriteType = "member" )
type Permissions ¶
type Permissions uint64
var ( // Allows creation of instant invites PermissionCreateInstantInvite Permissions = 1 << 0 // Allows kicking members PermissionKickMembers Permissions = 1 << 1 // Allows banning members PermissionBanMembers Permissions = 1 << 2 // Allows all permissions and bypasses channel permission overwrites PermissionAdministrator Permissions = 1 << 3 // Allows management and editing of channels PermissionManageChannels Permissions = 1 << 4 // Allows management and editing of the guild PermissionManageGuild Permissions = 1 << 5 // Allows for the addition of reactions to messages PermissionAddReactions Permissions = 1 << 6 // Allows for viewing of audit logs PermissionViewAuditLog Permissions = 1 << 7 // Allows for using priority speaker in a voice channel PermissionPrioritySpeaker Permissions = 1 << 8 // Allows the user to go live PermissionStream Permissions = 1 << 9 // Allows guild members to view a channel, which includes reading messages // in text channels PermissionViewChannel Permissions = 1 << 10 // Allows for sending messages in a channel PermissionSendMessages Permissions = 1 << 11 // Allows for sending of /tts messages PermissionSendTTSMessages Permissions = 1 << 12 // Allows for deletion of other users messages PermissionManageMessages Permissions = 1 << 13 // Links sent by users with this permission will be auto-embedded PermissionEmbedLinks Permissions = 1 << 14 // Allows for uploading images and files PermissionAttachFiles Permissions = 1 << 15 // Allows for reading of message history PermissionReadMessageHistory Permissions = 1 << 16 // 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 PermissionMentionEveryone Permissions = 1 << 17 // Allows the usage of custom emojis from other servers PermissionUseExternalEmojis Permissions = 1 << 18 // Allows for joining of a voice channel PermissionConnect Permissions = 1 << 20 // Allows for speaking in a voice channel PermissionSpeak Permissions = 1 << 21 // Allows for muting members in a voice channel PermissionMuteMembers Permissions = 1 << 22 // Allows for deafening of members in a voice channel PermissionDeafenMembers Permissions = 1 << 23 // Allows for moving of members between voice channels PermissionMoveMembers Permissions = 1 << 24 // Allows for using voice-activity-detection in a voice channel PermissionUseVAD Permissions = 1 << 25 // Allows for modification of own nickname PermissionChangeNickname Permissions = 1 << 26 // Allows for modification of other users nicknames PermissionManageNicknames Permissions = 1 << 27 // Allows management and editing of roles PermissionManageRoles Permissions = 1 << 28 // Allows management and editing of webhooks PermissionManageWebhooks Permissions = 1 << 29 // Allows management and editing of emojis PermissionManageEmojis Permissions = 1 << 30 PermissionAllText = 0 | PermissionViewChannel | PermissionSendMessages | PermissionSendTTSMessages | PermissionManageMessages | PermissionEmbedLinks | PermissionAttachFiles | PermissionReadMessageHistory | PermissionMentionEveryone | PermissionUseExternalEmojis PermissionAllVoice = 0 | PermissionConnect | PermissionSpeak | PermissionMuteMembers | PermissionDeafenMembers | PermissionMoveMembers | PermissionUseVAD | PermissionPrioritySpeaker PermissionAllChannel = 0 | PermissionAllText | PermissionAllVoice | PermissionCreateInstantInvite | PermissionManageRoles | PermissionManageChannels | PermissionAddReactions | PermissionViewAuditLog PermissionAll = 0 | PermissionAllChannel | PermissionKickMembers | PermissionBanMembers | PermissionManageGuild | PermissionAdministrator | PermissionManageWebhooks | PermissionManageEmojis | PermissionManageNicknames | PermissionChangeNickname )
func CalcOverwrites ¶
func CalcOverwrites(guild Guild, channel Channel, member Member) Permissions
func (Permissions) Add ¶
func (p Permissions) Add(perm Permissions) Permissions
func (Permissions) Has ¶
func (p Permissions) Has(perm Permissions) bool
type Presence ¶
type Presence struct { User User `json:"user"` RoleIDs []Snowflake `json:"roles"` Nick string `json:"nick"` GuildID Snowflake `json:"guild_id"` PremiumSince Timestamp `json:"premium_since,omitempty"` Game *Activity `json:"game"` Activities []Activity `json:"activities"` Status Status `json:"status"` ClientStatus struct { Desktop Status `json:"desktop,omitempty"` Mobile Status `json:"mobile,omitempty"` Web Status `json:"web,omitempty"` } `json:"client_status"` }
type Role ¶
type Role struct { ID Snowflake `json:"id,string"` Name string `json:"name"` Color Color `json:"color"` Hoist bool `json:"hoist"` // if the role is separated Position int `json:"position"` Permissions Permissions `json:"permissions"` Managed bool `json:"managed"` Mentionable bool `json:"mentionable"` }
type Seconds ¶
type Seconds int
func DurationToSeconds ¶
func (Seconds) MarshalJSON ¶ added in v0.7.0
type Snowflake ¶
type Snowflake int64
const NullSnowflake Snowflake = -1
NullSnowflake gets encoded into a null. This is used for optional and nullable snowflake fields.
func NewSnowflake ¶
func ParseSnowflake ¶ added in v0.0.9
func (Snowflake) MarshalJSON ¶
func (*Snowflake) UnmarshalJSON ¶
type Timestamp ¶
Timestamp has a valid zero-value, which can be checked using the Valid() method. This is useful for optional timestamps such as EditedTimestamp.
func NewTimestamp ¶ added in v0.0.13
func NowTimestamp ¶ added in v0.0.13
func NowTimestamp() Timestamp
func (Timestamp) MarshalJSON ¶
MarshalJSON returns null if Timestamp is not valid (zero). It returns the time formatted in RFC3339 otherwise.
func (*Timestamp) UnmarshalJSON ¶
UnmarshalJSON parses a nullable RFC3339 string into time.
type UnixMsTimestamp ¶
type UnixMsTimestamp int64
func TimeToMilliseconds ¶ added in v0.2.0
func TimeToMilliseconds(t time.Time) UnixMsTimestamp
func (UnixMsTimestamp) String ¶
func (t UnixMsTimestamp) String() string
func (UnixMsTimestamp) Time ¶
func (t UnixMsTimestamp) Time() time.Time
type UnixTimestamp ¶
type UnixTimestamp int64
func (UnixTimestamp) String ¶
func (t UnixTimestamp) String() string
func (UnixTimestamp) Time ¶
func (t UnixTimestamp) Time() time.Time
type User ¶
type User struct { ID Snowflake `json:"id,string"` Username string `json:"username"` Discriminator string `json:"discriminator"` Avatar Hash `json:"avatar"` Bot bool `json:"bot,omitempty"` MFA bool `json:"mfa_enabled,omitempty"` DiscordSystem bool `json:"system,omitempty"` EmailVerified bool `json:"verified,omitempty"` Locale string `json:"locale,omitempty"` Email string `json:"email,omitempty"` Flags UserFlags `json:"flags,omitempty"` PublicFlags UserFlags `json:"public_flags,omitempty"` Nitro UserNitro `json:"premium_type,omitempty"` }
func (User) AvatarURL ¶ added in v0.0.11
AvatarURL returns the URL of the Avatar Image. It automatically detects a suitable type.
func (User) AvatarURLWithType ¶ added in v0.8.1
AvatarURLWithType returns the URL of the Avatar Image using the passed type. If the user has no Avatar, his default avatar will be returned. This requires ImageType Auto or PNG
Supported Image Types: PNG, JPEG, WebP, GIF (read above for caveat)
type Verification ¶
Verification is the verification level required for a guild.
var ( // NullVerification serialized to JSON null. // This should only be used on nullable fields. NullVerification Verification = enum.Null // NoVerification required no verification. NoVerification Verification = 0 // LowVerification requires a verified email LowVerification Verification = 1 // MediumVerification requires the user be registered for at least 5 // minutes. MediumVerification Verification = 2 // HighVerification requires the member be in the server for more than 10 // minutes. HighVerification Verification = 3 // VeryHighVerification requires the member to have a verified phone // number. VeryHighVerification Verification = 4 )
func (Verification) MarshalJSON ¶ added in v0.7.0
func (v Verification) MarshalJSON() ([]byte, error)
func (*Verification) UnmarshalJSON ¶ added in v0.7.0
func (v *Verification) UnmarshalJSON(b []byte) error
type VoiceRegion ¶
type VoiceState ¶
type VoiceState struct { // GuildID isn't available from the Guild struct. GuildID Snowflake `json:"guild_id,string"` ChannelID Snowflake `json:"channel_id,string"` UserID Snowflake `json:"user_id,string"` Member *Member `json:"member,omitempty"` SessionID string `json:"session_id"` Deaf bool `json:"deaf"` Mute bool `json:"mute"` SelfDeaf bool `json:"self_deaf"` SelfMute bool `json:"self_mute"` SelfStream bool `json:"self_stream,omitempty"` Suppress bool `json:"suppress"` }
type Webhook ¶
type Webhook struct { ID Snowflake `json:"id"` Type WebhookType `json:"type"` User User `json:"user"` // creator GuildID Snowflake `json:"guild_id,omitempty"` ChannelID Snowflake `json:"channel_id"` Name string `json:"name"` Avatar Hash `json:"avatar"` Token string `json:"token"` // incoming webhooks only }
type WebhookType ¶
type WebhookType uint8
const ( IncomingWebhook WebhookType ChannelFollowerWebhook )