Documentation ¶
Overview ¶
Package discordgo provides Discord binding for Go
Index ¶
- Constants
- Variables
- type APIErrorMessage
- type Ack
- type Application
- type Assets
- type Bucket
- type Channel
- type ChannelCreate
- type ChannelDelete
- type ChannelEdit
- type ChannelPinsUpdate
- type ChannelType
- type ChannelUpdate
- type Connect
- type Disconnect
- type Emoji
- type Event
- type EventHandler
- type EventInterfaceProvider
- type File
- type FriendSourceFlags
- type Game
- type GameType
- type GatewayBotResponse
- type Guild
- type GuildBan
- type GuildBanAdd
- type GuildBanRemove
- type GuildCreate
- type GuildDelete
- type GuildEmbed
- type GuildEmojisUpdate
- type GuildIntegration
- type GuildIntegrationAccount
- type GuildIntegrationsUpdate
- type GuildMemberAdd
- type GuildMemberRemove
- type GuildMemberUpdate
- type GuildMembersChunk
- type GuildParams
- type GuildRole
- type GuildRoleCreate
- type GuildRoleDelete
- type GuildRoleUpdate
- type GuildUpdate
- type ICEServer
- type Invite
- type Member
- type Message
- type MessageAck
- type MessageAttachment
- type MessageCreate
- type MessageDelete
- type MessageDeleteBulk
- type MessageEdit
- type MessageEmbed
- type MessageEmbedAuthor
- type MessageEmbedField
- type MessageEmbedFooter
- type MessageEmbedImage
- type MessageEmbedProvider
- type MessageEmbedThumbnail
- type MessageEmbedVideo
- type MessageReaction
- type MessageReactionAdd
- type MessageReactionRemove
- type MessageReactionRemoveAll
- type MessageReactions
- type MessageSend
- type MessageType
- type MessageUpdate
- type Packet
- type PermissionOverwrite
- type Presence
- type PresenceUpdate
- type PresencesReplace
- type RESTError
- type RateLimit
- type RateLimiter
- type ReadState
- type Ready
- type Relationship
- type RelationshipAdd
- type RelationshipRemove
- type Resumed
- type Role
- type Roles
- type Session
- func (s *Session) AddHandler(handler interface{}) func()
- func (s *Session) AddHandlerOnce(handler interface{}) func()
- func (s *Session) Application(appID string) (st *Application, err error)
- func (s *Session) ApplicationBotCreate(appID string) (st *User, err error)
- func (s *Session) ApplicationCreate(ap *Application) (st *Application, err error)
- func (s *Session) ApplicationDelete(appID string) (err error)
- func (s *Session) ApplicationUpdate(appID string, ap *Application) (st *Application, err error)
- func (s *Session) Applications() (st []*Application, err error)
- func (s *Session) Channel(channelID string) (st *Channel, err error)
- func (s *Session) ChannelDelete(channelID string) (st *Channel, err error)
- func (s *Session) ChannelEdit(channelID, name string) (*Channel, error)
- func (s *Session) ChannelEditComplex(channelID string, data *ChannelEdit) (st *Channel, err error)
- func (s *Session) ChannelFileSend(channelID, name string, r io.Reader) (*Message, error)
- func (s *Session) ChannelFileSendWithMessage(channelID, content string, name string, r io.Reader) (*Message, error)
- func (s *Session) ChannelInviteCreate(channelID string, i Invite) (st *Invite, err error)
- func (s *Session) ChannelInvites(channelID string) (st []*Invite, err error)
- func (s *Session) ChannelMessage(channelID, messageID string) (st *Message, err error)
- func (s *Session) ChannelMessageAck(channelID, messageID, lastToken string) (st *Ack, err error)
- func (s *Session) ChannelMessageDelete(channelID, messageID string) (err error)
- func (s *Session) ChannelMessageEdit(channelID, messageID, content string) (*Message, error)
- func (s *Session) ChannelMessageEditComplex(m *MessageEdit) (st *Message, err error)
- func (s *Session) ChannelMessageEditEmbed(channelID, messageID string, embed *MessageEmbed) (*Message, error)
- func (s *Session) ChannelMessagePin(channelID, messageID string) (err error)
- func (s *Session) ChannelMessageSend(channelID string, content string) (*Message, error)
- func (s *Session) ChannelMessageSendComplex(channelID string, data *MessageSend) (st *Message, err error)
- func (s *Session) ChannelMessageSendEmbed(channelID string, embed *MessageEmbed) (*Message, error)
- func (s *Session) ChannelMessageSendTTS(channelID string, content string) (*Message, error)
- func (s *Session) ChannelMessageUnpin(channelID, messageID string) (err error)
- func (s *Session) ChannelMessages(channelID string, limit int, beforeID, afterID, aroundID string) (st []*Message, err error)
- func (s *Session) ChannelMessagesBulkDelete(channelID string, messages []string) (err error)
- func (s *Session) ChannelMessagesPinned(channelID string) (st []*Message, err error)
- func (s *Session) ChannelPermissionDelete(channelID, targetID string) (err error)
- func (s *Session) ChannelPermissionSet(channelID, targetID, targetType string, allow, deny int) (err error)
- func (s *Session) ChannelTyping(channelID string) (err error)
- func (s *Session) ChannelVoiceJoin(gID, cID string, mute, deaf bool) (voice *VoiceConnection, err error)
- func (s *Session) ChannelWebhooks(channelID string) (st []*Webhook, err error)
- func (s *Session) Close() (err error)
- func (s *Session) Gateway() (gateway string, err error)
- func (s *Session) GatewayBot() (st *GatewayBotResponse, err error)
- func (s *Session) Guild(guildID string) (st *Guild, err error)
- func (s *Session) GuildBanCreate(guildID, userID string, days int) (err error)
- func (s *Session) GuildBanCreateWithReason(guildID, userID, reason string, days int) (err error)
- func (s *Session) GuildBanDelete(guildID, userID string) (err error)
- func (s *Session) GuildBans(guildID string) (st []*GuildBan, err error)
- func (s *Session) GuildChannelCreate(guildID, name, ctype string) (st *Channel, err error)
- func (s *Session) GuildChannels(guildID string) (st []*Channel, err error)
- func (s *Session) GuildChannelsReorder(guildID string, channels []*Channel) (err error)
- func (s *Session) GuildCreate(name string) (st *Guild, err error)
- func (s *Session) GuildDelete(guildID string) (st *Guild, err error)
- func (s *Session) GuildEdit(guildID string, g GuildParams) (st *Guild, err error)
- func (s *Session) GuildEmbed(guildID string) (st *GuildEmbed, err error)
- func (s *Session) GuildEmbedEdit(guildID string, enabled bool, channelID string) (err error)
- func (s *Session) GuildIcon(guildID string) (img image.Image, err error)
- func (s *Session) GuildIntegrationCreate(guildID, integrationType, integrationID string) (err error)
- func (s *Session) GuildIntegrationDelete(guildID, integrationID string) (err error)
- func (s *Session) GuildIntegrationEdit(guildID, integrationID string, expireBehavior, expireGracePeriod int, ...) (err error)
- func (s *Session) GuildIntegrationSync(guildID, integrationID string) (err error)
- func (s *Session) GuildIntegrations(guildID string) (st []*GuildIntegration, err error)
- func (s *Session) GuildInvites(guildID string) (st []*Invite, err error)
- func (s *Session) GuildLeave(guildID string) (err error)
- func (s *Session) GuildMember(guildID, userID string) (st *Member, err error)
- func (s *Session) GuildMemberDelete(guildID, userID string) (err error)
- func (s *Session) GuildMemberDeleteWithReason(guildID, userID, reason string) (err error)
- func (s *Session) GuildMemberEdit(guildID, userID string, roles []string) (err error)
- func (s *Session) GuildMemberMove(guildID, userID, channelID string) (err error)
- func (s *Session) GuildMemberNickname(guildID, userID, nickname string) (err error)
- func (s *Session) GuildMemberRoleAdd(guildID, userID, roleID string) (err error)
- func (s *Session) GuildMemberRoleRemove(guildID, userID, roleID string) (err error)
- func (s *Session) GuildMembers(guildID string, after string, limit int) (st []*Member, err error)
- func (s *Session) GuildPrune(guildID string, days uint32) (count uint32, err error)
- func (s *Session) GuildPruneCount(guildID string, days uint32) (count uint32, err error)
- func (s *Session) GuildRoleCreate(guildID string) (st *Role, err error)
- func (s *Session) GuildRoleDelete(guildID, roleID string) (err error)
- func (s *Session) GuildRoleEdit(guildID, roleID, name string, color int, hoist bool, perm int, mention bool) (st *Role, err error)
- func (s *Session) GuildRoleReorder(guildID string, roles []*Role) (st []*Role, err error)
- func (s *Session) GuildRoles(guildID string) (st []*Role, err error)
- func (s *Session) GuildSplash(guildID string) (img image.Image, err error)
- func (s *Session) GuildWebhooks(guildID string) (st []*Webhook, err error)
- func (s *Session) Invite(inviteID string) (st *Invite, err error)
- func (s *Session) InviteAccept(inviteID string) (st *Invite, err error)
- func (s *Session) InviteDelete(inviteID string) (st *Invite, err error)
- func (s *Session) Login(email, password string) (err error)
- func (s *Session) Logout() (err error)
- func (s *Session) MessageReactionAdd(channelID, messageID, emojiID string) error
- func (s *Session) MessageReactionRemove(channelID, messageID, emojiID, userID string) error
- func (s *Session) MessageReactions(channelID, messageID, emojiID string, limit int, beforeID, afterID string) (st []*User, err error)
- func (s *Session) MessageReactionsRemoveAll(channelID, messageID string) error
- func (s *Session) Open() error
- func (s *Session) Register(username string) (token string, err error)
- func (s *Session) RelationshipDelete(userID string) (err error)
- func (s *Session) RelationshipFriendRequestAccept(userID string) (err error)
- func (s *Session) RelationshipFriendRequestSend(userID string) (err error)
- func (s *Session) RelationshipUserBlock(userID string) (err error)
- func (s *Session) RelationshipsGet() (r []*Relationship, err error)
- func (s *Session) RelationshipsMutualGet(userID string) (mf []*User, err error)
- func (s *Session) Request(method, urlStr string, data interface{}) (response []byte, err error)
- func (s *Session) RequestGuildMembers(guildID, query string, limit int) (err error)
- func (s *Session) RequestWithBucketID(method, urlStr string, data interface{}, bucketID string) (response []byte, err error)
- func (s *Session) RequestWithLockedBucket(method, urlStr, contentType string, b []byte, bucket *Bucket, sequence int) (response []byte, err error)
- func (s *Session) UpdateStatus(idle int, game string) (err error)
- func (s *Session) UpdateStatusComplex(usd UpdateStatusData) (err error)
- func (s *Session) UpdateStreamingStatus(idle int, game string, url string) (err error)
- func (s *Session) User(userID string) (st *User, err error)
- func (s *Session) UserAvatar(userID string) (img image.Image, err error)
- func (s *Session) UserAvatarDecode(u *User) (img image.Image, err error)
- func (s *Session) UserChannelCreate(recipientID string) (st *Channel, err error)
- func (s *Session) UserChannelPermissions(userID, channelID string) (apermissions int, err error)
- func (s *Session) UserChannels() (st []*Channel, err error)
- func (s *Session) UserGuildSettingsEdit(guildID string, settings *UserGuildSettingsEdit) (st *UserGuildSettings, err error)
- func (s *Session) UserGuilds(limit int, beforeID, afterID string) (st []*UserGuild, err error)
- func (s *Session) UserNoteSet(userID string, message string) (err error)
- func (s *Session) UserSettings() (st *Settings, err error)
- func (s *Session) UserUpdate(email, password, username, avatar, newPassword string) (st *User, err error)
- func (s *Session) UserUpdateStatus(status Status) (st *Settings, err error)
- func (s *Session) VoiceICE() (st *VoiceICE, err error)
- func (s *Session) VoiceRegions() (st []*VoiceRegion, err error)
- func (s *Session) Webhook(webhookID string) (st *Webhook, err error)
- func (s *Session) WebhookCreate(channelID, name, avatar string) (st *Webhook, err error)
- func (s *Session) WebhookDelete(webhookID string) (err error)
- func (s *Session) WebhookDeleteWithToken(webhookID, token string) (st *Webhook, err error)
- func (s *Session) WebhookEdit(webhookID, name, avatar string) (st *Role, err error)
- func (s *Session) WebhookEditWithToken(webhookID, token, name, avatar string) (st *Role, err error)
- func (s *Session) WebhookExecute(webhookID, token string, wait bool, data *WebhookParams) (err error)
- func (s *Session) WebhookWithToken(webhookID, token string) (st *Webhook, err error)
- type Settings
- type State
- func (s *State) Channel(channelID string) (*Channel, error)
- func (s *State) ChannelAdd(channel *Channel) error
- func (s *State) ChannelRemove(channel *Channel) error
- func (s *State) Emoji(guildID, emojiID string) (*Emoji, error)
- func (s *State) EmojiAdd(guildID string, emoji *Emoji) error
- func (s *State) EmojisAdd(guildID string, emojis []*Emoji) error
- func (s *State) Guild(guildID string) (*Guild, error)
- func (s *State) GuildAdd(guild *Guild) error
- func (s *State) GuildChannel(guildID, channelID string) (*Channel, error)
- func (s *State) GuildRemove(guild *Guild) error
- func (s *State) Member(guildID, userID string) (*Member, error)
- func (s *State) MemberAdd(member *Member) error
- func (s *State) MemberRemove(member *Member) error
- func (s *State) Message(channelID, messageID string) (*Message, error)
- func (s *State) MessageAdd(message *Message) error
- func (s *State) MessageRemove(message *Message) error
- func (s *State) OnInterface(se *Session, i interface{}) (err error)
- func (s *State) Presence(guildID, userID string) (*Presence, error)
- func (s *State) PresenceAdd(guildID string, presence *Presence) error
- func (s *State) PresenceRemove(guildID string, presence *Presence) error
- func (s *State) PrivateChannel(channelID string) (*Channel, error)
- func (s *State) Role(guildID, roleID string) (*Role, error)
- func (s *State) RoleAdd(guildID string, role *Role) error
- func (s *State) RoleRemove(guildID, roleID string) error
- func (s *State) UserChannelPermissions(userID, channelID string) (apermissions int, err error)
- func (s *State) UserColor(userID, channelID string) int
- type Status
- type TimeStamps
- type Timestamp
- type TooManyRequests
- type TypingStart
- type UpdateStatusData
- type User
- type UserGuild
- type UserGuildSettings
- type UserGuildSettingsChannelOverride
- type UserGuildSettingsEdit
- type UserGuildSettingsUpdate
- type UserNoteUpdate
- type UserSettingsUpdate
- type UserUpdate
- type VerificationLevel
- type VoiceConnection
- type VoiceICE
- type VoiceRegion
- type VoiceServerUpdate
- type VoiceSpeakingUpdate
- type VoiceSpeakingUpdateHandler
- type VoiceState
- type VoiceStateUpdate
- type Webhook
- type WebhookParams
Examples ¶
Constants ¶
const ( // LogError level is used for critical errors that could lead to data loss // or panic that would not be returned to a calling function. LogError int = iota // LogWarning level is used for very abnormal events and errors that are // also returned to a calling function. LogWarning // LogInformational level is used for normal non-error activity LogInformational // LogDebug level is for very detailed non-error activity. This is // very spammy and will impact performance. LogDebug )
const ( PermissionReadMessages = 1 << (iota + 10) PermissionSendMessages PermissionSendTTSMessages PermissionManageMessages PermissionEmbedLinks PermissionAttachFiles PermissionReadMessageHistory PermissionMentionEveryone PermissionUseExternalEmojis )
Constants for the different bit offsets of text channel permissions
const ( PermissionVoiceConnect = 1 << (iota + 20) PermissionVoiceSpeak PermissionVoiceMuteMembers PermissionVoiceDeafenMembers PermissionVoiceMoveMembers PermissionVoiceUseVAD )
Constants for the different bit offsets of voice permissions
const ( PermissionChangeNickname = 1 << (iota + 26) PermissionManageNicknames PermissionManageRoles PermissionManageWebhooks PermissionManageEmojis )
Constants for general management.
const ( PermissionCreateInstantInvite = 1 << iota PermissionKickMembers PermissionBanMembers PermissionAdministrator PermissionManageChannels PermissionManageServer PermissionAddReactions PermissionViewAuditLogs PermissionAllText = PermissionReadMessages | PermissionSendMessages | PermissionSendTTSMessages | PermissionManageMessages | PermissionEmbedLinks | PermissionAttachFiles | PermissionReadMessageHistory | PermissionMentionEveryone PermissionAllVoice = PermissionVoiceConnect | PermissionVoiceSpeak | PermissionVoiceMuteMembers | PermissionVoiceDeafenMembers | PermissionVoiceMoveMembers | PermissionVoiceUseVAD PermissionAllChannel = PermissionAllText | PermissionAllVoice | PermissionCreateInstantInvite | PermissionManageRoles | PermissionManageChannels | PermissionAddReactions | PermissionViewAuditLogs PermissionAll = PermissionAllChannel | PermissionKickMembers | PermissionBanMembers | PermissionManageServer | PermissionAdministrator )
Constants for the different bit offsets of general permissions
const ( ErrCodeUnknownAccount = 10001 ErrCodeUnknownApplication = 10002 ErrCodeUnknownChannel = 10003 ErrCodeUnknownGuild = 10004 ErrCodeUnknownIntegration = 10005 ErrCodeUnknownInvite = 10006 ErrCodeUnknownMember = 10007 ErrCodeUnknownMessage = 10008 ErrCodeUnknownOverwrite = 10009 ErrCodeUnknownProvider = 10010 ErrCodeUnknownRole = 10011 ErrCodeUnknownToken = 10012 ErrCodeUnknownUser = 10013 ErrCodeUnknownEmoji = 10014 ErrCodeBotsCannotUseEndpoint = 20001 ErrCodeOnlyBotsCanUseEndpoint = 20002 ErrCodeMaximumGuildsReached = 30001 ErrCodeMaximumFriendsReached = 30002 ErrCodeMaximumPinsReached = 30003 ErrCodeMaximumGuildRolesReached = 30005 ErrCodeTooManyReactions = 30010 ErrCodeMissingAccess = 50001 ErrCodeInvalidAccountType = 50002 ErrCodeCannotExecuteActionOnDMChannel = 50003 ErrCodeEmbedCisabled = 50004 ErrCodeCannotEditFromAnotherUser = 50005 ErrCodeCannotSendEmptyMessage = 50006 ErrCodeCannotSendMessagesToThisUser = 50007 ErrCodeCannotSendMessagesInVoiceChannel = 50008 ErrCodeChannelVerificationLevelTooHigh = 50009 ErrCodeOAuth2ApplicationDoesNotHaveBot = 50010 ErrCodeOAuth2ApplicationLimitReached = 50011 ErrCodeInvalidOAuthState = 50012 ErrCodeMissingPermissions = 50013 ErrCodeInvalidAuthenticationToken = 50014 ErrCodeNoteTooLong = 50015 ErrCodeTooFewOrTooManyMessagesToDelete = 50016 ErrCodeCanOnlyPinMessageToOriginatingChannel = 50019 ErrCodeCannotExecuteActionOnSystemMessage = 50021 ErrCodeMessageProvidedTooOldForBulkDelete = 50034 ErrCodeInvalidFormBody = 50035 ErrCodeInviteAcceptedToGuildApplicationsBotNotIn = 50036 ErrCodeReactionBlocked = 90001 )
Block contains Discord JSON Error Response codes
const FailedHeartbeatAcks time.Duration = 5 * time.Millisecond
FailedHeartbeatAcks is the Number of heartbeat intervals to wait until forcing a connection restart.
const VERSION = "0.18.0"
VERSION of DiscordGo, follows Semantic Versioning. (http://semver.org/)
Variables ¶
var ( EndpointStatus = "https://status.discordapp.com/api/v2/" EndpointSm = EndpointStatus + "scheduled-maintenances/" EndpointSmActive = EndpointSm + "active.json" EndpointSmUpcoming = EndpointSm + "upcoming.json" EndpointDiscord = "https://discordapp.com/" EndpointAPI = EndpointDiscord + "api/v" + APIVersion + "/" EndpointGuilds = EndpointAPI + "guilds/" EndpointChannels = EndpointAPI + "channels/" EndpointUsers = EndpointAPI + "users/" EndpointGateway = EndpointAPI + "gateway" EndpointGatewayBot = EndpointGateway + "/bot" EndpointWebhooks = EndpointAPI + "webhooks/" EndpointCDN = "https://cdn.discordapp.com/" EndpointCDNAttachments = EndpointCDN + "attachments/" EndpointCDNAvatars = EndpointCDN + "avatars/" EndpointCDNIcons = EndpointCDN + "icons/" EndpointCDNSplashes = EndpointCDN + "splashes/" EndpointCDNChannelIcons = EndpointCDN + "channel-icons/" EndpointAuth = EndpointAPI + "auth/" EndpointLogin = EndpointAuth + "login" EndpointLogout = EndpointAuth + "logout" EndpointVerify = EndpointAuth + "verify" EndpointVerifyResend = EndpointAuth + "verify/resend" EndpointForgotPassword = EndpointAuth + "forgot" EndpointResetPassword = EndpointAuth + "reset" EndpointRegister = EndpointAuth + "register" EndpointVoice = EndpointAPI + "/voice/" EndpointVoiceRegions = EndpointVoice + "regions" EndpointVoiceIce = EndpointVoice + "ice" EndpointTutorial = EndpointAPI + "tutorial/" EndpointTutorialIndicators = EndpointTutorial + "indicators" EndpointTrack = EndpointAPI + "track" EndpointSso = EndpointAPI + "sso" EndpointReport = EndpointAPI + "report" EndpointIntegrations = EndpointAPI + "integrations" EndpointUser = func(uID string) string { return EndpointUsers + uID } EndpointUserAvatar = func(uID, aID string) string { return EndpointCDNAvatars + uID + "/" + aID + ".png" } EndpointUserAvatarAnimated = func(uID, aID string) string { return EndpointCDNAvatars + uID + "/" + aID + ".gif" } EndpointUserSettings = func(uID string) string { return EndpointUsers + uID + "/settings" } EndpointUserGuilds = func(uID string) string { return EndpointUsers + uID + "/guilds" } EndpointUserGuild = func(uID, gID string) string { return EndpointUsers + uID + "/guilds/" + gID } EndpointUserGuildSettings = func(uID, gID string) string { return EndpointUsers + uID + "/guilds/" + gID + "/settings" } EndpointUserChannels = func(uID string) string { return EndpointUsers + uID + "/channels" } EndpointUserDevices = func(uID string) string { return EndpointUsers + uID + "/devices" } EndpointUserConnections = func(uID string) string { return EndpointUsers + uID + "/connections" } EndpointUserNotes = func(uID string) string { return EndpointUsers + "@me/notes/" + uID } EndpointGuild = func(gID string) string { return EndpointGuilds + gID } EndpointGuildChannels = func(gID string) string { return EndpointGuilds + gID + "/channels" } EndpointGuildMembers = func(gID string) string { return EndpointGuilds + gID + "/members" } EndpointGuildMember = func(gID, uID string) string { return EndpointGuilds + gID + "/members/" + uID } EndpointGuildMemberRole = func(gID, uID, rID string) string { return EndpointGuilds + gID + "/members/" + uID + "/roles/" + rID } EndpointGuildBans = func(gID string) string { return EndpointGuilds + gID + "/bans" } EndpointGuildBan = func(gID, uID string) string { return EndpointGuilds + gID + "/bans/" + uID } EndpointGuildIntegrations = func(gID string) string { return EndpointGuilds + gID + "/integrations" } EndpointGuildIntegration = func(gID, iID string) string { return EndpointGuilds + gID + "/integrations/" + iID } EndpointGuildIntegrationSync = func(gID, iID string) string { return EndpointGuilds + gID + "/integrations/" + iID + "/sync" } EndpointGuildRoles = func(gID string) string { return EndpointGuilds + gID + "/roles" } EndpointGuildRole = func(gID, rID string) string { return EndpointGuilds + gID + "/roles/" + rID } EndpointGuildInvites = func(gID string) string { return EndpointGuilds + gID + "/invites" } EndpointGuildEmbed = func(gID string) string { return EndpointGuilds + gID + "/embed" } EndpointGuildPrune = func(gID string) string { return EndpointGuilds + gID + "/prune" } EndpointGuildIcon = func(gID, hash string) string { return EndpointCDNIcons + gID + "/" + hash + ".png" } EndpointGuildSplash = func(gID, hash string) string { return EndpointCDNSplashes + gID + "/" + hash + ".png" } EndpointGuildWebhooks = func(gID string) string { return EndpointGuilds + gID + "/webhooks" } EndpointChannel = func(cID string) string { return EndpointChannels + cID } EndpointChannelPermissions = func(cID string) string { return EndpointChannels + cID + "/permissions" } EndpointChannelPermission = func(cID, tID string) string { return EndpointChannels + cID + "/permissions/" + tID } EndpointChannelInvites = func(cID string) string { return EndpointChannels + cID + "/invites" } EndpointChannelTyping = func(cID string) string { return EndpointChannels + cID + "/typing" } EndpointChannelMessages = func(cID string) string { return EndpointChannels + cID + "/messages" } EndpointChannelMessage = func(cID, mID string) string { return EndpointChannels + cID + "/messages/" + mID } EndpointChannelMessageAck = func(cID, mID string) string { return EndpointChannels + cID + "/messages/" + mID + "/ack" } EndpointChannelMessagesBulkDelete = func(cID string) string { return EndpointChannel(cID) + "/messages/bulk-delete" } EndpointChannelMessagesPins = func(cID string) string { return EndpointChannel(cID) + "/pins" } EndpointChannelMessagePin = func(cID, mID string) string { return EndpointChannel(cID) + "/pins/" + mID } EndpointGroupIcon = func(cID, hash string) string { return EndpointCDNChannelIcons + cID + "/" + hash + ".png" } EndpointChannelWebhooks = func(cID string) string { return EndpointChannel(cID) + "/webhooks" } EndpointWebhook = func(wID string) string { return EndpointWebhooks + wID } EndpointWebhookToken = func(wID, token string) string { return EndpointWebhooks + wID + "/" + token } EndpointMessageReactionsAll = func(cID, mID string) string { return EndpointChannelMessage(cID, mID) + "/reactions" } EndpointMessageReactions = func(cID, mID, eID string) string { return EndpointChannelMessage(cID, mID) + "/reactions/" + eID } EndpointMessageReaction = func(cID, mID, eID, uID string) string { return EndpointMessageReactions(cID, mID, eID) + "/" + uID } EndpointRelationships = func() string { return EndpointUsers + "@me" + "/relationships" } EndpointRelationship = func(uID string) string { return EndpointRelationships() + "/" + uID } EndpointRelationshipsMutual = func(uID string) string { return EndpointUsers + uID + "/relationships" } EndpointGuildCreate = EndpointAPI + "guilds" EndpointInvite = func(iID string) string { return EndpointAPI + "invite/" + iID } EndpointIntegrationsJoin = func(iID string) string { return EndpointAPI + "integrations/" + iID + "/join" } EndpointEmoji = func(eID string) string { return EndpointAPI + "emojis/" + eID + ".png" } EndpointOauth2 = EndpointAPI + "oauth2/" EndpointApplications = EndpointOauth2 + "applications" EndpointApplication = func(aID string) string { return EndpointApplications + "/" + aID } EndpointApplicationsBot = func(aID string) string { return EndpointApplications + "/" + aID + "/bot" } )
Known Discord API Endpoints.
var ( ErrJSONUnmarshal = errors.New("json unmarshal") ErrStatusOffline = errors.New("You can't set your Status to offline") ErrVerificationLevelBounds = errors.New("VerificationLevel out of bounds, should be between 0 and 3") ErrPruneDaysBounds = errors.New("the number of days should be more than or equal to 1") ErrGuildNoIcon = errors.New("guild does not have an icon set") ErrGuildNoSplash = errors.New("guild does not have a splash set") )
All error constants
var APIVersion = "6"
APIVersion is the Discord API version used for the REST and Websocket API.
var ErrMFA = errors.New("account has 2FA enabled")
ErrMFA will be risen by New when the user has 2FA.
var ErrNilState = errors.New("state not instantiated, please use discordgo.New() or assign Session.State")
ErrNilState is returned when the state is nil.
var ErrStateNotFound = errors.New("state cache not found")
ErrStateNotFound is returned when the state cache requested is not found
var ErrWSAlreadyOpen = errors.New("web socket already opened")
ErrWSAlreadyOpen is thrown when you attempt to open a websocket that already is open.
var ErrWSNotFound = errors.New("no websocket connection exists")
ErrWSNotFound is thrown when you attempt to use a websocket that doesn't exist
var ErrWSShardBounds = errors.New("ShardID must be less than ShardCount")
ErrWSShardBounds is thrown when you try to use a shard ID that is less than the total shard count
var Logger func(msgL, caller int, format string, a ...interface{})
Logger can be used to replace the standard logging for discordgo
Functions ¶
This section is empty.
Types ¶
type APIErrorMessage ¶ added in v0.15.0
An APIErrorMessage is an api error message returned from discord
type Ack ¶ added in v0.15.0
type Ack struct {
Token string `json:"token"`
}
An Ack is used to ack messages
type Application ¶ added in v0.12.0
type Application struct { ID string `json:"id,omitempty"` Name string `json:"name"` Description string `json:"description,omitempty"` Icon string `json:"icon,omitempty"` Secret string `json:"secret,omitempty"` RedirectURIs *[]string `json:"redirect_uris,omitempty"` BotRequireCodeGrant bool `json:"bot_require_code_grant,omitempty"` BotPublic bool `json:"bot_public,omitempty"` RPCApplicationState int `json:"rpc_application_state,omitempty"` Flags int `json:"flags,omitempty"` Owner *User `json:"owner"` Bot *User `json:"bot"` }
An Application struct stores values for a Discord OAuth2 Application
Example ¶
package main import ( "log" "os" "github.com/bwmarrin/discordgo" ) func main() { // Authentication Token pulled from environment variable DG_TOKEN Token := os.Getenv("DGU_TOKEN") if Token == "" { return } // Create a new Discordgo session dg, err := discordgo.New(Token) if err != nil { log.Println(err) return } // Create an new Application ap := &discordgo.Application{} ap.Name = "TestApp" ap.Description = "TestDesc" ap, err = dg.ApplicationCreate(ap) log.Printf("ApplicationCreate: err: %+v, app: %+v\n", err, ap) // Get a specific Application by it's ID ap, err = dg.Application(ap.ID) log.Printf("Application: err: %+v, app: %+v\n", err, ap) // Update an existing Application with new values ap.Description = "Whooooa" ap, err = dg.ApplicationUpdate(ap.ID, ap) log.Printf("ApplicationUpdate: err: %+v, app: %+v\n", err, ap) // create a new bot account for this application bot, err := dg.ApplicationBotCreate(ap.ID) log.Printf("BotCreate: err: %+v, bot: %+v\n", err, bot) // Get a list of all applications for the authenticated user apps, err := dg.Applications() log.Printf("Applications: err: %+v, apps : %+v\n", err, apps) for k, v := range apps { log.Printf("Applications: %d : %+v\n", k, v) } // Delete the application we created. err = dg.ApplicationDelete(ap.ID) log.Printf("Delete: err: %+v\n", err) return }
Output:
type Assets ¶ added in v0.18.0
type Assets struct { LargeImageID string `json:"large_image,omitempty"` SmallImageID string `json:"small_image,omitempty"` LargeText string `json:"large_text,omitempty"` SmallText string `json:"small_text,omitempty"` }
An Assets struct contains assets and labels used in the rich presence "playing .." Game
type Bucket ¶ added in v0.15.0
type Bucket struct { sync.Mutex Key string Remaining int Userdata interface{} // contains filtered or unexported fields }
Bucket represents a ratelimit bucket, each bucket gets ratelimited individually (-global ratelimits)
type Channel ¶
type Channel struct { ID string `json:"id"` GuildID string `json:"guild_id"` Name string `json:"name"` Topic string `json:"topic"` Type ChannelType `json:"type"` LastMessageID string `json:"last_message_id"` NSFW bool `json:"nsfw"` Position int `json:"position"` Bitrate int `json:"bitrate"` Recipients []*User `json:"recipients"` Messages []*Message `json:"-"` PermissionOverwrites []*PermissionOverwrite `json:"permission_overwrites"` ParentID string `json:"parent_id"` }
A Channel holds all data related to an individual Discord channel.
type ChannelCreate ¶ added in v0.11.0
type ChannelCreate struct {
*Channel
}
ChannelCreate is the data for a ChannelCreate event.
type ChannelDelete ¶ added in v0.11.0
type ChannelDelete struct {
*Channel
}
ChannelDelete is the data for a ChannelDelete event.
type ChannelEdit ¶ added in v0.18.0
type ChannelEdit struct { Name string `json:"name,omitempty"` Topic string `json:"topic,omitempty"` NSFW bool `json:"nsfw,omitempty"` Position int `json:"position"` Bitrate int `json:"bitrate,omitempty"` UserLimit int `json:"user_limit,omitempty"` PermissionOverwrites []*PermissionOverwrite `json:"permission_overwrites,omitempty"` ParentID string `json:"parent_id,omitempty"` }
A ChannelEdit holds Channel Feild data for a channel edit.
type ChannelPinsUpdate ¶ added in v0.15.0
type ChannelPinsUpdate struct { LastPinTimestamp string `json:"last_pin_timestamp"` ChannelID string `json:"channel_id"` }
ChannelPinsUpdate stores data for a ChannelPinsUpdate event.
type ChannelType ¶ added in v0.17.0
type ChannelType int
ChannelType is the type of a Channel
const ( ChannelTypeGuildText ChannelType = iota ChannelTypeDM ChannelTypeGuildVoice ChannelTypeGroupDM ChannelTypeGuildCategory )
Block contains known ChannelType values
type ChannelUpdate ¶ added in v0.11.0
type ChannelUpdate struct {
*Channel
}
ChannelUpdate is the data for a ChannelUpdate event.
type Connect ¶ added in v0.11.0
type Connect struct{}
Connect is the data for a Connect event. This is a sythetic event and is not dispatched by Discord.
type Disconnect ¶ added in v0.11.0
type Disconnect struct{}
Disconnect is the data for a Disconnect event. This is a sythetic event and is not dispatched by Discord.
type Emoji ¶ added in v0.8.0
type Emoji struct { ID string `json:"id"` Name string `json:"name"` Roles []string `json:"roles"` Managed bool `json:"managed"` RequireColons bool `json:"require_colons"` Animated bool `json:"animated"` }
Emoji struct holds data related to Emoji's
type Event ¶
type Event struct { Operation int `json:"op"` Sequence int64 `json:"s"` Type string `json:"t"` RawData json.RawMessage `json:"d"` // Struct contains one of the other types in this file. Struct interface{} `json:"-"` }
Event provides a basic initial struct for all websocket events.
type EventHandler ¶ added in v0.15.0
type EventHandler interface { // Type returns the type of event this handler belongs to. Type() string // Handle is called whenever an event of Type() happens. // It is the receivers responsibility to type assert that the interface // is the expected struct. Handle(*Session, interface{}) }
EventHandler is an interface for Discord events.
type EventInterfaceProvider ¶ added in v0.15.0
type EventInterfaceProvider interface { // Type is the type of event this handler belongs to. Type() string // New returns a new instance of the struct this event handler handles. // This is called once per event. // The struct is provided to all handlers of the same Type(). New() interface{} }
EventInterfaceProvider is an interface for providing empty interfaces for Discord events.
type FriendSourceFlags ¶ added in v0.13.0
type FriendSourceFlags struct { All bool `json:"all"` MutualGuilds bool `json:"mutual_guilds"` MutualFriends bool `json:"mutual_friends"` }
FriendSourceFlags stores ... TODO :)
type Game ¶ added in v0.7.0
type Game struct { Name string `json:"name"` Type GameType `json:"type"` URL string `json:"url,omitempty"` Details string `json:"details,omitempty"` State string `json:"state,omitempty"` TimeStamps TimeStamps `json:"timestamps,omitempty"` Assets Assets `json:"assets,omitempty"` ApplicationID string `json:"application_id,omitempty"` Instance int8 `json:"instance,omitempty"` }
A Game struct holds the name of the "playing .." game for a user
type GameType ¶ added in v0.18.0
type GameType int
GameType is the type of "game" (see GameType* consts) in the Game struct
type GatewayBotResponse ¶ added in v0.17.0
GatewayBotResponse stores the data for the gateway/bot response
type Guild ¶
type Guild struct { ID string `json:"id"` Name string `json:"name"` Icon string `json:"icon"` Region string `json:"region"` AfkChannelID string `json:"afk_channel_id"` EmbedChannelID string `json:"embed_channel_id"` OwnerID string `json:"owner_id"` JoinedAt Timestamp `json:"joined_at"` Splash string `json:"splash"` AfkTimeout int `json:"afk_timeout"` MemberCount int `json:"member_count"` VerificationLevel VerificationLevel `json:"verification_level"` EmbedEnabled bool `json:"embed_enabled"` Large bool `json:"large"` // ?? DefaultMessageNotifications int `json:"default_message_notifications"` Roles []*Role `json:"roles"` Emojis []*Emoji `json:"emojis"` Members []*Member `json:"members"` Presences []*Presence `json:"presences"` Channels []*Channel `json:"channels"` VoiceStates []*VoiceState `json:"voice_states"` }
A Guild holds all data related to a specific Discord Guild. Guilds are also sometimes referred to as Servers in the Discord client.
type GuildBanAdd ¶ added in v0.11.0
GuildBanAdd is the data for a GuildBanAdd event.
type GuildBanRemove ¶ added in v0.11.0
GuildBanRemove is the data for a GuildBanRemove event.
type GuildCreate ¶ added in v0.11.0
type GuildCreate struct {
*Guild
}
GuildCreate is the data for a GuildCreate event.
type GuildDelete ¶ added in v0.11.0
type GuildDelete struct {
*Guild
}
GuildDelete is the data for a GuildDelete event.
type GuildEmbed ¶ added in v0.13.0
A GuildEmbed stores data for a guild embed.
type GuildEmojisUpdate ¶ added in v0.8.0
A GuildEmojisUpdate is the data for a guild emoji update event.
type GuildIntegration ¶ added in v0.13.0
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"` ExpireBehavior int `json:"expire_behavior"` ExpireGracePeriod int `json:"expire_grace_period"` User *User `json:"user"` Account *GuildIntegrationAccount `json:"account"` SyncedAt int `json:"synced_at"` }
A GuildIntegration stores data for a guild integration.
type GuildIntegrationAccount ¶ added in v0.13.0
A GuildIntegrationAccount stores data for a guild integration account.
type GuildIntegrationsUpdate ¶
type GuildIntegrationsUpdate struct {
GuildID string `json:"guild_id"`
}
GuildIntegrationsUpdate is the data for a GuildIntegrationsUpdate event.
type GuildMemberAdd ¶ added in v0.11.0
type GuildMemberAdd struct {
*Member
}
GuildMemberAdd is the data for a GuildMemberAdd event.
type GuildMemberRemove ¶ added in v0.11.0
type GuildMemberRemove struct {
*Member
}
GuildMemberRemove is the data for a GuildMemberRemove event.
type GuildMemberUpdate ¶ added in v0.11.0
type GuildMemberUpdate struct {
*Member
}
GuildMemberUpdate is the data for a GuildMemberUpdate event.
type GuildMembersChunk ¶ added in v0.15.0
type GuildMembersChunk struct { GuildID string `json:"guild_id"` Members []*Member `json:"members"` }
A GuildMembersChunk is the data for a GuildMembersChunk event.
type GuildParams ¶ added in v0.12.0
type GuildParams struct { Name string `json:"name,omitempty"` Region string `json:"region,omitempty"` VerificationLevel *VerificationLevel `json:"verification_level,omitempty"` DefaultMessageNotifications int `json:"default_message_notifications,omitempty"` // TODO: Separate type? AfkChannelID string `json:"afk_channel_id,omitempty"` AfkTimeout int `json:"afk_timeout,omitempty"` Icon string `json:"icon,omitempty"` OwnerID string `json:"owner_id,omitempty"` Splash string `json:"splash,omitempty"` }
A GuildParams stores all the data needed to update discord guild settings
type GuildRoleCreate ¶ added in v0.11.0
type GuildRoleCreate struct {
*GuildRole
}
GuildRoleCreate is the data for a GuildRoleCreate event.
type GuildRoleDelete ¶
A GuildRoleDelete is the data for a GuildRoleDelete event.
type GuildRoleUpdate ¶ added in v0.11.0
type GuildRoleUpdate struct {
*GuildRole
}
GuildRoleUpdate is the data for a GuildRoleUpdate event.
type GuildUpdate ¶ added in v0.11.0
type GuildUpdate struct {
*Guild
}
GuildUpdate is the data for a GuildUpdate event.
type ICEServer ¶
type ICEServer struct { URL string `json:"url"` Username string `json:"username"` Credential string `json:"credential"` }
A ICEServer stores data for a specific voice ICE server.
type Invite ¶
type Invite struct { Guild *Guild `json:"guild"` Channel *Channel `json:"channel"` Inviter *User `json:"inviter"` Code string `json:"code"` CreatedAt Timestamp `json:"created_at"` MaxAge int `json:"max_age"` Uses int `json:"uses"` MaxUses int `json:"max_uses"` Revoked bool `json:"revoked"` Temporary bool `json:"temporary"` Unique bool `json:"unique"` }
A Invite stores all data related to a specific Discord Guild or Channel invite.
type Member ¶
type Member struct { GuildID string `json:"guild_id"` JoinedAt string `json:"joined_at"` Nick string `json:"nick"` Deaf bool `json:"deaf"` Mute bool `json:"mute"` User *User `json:"user"` Roles []string `json:"roles"` }
A Member stores user information for Guild members.
type Message ¶
type Message struct { ID string `json:"id"` ChannelID string `json:"channel_id"` Content string `json:"content"` Timestamp Timestamp `json:"timestamp"` EditedTimestamp Timestamp `json:"edited_timestamp"` MentionRoles []string `json:"mention_roles"` Tts bool `json:"tts"` MentionEveryone bool `json:"mention_everyone"` Author *User `json:"author"` Attachments []*MessageAttachment `json:"attachments"` Embeds []*MessageEmbed `json:"embeds"` Mentions []*User `json:"mentions"` Reactions []*MessageReactions `json:"reactions"` Type MessageType `json:"type"` }
A Message stores all data related to a specific Discord message.
func (*Message) ContentWithMentionsReplaced ¶ added in v0.8.0
ContentWithMentionsReplaced will replace all @<id> mentions with the username of the mention.
type MessageAck ¶
type MessageAck struct { MessageID string `json:"message_id"` ChannelID string `json:"channel_id"` }
MessageAck is the data for a MessageAck event.
type MessageAttachment ¶ added in v0.13.0
type MessageAttachment struct { ID string `json:"id"` URL string `json:"url"` ProxyURL string `json:"proxy_url"` Filename string `json:"filename"` Width int `json:"width"` Height int `json:"height"` Size int `json:"size"` }
A MessageAttachment stores data for message attachments.
type MessageCreate ¶ added in v0.11.0
type MessageCreate struct {
*Message
}
MessageCreate is the data for a MessageCreate event.
type MessageDelete ¶
type MessageDelete struct {
*Message
}
MessageDelete is the data for a MessageDelete event.
type MessageDeleteBulk ¶ added in v0.16.0
type MessageDeleteBulk struct { Messages []string `json:"ids"` ChannelID string `json:"channel_id"` }
MessageDeleteBulk is the data for a MessageDeleteBulk event
type MessageEdit ¶ added in v0.16.0
type MessageEdit struct { Content *string `json:"content,omitempty"` Embed *MessageEmbed `json:"embed,omitempty"` ID string Channel string }
MessageEdit is used to chain parameters via ChannelMessageEditComplex, which is also where you should get the instance from.
func NewMessageEdit ¶ added in v0.16.0
func NewMessageEdit(channelID string, messageID string) *MessageEdit
NewMessageEdit returns a MessageEdit struct, initialized with the Channel and ID.
func (*MessageEdit) SetContent ¶ added in v0.16.0
func (m *MessageEdit) SetContent(str string) *MessageEdit
SetContent is the same as setting the variable Content, except it doesn't take a pointer.
func (*MessageEdit) SetEmbed ¶ added in v0.16.0
func (m *MessageEdit) SetEmbed(embed *MessageEmbed) *MessageEdit
SetEmbed is a convenience function for setting the embed, so you can chain commands.
type MessageEmbed ¶ added in v0.13.0
type MessageEmbed struct { URL string `json:"url,omitempty"` Type string `json:"type,omitempty"` Title string `json:"title,omitempty"` Description string `json:"description,omitempty"` Timestamp string `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"` }
An MessageEmbed stores data for message embeds.
type MessageEmbedAuthor ¶ added in v0.15.0
type MessageEmbedAuthor struct { URL string `json:"url,omitempty"` Name string `json:"name,omitempty"` IconURL string `json:"icon_url,omitempty"` ProxyIconURL string `json:"proxy_icon_url,omitempty"` }
MessageEmbedAuthor is a part of a MessageEmbed struct.
type MessageEmbedField ¶ added in v0.15.0
type MessageEmbedField struct { Name string `json:"name,omitempty"` Value string `json:"value,omitempty"` Inline bool `json:"inline,omitempty"` }
MessageEmbedField is a part of a MessageEmbed struct.
type MessageEmbedFooter ¶ added in v0.15.0
type MessageEmbedFooter struct {}
MessageEmbedFooter is a part of a MessageEmbed struct.
type MessageEmbedImage ¶ added in v0.15.0
type MessageEmbedImage struct { URL string `json:"url,omitempty"` ProxyURL string `json:"proxy_url,omitempty"` Width int `json:"width,omitempty"` Height int `json:"height,omitempty"` }
MessageEmbedImage is a part of a MessageEmbed struct.
type MessageEmbedProvider ¶ added in v0.15.0
type MessageEmbedProvider struct { URL string `json:"url,omitempty"` Name string `json:"name,omitempty"` }
MessageEmbedProvider is a part of a MessageEmbed struct.
type MessageEmbedThumbnail ¶ added in v0.15.0
type MessageEmbedThumbnail struct { URL string `json:"url,omitempty"` ProxyURL string `json:"proxy_url,omitempty"` Width int `json:"width,omitempty"` Height int `json:"height,omitempty"` }
MessageEmbedThumbnail is a part of a MessageEmbed struct.
type MessageEmbedVideo ¶ added in v0.15.0
type MessageEmbedVideo struct { URL string `json:"url,omitempty"` ProxyURL string `json:"proxy_url,omitempty"` Width int `json:"width,omitempty"` Height int `json:"height,omitempty"` }
MessageEmbedVideo is a part of a MessageEmbed struct.
type MessageReaction ¶ added in v0.15.0
type MessageReaction struct { UserID string `json:"user_id"` MessageID string `json:"message_id"` Emoji Emoji `json:"emoji"` ChannelID string `json:"channel_id"` }
MessageReaction stores the data for a message reaction.
type MessageReactionAdd ¶ added in v0.15.0
type MessageReactionAdd struct {
*MessageReaction
}
MessageReactionAdd is the data for a MessageReactionAdd event.
type MessageReactionRemove ¶ added in v0.15.0
type MessageReactionRemove struct {
*MessageReaction
}
MessageReactionRemove is the data for a MessageReactionRemove event.
type MessageReactionRemoveAll ¶ added in v0.16.0
type MessageReactionRemoveAll struct {
*MessageReaction
}
MessageReactionRemoveAll is the data for a MessageReactionRemoveAll event.
type MessageReactions ¶ added in v0.15.0
type MessageReactions struct { Count int `json:"count"` Me bool `json:"me"` Emoji *Emoji `json:"emoji"` }
MessageReactions holds a reactions object for a message.
type MessageSend ¶ added in v0.16.0
type MessageSend struct { Content string `json:"content,omitempty"` Embed *MessageEmbed `json:"embed,omitempty"` Tts bool `json:"tts"` Files []*File `json:"-"` // TODO: Remove this when compatibility is not required. File *File `json:"-"` }
MessageSend stores all parameters you can send with ChannelMessageSendComplex.
type MessageType ¶ added in v0.17.0
type MessageType int
MessageType is the type of Message
const ( MessageTypeDefault MessageType = iota MessageTypeRecipientAdd MessageTypeRecipientRemove MessageTypeCall MessageTypeChannelNameChange MessageTypeChannelIconChange MessageTypeChannelPinnedMessage MessageTypeGuildMemberJoin )
Block contains the valid known MessageType values
type MessageUpdate ¶ added in v0.11.0
type MessageUpdate struct {
*Message
}
MessageUpdate is the data for a MessageUpdate event.
type Packet ¶ added in v0.11.0
type Packet struct { SSRC uint32 Sequence uint16 Timestamp uint32 Type []byte Opus []byte PCM []int16 }
A Packet contains the headers and content of a received voice packet.
type PermissionOverwrite ¶
type PermissionOverwrite struct { ID string `json:"id"` Type string `json:"type"` Deny int `json:"deny"` Allow int `json:"allow"` }
A PermissionOverwrite holds permission overwrite data for a Channel
type Presence ¶
type Presence struct { User *User `json:"user"` Status Status `json:"status"` Game *Game `json:"game"` Nick string `json:"nick"` Roles []string `json:"roles"` Since *int `json:"since"` }
A Presence stores the online, offline, or idle and game status of Guild members.
type PresenceUpdate ¶
type PresenceUpdate struct { Presence GuildID string `json:"guild_id"` Roles []string `json:"roles"` }
PresenceUpdate is the data for a PresenceUpdate event.
type PresencesReplace ¶ added in v0.12.0
type PresencesReplace []*Presence
PresencesReplace is the data for a PresencesReplace event.
type RESTError ¶ added in v0.15.0
type RESTError struct { Request *http.Request Response *http.Response ResponseBody []byte Message *APIErrorMessage // Message may be nil. }
RESTError stores error information about a request with a bad response code. Message is not always present, there are cases where api calls can fail without returning a json message.
type RateLimit ¶ added in v0.9.0
type RateLimit struct { *TooManyRequests URL string }
RateLimit is the data for a RateLimit event. This is a sythetic event and is not dispatched by Discord.
type RateLimiter ¶ added in v0.15.0
RateLimiter holds all ratelimit buckets
func NewRatelimiter ¶ added in v0.15.0
func NewRatelimiter() *RateLimiter
NewRatelimiter returns a new RateLimiter
func (*RateLimiter) GetBucket ¶ added in v0.18.0
func (r *RateLimiter) GetBucket(key string) *Bucket
GetBucket retrieves or creates a bucket
func (*RateLimiter) GetWaitTime ¶ added in v0.18.0
func (r *RateLimiter) GetWaitTime(b *Bucket, minRemaining int) time.Duration
GetWaitTime returns the duration you should wait for a Bucket
func (*RateLimiter) LockBucket ¶ added in v0.15.0
func (r *RateLimiter) LockBucket(bucketID string) *Bucket
LockBucket Locks until a request can be made
func (*RateLimiter) LockBucketObject ¶ added in v0.18.0
func (r *RateLimiter) LockBucketObject(b *Bucket) *Bucket
LockBucketObject Locks an already resolved bucket until a request can be made
type ReadState ¶
type ReadState struct { MentionCount int `json:"mention_count"` LastMessageID string `json:"last_message_id"` ID string `json:"id"` }
A ReadState stores data on the read state of channels.
type Ready ¶
type Ready struct { Version int `json:"v"` SessionID string `json:"session_id"` User *User `json:"user"` ReadState []*ReadState `json:"read_state"` PrivateChannels []*Channel `json:"private_channels"` Guilds []*Guild `json:"guilds"` // Undocumented fields Settings *Settings `json:"user_settings"` UserGuildSettings []*UserGuildSettings `json:"user_guild_settings"` Relationships []*Relationship `json:"relationships"` Presences []*Presence `json:"presences"` Notes map[string]string `json:"notes"` }
A Ready stores all data for the websocket READY event.
type Relationship ¶ added in v0.13.0
type Relationship struct { User *User `json:"user"` Type int `json:"type"` // 1 = friend, 2 = blocked, 3 = incoming friend req, 4 = sent friend req ID string `json:"id"` }
A Relationship between the logged in user and Relationship.User
type RelationshipAdd ¶ added in v0.15.0
type RelationshipAdd struct {
*Relationship
}
RelationshipAdd is the data for a RelationshipAdd event.
type RelationshipRemove ¶ added in v0.15.0
type RelationshipRemove struct {
*Relationship
}
RelationshipRemove is the data for a RelationshipRemove event.
type Resumed ¶ added in v0.13.0
type Resumed struct {
Trace []string `json:"_trace"`
}
Resumed is the data for a Resumed event.
type Role ¶
type Role struct { ID string `json:"id"` Name string `json:"name"` Managed bool `json:"managed"` Mentionable bool `json:"mentionable"` Hoist bool `json:"hoist"` Color int `json:"color"` Position int `json:"position"` Permissions int `json:"permissions"` }
A Role stores information about Discord guild member roles.
type Session ¶
type Session struct { sync.RWMutex // Authentication token for this session Token string MFA bool // Debug for printing JSON request/responses Debug bool // Deprecated, will be removed. LogLevel int // Should the session reconnect the websocket on errors. ShouldReconnectOnError bool // Should the session request compressed websocket data. Compress bool // Sharding ShardID int ShardCount int // Should state tracking be enabled. // State tracking is the best way for getting the the users // active guilds and the members of the guilds. StateEnabled bool // Whether or not to call event handlers synchronously. // e.g false = launch event handlers in their own goroutines. SyncEvents bool // Whether the Data Websocket is ready DataReady bool // NOTE: Maye be deprecated soon // Max number of REST API retries MaxRestRetries int // Whether the Voice Websocket is ready VoiceReady bool // NOTE: Deprecated. // Whether the UDP Connection is ready UDPReady bool // NOTE: Deprecated // Stores a mapping of guild id's to VoiceConnections VoiceConnections map[string]*VoiceConnection // Managed state object, updated internally with events when // StateEnabled is true. State *State // The http client used for REST requests Client *http.Client // Stores the last HeartbeatAck that was recieved (in UTC) LastHeartbeatAck time.Time // used to deal with rate limits Ratelimiter *RateLimiter // contains filtered or unexported fields }
A Session represents a connection to the Discord API.
func New ¶
New creates a new Discord session and will automate some startup tasks if given enough information to do so. Currently you can pass zero arguments and it will return an empty Discord session. There are 3 ways to call New:
With a single auth token - All requests will use the token blindly, no verification of the token will be done and requests may fail. IF THE TOKEN IS FOR A BOT, IT MUST BE PREFIXED WITH `BOT ` eg: `"Bot <token>"` With an email and password - Discord will sign in with the provided credentials. With an email, password and auth token - Discord will verify the auth token, if it is invalid it will sign in with the provided credentials. This is the Discord recommended way to sign in.
NOTE: While email/pass authentication is supported by DiscordGo it is HIGHLY DISCOURAGED by Discord. Please only use email/pass to obtain a token and then use that authentication token for all future connections. Also, doing any form of automation with a user (non Bot) account may result in that account being permanently banned from Discord.
func (*Session) AddHandler ¶ added in v0.11.0
func (s *Session) AddHandler(handler interface{}) func()
AddHandler allows you to add an event handler that will be fired anytime the Discord WSAPI event that matches the function fires. events.go contains all the Discord WSAPI events that can be fired. eg:
Session.AddHandler(func(s *discordgo.Session, m *discordgo.MessageCreate) { })
or:
Session.AddHandler(func(s *discordgo.Session, m *discordgo.PresenceUpdate) { })
The return value of this method is a function, that when called will remove the event handler.
func (*Session) AddHandlerOnce ¶ added in v0.15.0
func (s *Session) AddHandlerOnce(handler interface{}) func()
AddHandlerOnce allows you to add an event handler that will be fired the next time the Discord WSAPI event that matches the function fires. See AddHandler for more details.
func (*Session) Application ¶ added in v0.12.0
func (s *Session) Application(appID string) (st *Application, err error)
Application returns an Application structure of a specific Application
appID : The ID of an Application
func (*Session) ApplicationBotCreate ¶ added in v0.12.0
ApplicationBotCreate creates an Application Bot Account
appID : The ID of an Application
NOTE: func name may change, if I can think up something better.
func (*Session) ApplicationCreate ¶ added in v0.12.0
func (s *Session) ApplicationCreate(ap *Application) (st *Application, err error)
ApplicationCreate creates a new Application
name : Name of Application / Bot uris : Redirect URIs (Not required)
func (*Session) ApplicationDelete ¶ added in v0.12.0
ApplicationDelete deletes an existing Application
appID : The ID of an Application
func (*Session) ApplicationUpdate ¶ added in v0.12.0
func (s *Session) ApplicationUpdate(appID string, ap *Application) (st *Application, err error)
ApplicationUpdate updates an existing Application
var : desc
func (*Session) Applications ¶ added in v0.12.0
func (s *Session) Applications() (st []*Application, err error)
Applications returns all applications for the authenticated user
func (*Session) Channel ¶
Channel returns a Channel structure of a specific Channel. channelID : The ID of the Channel you want returned.
func (*Session) ChannelDelete ¶
ChannelDelete deletes the given channel channelID : The ID of a Channel
func (*Session) ChannelEdit ¶
ChannelEdit edits the given channel channelID : The ID of a Channel name : The new name to assign the channel.
func (*Session) ChannelEditComplex ¶ added in v0.18.0
func (s *Session) ChannelEditComplex(channelID string, data *ChannelEdit) (st *Channel, err error)
ChannelEditComplex edits an existing channel, replacing the parameters entirely with ChannelEdit struct channelID : The ID of a Channel data : The channel struct to send
func (*Session) ChannelFileSend ¶ added in v0.11.0
ChannelFileSend sends a file to the given channel. channelID : The ID of a Channel. name: The name of the file. io.Reader : A reader for the file contents.
func (*Session) ChannelFileSendWithMessage ¶ added in v0.15.0
func (s *Session) ChannelFileSendWithMessage(channelID, content string, name string, r io.Reader) (*Message, error)
ChannelFileSendWithMessage sends a file to the given channel with an message. DEPRECATED. Use ChannelMessageSendComplex instead. channelID : The ID of a Channel. content: Optional Message content. name: The name of the file. io.Reader : A reader for the file contents.
func (*Session) ChannelInviteCreate ¶
ChannelInviteCreate creates a new invite for the given channel. channelID : The ID of a Channel i : An Invite struct with the values MaxAge, MaxUses and Temporary defined.
func (*Session) ChannelInvites ¶
ChannelInvites returns an array of Invite structures for the given channel channelID : The ID of a Channel
func (*Session) ChannelMessage ¶ added in v0.13.0
ChannelMessage gets a single message by ID from a given channel. channeld : The ID of a Channel messageID : the ID of a Message
func (*Session) ChannelMessageAck ¶
ChannelMessageAck acknowledges and marks the given message as read channeld : The ID of a Channel messageID : the ID of a Message lastToken : token returned by last ack
func (*Session) ChannelMessageDelete ¶
ChannelMessageDelete deletes a message from the Channel.
func (*Session) ChannelMessageEdit ¶
ChannelMessageEdit edits an existing message, replacing it entirely with the given content. channelID : The ID of a Channel messageID : The ID of a Message content : The contents of the message
func (*Session) ChannelMessageEditComplex ¶ added in v0.16.0
func (s *Session) ChannelMessageEditComplex(m *MessageEdit) (st *Message, err error)
ChannelMessageEditComplex edits an existing message, replacing it entirely with the given MessageEdit struct
func (*Session) ChannelMessageEditEmbed ¶ added in v0.15.0
func (s *Session) ChannelMessageEditEmbed(channelID, messageID string, embed *MessageEmbed) (*Message, error)
ChannelMessageEditEmbed edits an existing message with embedded data. channelID : The ID of a Channel messageID : The ID of a Message embed : The embed data to send
func (*Session) ChannelMessagePin ¶ added in v0.13.0
ChannelMessagePin pins a message within a given channel. channelID: The ID of a channel. messageID: The ID of a message.
func (*Session) ChannelMessageSend ¶
ChannelMessageSend sends a message to the given channel. channelID : The ID of a Channel. content : The message to send.
func (*Session) ChannelMessageSendComplex ¶ added in v0.16.0
func (s *Session) ChannelMessageSendComplex(channelID string, data *MessageSend) (st *Message, err error)
ChannelMessageSendComplex sends a message to the given channel. channelID : The ID of a Channel. data : The message struct to send.
func (*Session) ChannelMessageSendEmbed ¶ added in v0.15.0
func (s *Session) ChannelMessageSendEmbed(channelID string, embed *MessageEmbed) (*Message, error)
ChannelMessageSendEmbed sends a message to the given channel with embedded data. channelID : The ID of a Channel. embed : The embed data to send.
func (*Session) ChannelMessageSendTTS ¶ added in v0.11.0
ChannelMessageSendTTS sends a message to the given channel with Text to Speech. channelID : The ID of a Channel. content : The message to send.
func (*Session) ChannelMessageUnpin ¶ added in v0.13.0
ChannelMessageUnpin unpins a message within a given channel. channelID: The ID of a channel. messageID: The ID of a message.
func (*Session) ChannelMessages ¶
func (s *Session) ChannelMessages(channelID string, limit int, beforeID, afterID, aroundID string) (st []*Message, err error)
ChannelMessages returns an array of Message structures for messages within a given channel. channelID : The ID of a Channel. limit : The number messages that can be returned. (max 100) beforeID : If provided all messages returned will be before given ID. afterID : If provided all messages returned will be after given ID. aroundID : If provided all messages returned will be around given ID.
func (*Session) ChannelMessagesBulkDelete ¶ added in v0.13.0
ChannelMessagesBulkDelete bulk deletes the messages from the channel for the provided messageIDs. If only one messageID is in the slice call channelMessageDelete function. If the slice is empty do nothing. channelID : The ID of the channel for the messages to delete. messages : The IDs of the messages to be deleted. A slice of string IDs. A maximum of 100 messages.
func (*Session) ChannelMessagesPinned ¶ added in v0.13.0
ChannelMessagesPinned returns an array of Message structures for pinned messages within a given channel channelID : The ID of a Channel.
func (*Session) ChannelPermissionDelete ¶ added in v0.7.0
ChannelPermissionDelete deletes a specific permission override for the given channel. NOTE: Name of this func may change.
func (*Session) ChannelPermissionSet ¶ added in v0.7.0
func (s *Session) ChannelPermissionSet(channelID, targetID, targetType string, allow, deny int) (err error)
ChannelPermissionSet creates a Permission Override for the given channel. NOTE: This func name may changed. Using Set instead of Create because you can both create a new override or update an override with this function.
func (*Session) ChannelTyping ¶
ChannelTyping broadcasts to all members that authenticated user is typing in the given channel. channelID : The ID of a Channel
func (*Session) ChannelVoiceJoin ¶ added in v0.9.0
func (s *Session) ChannelVoiceJoin(gID, cID string, mute, deaf bool) (voice *VoiceConnection, err error)
ChannelVoiceJoin joins the session user to a voice channel.
gID : Guild ID of the channel to join. cID : Channel ID of the channel to join. mute : If true, you will be set to muted upon joining. deaf : If true, you will be set to deafened upon joining.
func (*Session) ChannelWebhooks ¶ added in v0.15.0
ChannelWebhooks returns all webhooks for a given channel. channelID: The ID of a channel.
func (*Session) Close ¶
Close closes a websocket and stops all listening/heartbeat goroutines. TODO: Add support for Voice WS/UDP connections
func (*Session) GatewayBot ¶ added in v0.17.0
func (s *Session) GatewayBot() (st *GatewayBotResponse, err error)
GatewayBot returns the websocket Gateway address and the recommended number of shards
func (*Session) Guild ¶
Guild returns a Guild structure of a specific Guild. guildID : The ID of a Guild
func (*Session) GuildBanCreate ¶ added in v0.7.0
GuildBanCreate bans the given user from the given guild. guildID : The ID of a Guild. userID : The ID of a User days : The number of days of previous comments to delete.
func (*Session) GuildBanCreateWithReason ¶ added in v0.16.0
GuildBanCreateWithReason bans the given user from the given guild also providing a reaso. guildID : The ID of a Guild. userID : The ID of a User reason : The reason for this ban days : The number of days of previous comments to delete.
func (*Session) GuildBanDelete ¶
GuildBanDelete removes the given user from the guild bans guildID : The ID of a Guild. userID : The ID of a User
func (*Session) GuildBans ¶
GuildBans returns an array of User structures for all bans of a given guild. guildID : The ID of a Guild.
func (*Session) GuildChannelCreate ¶
GuildChannelCreate creates a new channel in the given guild guildID : The ID of a Guild. name : Name of the channel (2-100 chars length) ctype : Tpye of the channel (voice or text)
func (*Session) GuildChannels ¶
GuildChannels returns an array of Channel structures for all channels of a given guild. guildID : The ID of a Guild.
func (*Session) GuildChannelsReorder ¶ added in v0.13.0
GuildChannelsReorder updates the order of channels in a guild guildID : The ID of a Guild. channels : Updated channels.
func (*Session) GuildCreate ¶
GuildCreate creates a new Guild name : A name for the Guild (2-100 characters)
func (*Session) GuildDelete ¶
GuildDelete deletes a Guild. guildID : The ID of a Guild
func (*Session) GuildEdit ¶
func (s *Session) GuildEdit(guildID string, g GuildParams) (st *Guild, err error)
GuildEdit edits a new Guild guildID : The ID of a Guild g : A GuildParams struct with the values Name, Region and VerificationLevel defined.
func (*Session) GuildEmbed ¶ added in v0.13.0
func (s *Session) GuildEmbed(guildID string) (st *GuildEmbed, err error)
GuildEmbed returns the embed for a Guild. guildID : The ID of a Guild.
func (*Session) GuildEmbedEdit ¶ added in v0.13.0
GuildEmbedEdit returns the embed for a Guild. guildID : The ID of a Guild.
func (*Session) GuildIcon ¶ added in v0.10.0
GuildIcon returns an image.Image of a guild icon. guildID : The ID of a Guild.
func (*Session) GuildIntegrationCreate ¶ added in v0.13.0
func (s *Session) GuildIntegrationCreate(guildID, integrationType, integrationID string) (err error)
GuildIntegrationCreate creates a Guild Integration. guildID : The ID of a Guild. integrationType : The Integration type. integrationID : The ID of an integration.
func (*Session) GuildIntegrationDelete ¶ added in v0.13.0
GuildIntegrationDelete removes the given integration from the Guild. guildID : The ID of a Guild. integrationID : The ID of an integration.
func (*Session) GuildIntegrationEdit ¶ added in v0.13.0
func (s *Session) GuildIntegrationEdit(guildID, integrationID string, expireBehavior, expireGracePeriod int, enableEmoticons bool) (err error)
GuildIntegrationEdit edits a Guild Integration. guildID : The ID of a Guild. integrationType : The Integration type. integrationID : The ID of an integration. expireBehavior : The behavior when an integration subscription lapses (see the integration object documentation). expireGracePeriod : Period (in seconds) where the integration will ignore lapsed subscriptions. enableEmoticons : Whether emoticons should be synced for this integration (twitch only currently).
func (*Session) GuildIntegrationSync ¶ added in v0.13.0
GuildIntegrationSync syncs an integration. guildID : The ID of a Guild. integrationID : The ID of an integration.
func (*Session) GuildIntegrations ¶ added in v0.13.0
func (s *Session) GuildIntegrations(guildID string) (st []*GuildIntegration, err error)
GuildIntegrations returns an array of Integrations for a guild. guildID : The ID of a Guild.
func (*Session) GuildInvites ¶
GuildInvites returns an array of Invite structures for the given guild guildID : The ID of a Guild.
func (*Session) GuildLeave ¶ added in v0.11.0
GuildLeave leaves a Guild. guildID : The ID of a Guild
func (*Session) GuildMember ¶ added in v0.11.0
GuildMember returns a member of a guild.
guildID : The ID of a Guild. userID : The ID of a User
func (*Session) GuildMemberDelete ¶
GuildMemberDelete removes the given user from the given guild. guildID : The ID of a Guild. userID : The ID of a User
func (*Session) GuildMemberDeleteWithReason ¶ added in v0.17.0
GuildMemberDeleteWithReason removes the given user from the given guild. guildID : The ID of a Guild. userID : The ID of a User reason : The reason for the kick
func (*Session) GuildMemberEdit ¶ added in v0.11.0
GuildMemberEdit edits the roles of a member. guildID : The ID of a Guild. userID : The ID of a User. roles : A list of role ID's to set on the member.
func (*Session) GuildMemberMove ¶ added in v0.11.0
GuildMemberMove moves a guild member from one voice channel to another/none
guildID : The ID of a Guild. userID : The ID of a User. channelID : The ID of a channel to move user to, or null?
NOTE : I am not entirely set on the name of this function and it may change prior to the final 1.0.0 release of Discordgo
func (*Session) GuildMemberNickname ¶ added in v0.13.0
GuildMemberNickname updates the nickname of a guild member guildID : The ID of a guild userID : The ID of a user userID : The ID of a user or "@me" which is a shortcut of the current user ID
func (*Session) GuildMemberRoleAdd ¶ added in v0.15.0
GuildMemberRoleAdd adds the specified role to a given member
guildID : The ID of a Guild. userID : The ID of a User. roleID : The ID of a Role to be assigned to the user.
func (*Session) GuildMemberRoleRemove ¶ added in v0.15.0
GuildMemberRoleRemove removes the specified role to a given member
guildID : The ID of a Guild. userID : The ID of a User. roleID : The ID of a Role to be removed from the user.
func (*Session) GuildMembers ¶
GuildMembers returns a list of members for a guild.
guildID : The ID of a Guild. after : The id of the member to return members after limit : max number of members to return (max 1000)
func (*Session) GuildPrune ¶ added in v0.15.0
GuildPrune Begin as prune operation. Requires the 'KICK_MEMBERS' permission. Returns an object with one 'pruned' key indicating the number of members that were removed in the prune operation. guildID : The ID of a Guild. days : The number of days to count prune for (1 or more).
func (*Session) GuildPruneCount ¶ added in v0.15.0
GuildPruneCount Returns the number of members that would be removed in a prune operation. Requires 'KICK_MEMBER' permission. guildID : The ID of a Guild. days : The number of days to count prune for (1 or more).
func (*Session) GuildRoleCreate ¶ added in v0.7.0
GuildRoleCreate returns a new Guild Role. guildID: The ID of a Guild.
func (*Session) GuildRoleDelete ¶ added in v0.7.0
GuildRoleDelete deletes an existing role. guildID : The ID of a Guild. roleID : The ID of a Role.
func (*Session) GuildRoleEdit ¶ added in v0.7.0
func (s *Session) GuildRoleEdit(guildID, roleID, name string, color int, hoist bool, perm int, mention bool) (st *Role, err error)
GuildRoleEdit updates an existing Guild Role with new values guildID : The ID of a Guild. roleID : The ID of a Role. name : The name of the Role. color : The color of the role (decimal, not hex). hoist : Whether to display the role's users separately. perm : The permissions for the role. mention : Whether this role is mentionable
func (*Session) GuildRoleReorder ¶ added in v0.7.0
GuildRoleReorder reoders guild roles guildID : The ID of a Guild. roles : A list of ordered roles.
func (*Session) GuildRoles ¶ added in v0.7.0
GuildRoles returns all roles for a given guild. guildID : The ID of a Guild.
func (*Session) GuildSplash ¶ added in v0.10.0
GuildSplash returns an image.Image of a guild splash image. guildID : The ID of a Guild.
func (*Session) GuildWebhooks ¶ added in v0.15.0
GuildWebhooks returns all webhooks for a given guild. guildID: The ID of a Guild.
func (*Session) Invite ¶
Invite returns an Invite structure of the given invite inviteID : The invite code
func (*Session) InviteAccept ¶
InviteAccept accepts an Invite to a Guild or Channel inviteID : The invite code
func (*Session) InviteDelete ¶
InviteDelete deletes an existing invite inviteID : the code of an invite
func (*Session) Login ¶
Login asks the Discord server for an authentication token.
NOTE: While email/pass authentication is supported by DiscordGo it is HIGHLY DISCOURAGED by Discord. Please only use email/pass to obtain a token and then use that authentication token for all future connections. Also, doing any form of automation with a user (non Bot) account may result in that account being permanently banned from Discord.
func (*Session) Logout ¶
Logout sends a logout request to Discord. This does not seem to actually invalidate the token. So you can still make API calls even after a Logout. So, it seems almost pointless to even use.
func (*Session) MessageReactionAdd ¶ added in v0.15.0
MessageReactionAdd creates an emoji reaction to a message. channelID : The channel ID. messageID : The message ID. emojiID : Either the unicode emoji for the reaction, or a guild emoji identifier.
func (*Session) MessageReactionRemove ¶ added in v0.15.0
MessageReactionRemove deletes an emoji reaction to a message. channelID : The channel ID. messageID : The message ID. emojiID : Either the unicode emoji for the reaction, or a guild emoji identifier. userID : @me or ID of the user to delete the reaction for.
func (*Session) MessageReactions ¶ added in v0.15.0
func (s *Session) MessageReactions(channelID, messageID, emojiID string, limit int, beforeID, afterID string) (st []*User, err error)
MessageReactions gets all the users reactions for a specific emoji. channelID : The channel ID. messageID : The message ID. emojiID : Either the unicode emoji for the reaction, or a guild emoji identifier. limit : max number of users to return (max 100) beforeID : If provided all reactions returned will be before given ID. afterID : If provided all reactions returned will be after given ID.
func (*Session) MessageReactionsRemoveAll ¶ added in v0.17.0
MessageReactionsRemoveAll deletes all reactions from a message channelID : The channel ID messageID : The message ID.
func (*Session) Open ¶
Open creates a websocket connection to Discord. See: https://discordapp.com/developers/docs/topics/gateway#connecting
func (*Session) Register ¶ added in v0.9.0
Register sends a Register request to Discord, and returns the authentication token Note that this account is temporary and should be verified for future use. Another option is to save the authentication token external, but this isn't recommended.
func (*Session) RelationshipDelete ¶ added in v0.15.0
RelationshipDelete removes the relationship with a user. userID: ID of the user.
func (*Session) RelationshipFriendRequestAccept ¶ added in v0.15.0
RelationshipFriendRequestAccept accepts a friend request from a user. userID: ID of the user.
func (*Session) RelationshipFriendRequestSend ¶ added in v0.15.0
RelationshipFriendRequestSend sends a friend request to a user. userID: ID of the user.
func (*Session) RelationshipUserBlock ¶ added in v0.15.0
RelationshipUserBlock blocks a user. userID: ID of the user.
func (*Session) RelationshipsGet ¶ added in v0.15.0
func (s *Session) RelationshipsGet() (r []*Relationship, err error)
RelationshipsGet returns an array of all the relationships of the user.
func (*Session) RelationshipsMutualGet ¶ added in v0.15.0
RelationshipsMutualGet returns an array of all the users both @me and the given user is friends with. userID: ID of the user.
func (*Session) Request ¶
Request is the same as RequestWithBucketID but the bucket id is the same as the urlStr
func (*Session) RequestGuildMembers ¶ added in v0.15.0
RequestGuildMembers requests guild members from the gateway The gateway responds with GuildMembersChunk events guildID : The ID of the guild to request members of query : String that username starts with, leave empty to return all members limit : Max number of items to return, or 0 to request all members matched
func (*Session) RequestWithBucketID ¶ added in v0.15.0
func (s *Session) RequestWithBucketID(method, urlStr string, data interface{}, bucketID string) (response []byte, err error)
RequestWithBucketID makes a (GET/POST/...) Requests to Discord REST API with JSON data.
func (*Session) RequestWithLockedBucket ¶ added in v0.18.0
func (s *Session) RequestWithLockedBucket(method, urlStr, contentType string, b []byte, bucket *Bucket, sequence int) (response []byte, err error)
RequestWithLockedBucket makes a request using a bucket that's already been locked
func (*Session) UpdateStatus ¶
UpdateStatus is used to update the user's status. If idle>0 then set status to idle. If game!="" then set game. if otherwise, set status to active, and no game.
func (*Session) UpdateStatusComplex ¶ added in v0.18.0
func (s *Session) UpdateStatusComplex(usd UpdateStatusData) (err error)
UpdateStatusComplex allows for sending the raw status update data untouched by discordgo.
func (*Session) UpdateStreamingStatus ¶ added in v0.13.0
UpdateStreamingStatus is used to update the user's streaming status. If idle>0 then set status to idle. If game!="" then set game. If game!="" and url!="" then set the status type to streaming with the URL set. if otherwise, set status to active, and no game.
func (*Session) User ¶
User returns the user details of the given userID userID : A user ID or "@me" which is a shortcut of current user ID
func (*Session) UserAvatar ¶
UserAvatar is deprecated. Please use UserAvatarDecode userID : A user ID or "@me" which is a shortcut of current user ID
func (*Session) UserAvatarDecode ¶ added in v0.16.0
UserAvatarDecode returns an image.Image of a user's Avatar user : The user which avatar should be retrieved
func (*Session) UserChannelCreate ¶
UserChannelCreate creates a new User (Private) Channel with another User recipientID : A user ID for the user to which this channel is opened with.
func (*Session) UserChannelPermissions ¶ added in v0.12.0
UserChannelPermissions returns the permission of a user in a channel. userID : The ID of the user to calculate permissions for. channelID : The ID of the channel to calculate permission for.
NOTE: This function is now deprecated and will be removed in the future. Please see the same function inside state.go
func (*Session) UserChannels ¶
UserChannels returns an array of Channel structures for all private channels.
func (*Session) UserGuildSettingsEdit ¶ added in v0.13.0
func (s *Session) UserGuildSettingsEdit(guildID string, settings *UserGuildSettingsEdit) (st *UserGuildSettings, err error)
UserGuildSettingsEdit Edits the users notification settings for a guild guildID : The ID of the guild to edit the settings on settings : The settings to update
func (*Session) UserGuilds ¶
UserGuilds returns an array of UserGuild structures for all guilds. limit : The number guilds that can be returned. (max 100) beforeID : If provided all guilds returned will be before given ID. afterID : If provided all guilds returned will be after given ID.
func (*Session) UserNoteSet ¶ added in v0.16.0
UserNoteSet sets the note for a specific user.
func (*Session) UserSettings ¶
UserSettings returns the settings for a given user
func (*Session) UserUpdate ¶ added in v0.6.0
func (s *Session) UserUpdate(email, password, username, avatar, newPassword string) (st *User, err error)
UserUpdate updates a users settings.
func (*Session) UserUpdateStatus ¶ added in v0.15.0
UserUpdateStatus update the user status status : The new status (Actual valid status are 'online','idle','dnd','invisible')
func (*Session) VoiceRegions ¶
func (s *Session) VoiceRegions() (st []*VoiceRegion, err error)
VoiceRegions returns the voice server regions
func (*Session) Webhook ¶ added in v0.15.0
Webhook returns a webhook for a given ID webhookID: The ID of a webhook.
func (*Session) WebhookCreate ¶ added in v0.15.0
WebhookCreate returns a new Webhook. channelID: The ID of a Channel. name : The name of the webhook. avatar : The avatar of the webhook.
func (*Session) WebhookDelete ¶ added in v0.15.0
WebhookDelete deletes a webhook for a given ID webhookID: The ID of a webhook.
func (*Session) WebhookDeleteWithToken ¶ added in v0.15.0
WebhookDeleteWithToken deletes a webhook for a given ID with an auth token. webhookID: The ID of a webhook. token : The auth token for the webhook.
func (*Session) WebhookEdit ¶ added in v0.15.0
WebhookEdit updates an existing Webhook. webhookID: The ID of a webhook. name : The name of the webhook. avatar : The avatar of the webhook.
func (*Session) WebhookEditWithToken ¶ added in v0.15.0
WebhookEditWithToken updates an existing Webhook with an auth token. webhookID: The ID of a webhook. token : The auth token for the webhook. name : The name of the webhook. avatar : The avatar of the webhook.
func (*Session) WebhookExecute ¶ added in v0.15.0
func (s *Session) WebhookExecute(webhookID, token string, wait bool, data *WebhookParams) (err error)
WebhookExecute executes a webhook. webhookID: The ID of a webhook. token : The auth token for the webhook
type Settings ¶
type Settings struct { RenderEmbeds bool `json:"render_embeds"` InlineEmbedMedia bool `json:"inline_embed_media"` InlineAttachmentMedia bool `json:"inline_attachment_media"` EnableTtsCommand bool `json:"enable_tts_command"` MessageDisplayCompact bool `json:"message_display_compact"` ShowCurrentGame bool `json:"show_current_game"` ConvertEmoticons bool `json:"convert_emoticons"` Locale string `json:"locale"` Theme string `json:"theme"` GuildPositions []string `json:"guild_positions"` RestrictedGuilds []string `json:"restricted_guilds"` FriendSourceFlags *FriendSourceFlags `json:"friend_source_flags"` Status Status `json:"status"` DetectPlatformAccounts bool `json:"detect_platform_accounts"` DeveloperMode bool `json:"developer_mode"` }
A Settings stores data for a specific users Discord client settings.
type State ¶ added in v0.8.0
type State struct { sync.RWMutex Ready MaxMessageCount int TrackChannels bool TrackEmojis bool TrackMembers bool TrackRoles bool TrackVoice bool TrackPresences bool // contains filtered or unexported fields }
A State contains the current known state. As discord sends this in a READY blob, it seems reasonable to simply use that struct as the data store.
func (*State) Channel ¶ added in v0.8.0
Channel gets a channel by ID, it will look in all guilds and private channels.
func (*State) ChannelAdd ¶ added in v0.8.0
ChannelAdd adds a channel to the current world state, or updates it if it already exists. Channels may exist either as PrivateChannels or inside a guild.
func (*State) ChannelRemove ¶ added in v0.8.0
ChannelRemove removes a channel from current world state.
func (*State) Guild ¶ added in v0.8.0
Guild gets a guild by ID. Useful for querying if @me is in a guild:
_, err := discordgo.Session.State.Guild(guildID) isInGuild := err == nil
func (*State) GuildAdd ¶ added in v0.8.0
GuildAdd adds a guild to the current world state, or updates it if it already exists.
func (*State) GuildChannel ¶ added in v0.8.0
GuildChannel gets a channel by ID from a guild. This method is Deprecated, use Channel(channelID)
func (*State) GuildRemove ¶ added in v0.8.0
GuildRemove removes a guild from current world state.
func (*State) MemberAdd ¶ added in v0.8.0
MemberAdd adds a member to the current world state, or updates it if it already exists.
func (*State) MemberRemove ¶ added in v0.8.0
MemberRemove removes a member from current world state.
func (*State) MessageAdd ¶ added in v0.10.0
MessageAdd adds a message to the current world state, or updates it if it exists. If the channel cannot be found, the message is discarded. Messages are kept in state up to s.MaxMessageCount
func (*State) MessageRemove ¶ added in v0.10.0
MessageRemove removes a message from the world state.
func (*State) OnInterface ¶ added in v0.17.0
OnInterface handles all events related to states.
func (*State) PresenceAdd ¶ added in v0.16.0
PresenceAdd adds a presence to the current world state, or updates it if it already exists.
func (*State) PresenceRemove ¶ added in v0.16.0
PresenceRemove removes a presence from the current world state.
func (*State) PrivateChannel ¶ added in v0.8.0
PrivateChannel gets a private channel by ID. This method is Deprecated, use Channel(channelID)
func (*State) RoleAdd ¶ added in v0.13.0
RoleAdd adds a role to the current world state, or updates it if it already exists.
func (*State) RoleRemove ¶ added in v0.13.0
RoleRemove removes a role from current world state by ID.
func (*State) UserChannelPermissions ¶ added in v0.13.0
UserChannelPermissions returns the permission of a user in a channel. userID : The ID of the user to calculate permissions for. channelID : The ID of the channel to calculate permission for.
func (*State) UserColor ¶ added in v0.16.0
UserColor returns the color of a user in a channel. While colors are defined at a Guild level, determining for a channel is more useful in message handlers. 0 is returned in cases of error, which is the color of @everyone. userID : The ID of the user to calculate the color for. channelID : The ID of the channel to calculate the color for.
type TimeStamps ¶ added in v0.18.0
type TimeStamps struct { EndTimestamp int64 `json:"end,omitempty"` StartTimestamp int64 `json:"start,omitempty"` }
A TimeStamps struct contains start and end times used in the rich presence "playing .." Game
func (*TimeStamps) UnmarshalJSON ¶ added in v0.18.0
func (t *TimeStamps) UnmarshalJSON(b []byte) error
UnmarshalJSON unmarshals JSON into TimeStamps struct
type Timestamp ¶ added in v0.15.0
type Timestamp string
Timestamp stores a timestamp, as sent by the Discord API.
type TooManyRequests ¶ added in v0.13.0
type TooManyRequests struct { Bucket string `json:"bucket"` Message string `json:"message"` RetryAfter time.Duration `json:"retry_after"` }
A TooManyRequests struct holds information received from Discord when receiving a HTTP 429 response.
type TypingStart ¶
type TypingStart struct { UserID string `json:"user_id"` ChannelID string `json:"channel_id"` Timestamp int `json:"timestamp"` }
TypingStart is the data for a TypingStart event.
type UpdateStatusData ¶ added in v0.18.0
type UpdateStatusData struct { IdleSince *int `json:"since"` Game *Game `json:"game"` AFK bool `json:"afk"` Status string `json:"status"` }
UpdateStatusData ia provided to UpdateStatusComplex()
type User ¶
type User struct { ID string `json:"id"` Email string `json:"email"` Username string `json:"username"` Avatar string `json:"avatar"` Discriminator string `json:"discriminator"` Token string `json:"token"` Verified bool `json:"verified"` MFAEnabled bool `json:"mfa_enabled"` Bot bool `json:"bot"` }
A User stores all data for an individual Discord user.
func (*User) AvatarURL ¶ added in v0.17.0
AvatarURL returns a URL to the user's avatar.
size: The size of the user's avatar as a power of two if size is an empty string, no size parameter will be added to the URL.
type UserGuild ¶ added in v0.15.0
type UserGuild struct { ID string `json:"id"` Name string `json:"name"` Icon string `json:"icon"` Owner bool `json:"owner"` Permissions int `json:"permissions"` }
A UserGuild holds a brief version of a Guild
type UserGuildSettings ¶ added in v0.12.0
type UserGuildSettings struct { SupressEveryone bool `json:"suppress_everyone"` Muted bool `json:"muted"` MobilePush bool `json:"mobile_push"` MessageNotifications int `json:"message_notifications"` GuildID string `json:"guild_id"` ChannelOverrides []*UserGuildSettingsChannelOverride `json:"channel_overrides"` }
A UserGuildSettings stores data for a users guild settings.
type UserGuildSettingsChannelOverride ¶ added in v0.12.0
type UserGuildSettingsChannelOverride struct { Muted bool `json:"muted"` MessageNotifications int `json:"message_notifications"` ChannelID string `json:"channel_id"` }
A UserGuildSettingsChannelOverride stores data for a channel override for a users guild settings.
type UserGuildSettingsEdit ¶ added in v0.13.0
type UserGuildSettingsEdit struct { SupressEveryone bool `json:"suppress_everyone"` Muted bool `json:"muted"` MobilePush bool `json:"mobile_push"` MessageNotifications int `json:"message_notifications"` ChannelOverrides map[string]*UserGuildSettingsChannelOverride `json:"channel_overrides"` }
A UserGuildSettingsEdit stores data for editing UserGuildSettings
type UserGuildSettingsUpdate ¶ added in v0.12.0
type UserGuildSettingsUpdate struct {
*UserGuildSettings
}
UserGuildSettingsUpdate is the data for a UserGuildSettingsUpdate event.
type UserNoteUpdate ¶ added in v0.16.0
UserNoteUpdate is the data for a UserNoteUpdate event.
type UserSettingsUpdate ¶ added in v0.11.0
type UserSettingsUpdate map[string]interface{}
UserSettingsUpdate is the data for a UserSettingsUpdate event.
type UserUpdate ¶ added in v0.11.0
type UserUpdate struct {
*User
}
UserUpdate is the data for a UserUpdate event.
type VerificationLevel ¶ added in v0.12.0
type VerificationLevel int
VerificationLevel type definition
const ( VerificationLevelNone VerificationLevel = iota VerificationLevelLow VerificationLevelMedium VerificationLevelHigh )
Constants for VerificationLevel levels from 0 to 3 inclusive
type VoiceConnection ¶ added in v0.12.0
type VoiceConnection struct { sync.RWMutex Debug bool // If true, print extra logging -- DEPRECATED LogLevel int Ready bool // If true, voice is ready to send/receive audio UserID string GuildID string ChannelID string OpusSend chan []byte // Chan for sending opus audio OpusRecv chan *Packet // Chan for receiving opus audio // contains filtered or unexported fields }
A VoiceConnection struct holds all the data and functions related to a Discord Voice Connection.
func (*VoiceConnection) AddHandler ¶ added in v0.12.0
func (v *VoiceConnection) AddHandler(h VoiceSpeakingUpdateHandler)
AddHandler adds a Handler for VoiceSpeakingUpdate events.
func (*VoiceConnection) ChangeChannel ¶ added in v0.12.0
func (v *VoiceConnection) ChangeChannel(channelID string, mute, deaf bool) (err error)
ChangeChannel sends Discord a request to change channels within a Guild !!! NOTE !!! This function may be removed in favour of just using ChannelVoiceJoin
func (*VoiceConnection) Close ¶ added in v0.12.0
func (v *VoiceConnection) Close()
Close closes the voice ws and udp connections
func (*VoiceConnection) Disconnect ¶ added in v0.12.0
func (v *VoiceConnection) Disconnect() (err error)
Disconnect disconnects from this voice channel and closes the websocket and udp connections to Discord. !!! NOTE !!! this function may be removed in favour of ChannelVoiceLeave
func (*VoiceConnection) Speaking ¶ added in v0.12.0
func (v *VoiceConnection) Speaking(b bool) (err error)
Speaking sends a speaking notification to Discord over the voice websocket. This must be sent as true prior to sending audio and should be set to false once finished sending audio.
b : Send true if speaking, false if not.
type VoiceRegion ¶
type VoiceRegion struct { ID string `json:"id"` Name string `json:"name"` Hostname string `json:"sample_hostname"` Port int `json:"sample_port"` }
A VoiceRegion stores data for a specific voice region server.
type VoiceServerUpdate ¶
type VoiceServerUpdate struct { Token string `json:"token"` GuildID string `json:"guild_id"` Endpoint string `json:"endpoint"` }
VoiceServerUpdate is the data for a VoiceServerUpdate event.
type VoiceSpeakingUpdate ¶ added in v0.12.0
type VoiceSpeakingUpdate struct { UserID string `json:"user_id"` SSRC int `json:"ssrc"` Speaking bool `json:"speaking"` }
VoiceSpeakingUpdate is a struct for a VoiceSpeakingUpdate event.
type VoiceSpeakingUpdateHandler ¶ added in v0.12.0
type VoiceSpeakingUpdateHandler func(vc *VoiceConnection, vs *VoiceSpeakingUpdate)
VoiceSpeakingUpdateHandler type provides a function definition for the VoiceSpeakingUpdate event
type VoiceState ¶
type VoiceState struct { UserID string `json:"user_id"` SessionID string `json:"session_id"` ChannelID string `json:"channel_id"` GuildID string `json:"guild_id"` Suppress bool `json:"suppress"` SelfMute bool `json:"self_mute"` SelfDeaf bool `json:"self_deaf"` Mute bool `json:"mute"` Deaf bool `json:"deaf"` }
A VoiceState stores the voice states of Guilds
type VoiceStateUpdate ¶ added in v0.11.0
type VoiceStateUpdate struct {
*VoiceState
}
VoiceStateUpdate is the data for a VoiceStateUpdate event.
type Webhook ¶ added in v0.15.0
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 stores the data for a webhook.
type WebhookParams ¶ added in v0.15.0
type WebhookParams struct { Content string `json:"content,omitempty"` Username string `json:"username,omitempty"` AvatarURL string `json:"avatar_url,omitempty"` TTS bool `json:"tts,omitempty"` File string `json:"file,omitempty"` Embeds []*MessageEmbed `json:"embeds,omitempty"` }
WebhookParams is a struct for webhook params, used in the WebhookExecute command.