Documentation ¶
Overview ¶
Package discordgo provides Discord binding for Go
Index ¶
- Constants
- Variables
- type Application
- type Attachment
- type Channel
- type ChannelCreate
- type ChannelDelete
- type ChannelUpdate
- type Connect
- type Disconnect
- type Embed
- type Emoji
- type Event
- type Game
- type Guild
- type GuildBan
- type GuildBanAdd
- type GuildBanRemove
- type GuildCreate
- type GuildDelete
- type GuildEmojisUpdate
- type GuildIntegrationsUpdate
- type GuildMemberAdd
- type GuildMemberRemove
- type GuildMemberUpdate
- type GuildParams
- type GuildRole
- type GuildRoleCreate
- type GuildRoleDelete
- type GuildRoleUpdate
- type GuildUpdate
- type ICEServer
- type Invite
- type Member
- type Message
- type MessageAck
- type MessageCreate
- type MessageDelete
- type MessageUpdate
- type Packet
- type PermissionOverwrite
- type Presence
- type PresenceUpdate
- type PresencesReplace
- type RateLimit
- type ReadState
- type Ready
- type Role
- type Session
- func (s *Session) AddHandler(handler interface{}) func()
- func (s *Session) Application(appID string) (st *Application, err error)
- func (s *Session) ApplicationBotCreate(appID, token 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) (st *Channel, err error)
- func (s *Session) ChannelFileSend(channelID, name string, r io.Reader) (st *Message, err 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) ChannelMessageAck(channelID, messageID string) (err error)
- func (s *Session) ChannelMessageDelete(channelID, messageID string) (err error)
- func (s *Session) ChannelMessageEdit(channelID, messageID, content string) (st *Message, err error)
- func (s *Session) ChannelMessageSend(channelID string, content string) (st *Message, err error)
- func (s *Session) ChannelMessageSendTTS(channelID string, content string) (st *Message, err error)
- func (s *Session) ChannelMessages(channelID string, limit int, beforeID, afterID 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) Close() (err error)
- func (s *Session) Gateway() (gateway string, 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) GuildBanDelete(guildID, userID string) (err error)
- func (s *Session) GuildBans(guildID string) (st []*User, 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) 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) GuildIcon(guildID string) (img image.Image, 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) GuildMemberEdit(guildID, userID string, roles []string) (err error)
- func (s *Session) GuildMemberMove(guildID, userID, channelID string) (err error)
- func (s *Session) GuildMembers(guildID string, offset, limit int) (st []*Member, 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) (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) 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) Open() (err error)
- func (s *Session) Register(username string) (token string, err error)
- func (s *Session) Request(method, urlStr string, data interface{}) (response []byte, err error)
- func (s *Session) UpdateStatus(idle int, game 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) 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) UserGuilds() (st []*Guild, 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) VoiceICE() (st *VoiceICE, err error)
- func (s *Session) VoiceRegions() (st []*VoiceRegion, 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) OnReady(r *Ready) error
- func (s *State) PrivateChannel(channelID string) (*Channel, error)
- type TypingStart
- type User
- type UserGuildSettings
- type UserGuildSettingsChannelOverride
- type UserGuildSettingsUpdate
- type UserSettingsUpdate
- type UserUpdate
- type VerificationLevel
- type VoiceConnection
- type VoiceICE
- type VoiceRegion
- type VoiceServerUpdate
- type VoiceSpeakingUpdate
- type VoiceSpeakingUpdateHandler
- type VoiceState
- type VoiceStateUpdate
Examples ¶
Constants ¶
const ( PermissionReadMessages = 1 << (iota + 10) PermissionSendMessages PermissionSendTTSMessages PermissionManageMessages PermissionEmbedLinks PermissionAttachFiles PermissionReadMessageHistory PermissionMentionEveryone )
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 ( PermissionCreateInstantInvite = 1 << iota PermissionKickMembers PermissionBanMembers PermissionManageRoles PermissionManageChannels PermissionManageServer PermissionAllText = PermissionReadMessages | PermissionSendMessages | PermissionSendTTSMessages | PermissionManageMessages | PermissionEmbedLinks | PermissionAttachFiles | PermissionReadMessageHistory | PermissionMentionEveryone PermissionAllVoice = PermissionVoiceConnect | PermissionVoiceSpeak | PermissionVoiceMuteMembers | PermissionVoiceDeafenMembers | PermissionVoiceMoveMembers | PermissionVoiceUseVAD PermissionAllChannel = PermissionAllText | PermissionAllVoice | PermissionCreateInstantInvite | PermissionManageRoles | PermissionManageChannels PermissionAll = PermissionAllChannel | PermissionKickMembers | PermissionBanMembers | PermissionManageServer )
Constants for the different bit offsets of general permissions
const VERSION = "0.12.0"
VERSION of Discordgo, follows Symantic Versioning. (http://semver.org/)
Variables ¶
var ( STATUS = "https://status.discordapp.com/api/v2/" SM = STATUS + "scheduled-maintenances/" SM_ACTIVE = SM + "active.json" SM_UPCOMING = SM + "upcoming.json" DISCORD = "https://discordapp.com" // TODO consider removing API = DISCORD + "/api/" GUILDS = API + "guilds/" CHANNELS = API + "channels/" USERS = API + "users/" GATEWAY = API + "gateway" AUTH = API + "auth/" LOGIN = AUTH + "login" LOGOUT = AUTH + "logout" VERIFY = AUTH + "verify" VERIFY_RESEND = AUTH + "verify/resend" FORGOT_PASSWORD = AUTH + "forgot" RESET_PASSWORD = AUTH + "reset" REGISTER = AUTH + "register" VOICE = API + "/voice/" VOICE_REGIONS = VOICE + "regions" VOICE_ICE = VOICE + "ice" TUTORIAL = API + "tutorial/" TUTORIAL_INDICATORS = TUTORIAL + "indicators" TRACK = API + "track" SSO = API + "sso" REPORT = API + "report" INTEGRATIONS = API + "integrations" USER = func(uID string) string { return USERS + uID } USER_AVATAR = func(uID, aID string) string { return USERS + uID + "/avatars/" + aID + ".jpg" } USER_SETTINGS = func(uID string) string { return USERS + uID + "/settings" } USER_GUILDS = func(uID string) string { return USERS + uID + "/guilds" } USER_GUILD = func(uID, gID string) string { return USERS + uID + "/guilds/" + gID } USER_CHANNELS = func(uID string) string { return USERS + uID + "/channels" } USER_DEVICES = func(uID string) string { return USERS + uID + "/devices" } USER_CONNECTIONS = func(uID string) string { return USERS + uID + "/connections" } GUILD = func(gID string) string { return GUILDS + gID } GUILD_INIVTES = func(gID string) string { return GUILDS + gID + "/invites" } GUILD_CHANNELS = func(gID string) string { return GUILDS + gID + "/channels" } GUILD_MEMBERS = func(gID string) string { return GUILDS + gID + "/members" } GUILD_MEMBER = func(gID, uID string) string { return GUILDS + gID + "/members/" + uID } GUILD_BANS = func(gID string) string { return GUILDS + gID + "/bans" } GUILD_BAN = func(gID, uID string) string { return GUILDS + gID + "/bans/" + uID } GUILD_INTEGRATIONS = func(gID string) string { return GUILDS + gID + "/integrations" } GUILD_ROLES = func(gID string) string { return GUILDS + gID + "/roles" } GUILD_ROLE = func(gID, rID string) string { return GUILDS + gID + "/roles/" + rID } GUILD_INVITES = func(gID string) string { return GUILDS + gID + "/invites" } GUILD_EMBED = func(gID string) string { return GUILDS + gID + "/embed" } GUILD_PRUNE = func(gID string) string { return GUILDS + gID + "/prune" } GUILD_ICON = func(gID, hash string) string { return GUILDS + gID + "/icons/" + hash + ".jpg" } GUILD_SPLASH = func(gID, hash string) string { return GUILDS + gID + "/splashes/" + hash + ".jpg" } CHANNEL = func(cID string) string { return CHANNELS + cID } CHANNEL_PERMISSIONS = func(cID string) string { return CHANNELS + cID + "/permissions" } CHANNEL_PERMISSION = func(cID, tID string) string { return CHANNELS + cID + "/permissions/" + tID } CHANNEL_INVITES = func(cID string) string { return CHANNELS + cID + "/invites" } CHANNEL_TYPING = func(cID string) string { return CHANNELS + cID + "/typing" } CHANNEL_MESSAGES = func(cID string) string { return CHANNELS + cID + "/messages" } CHANNEL_MESSAGE = func(cID, mID string) string { return CHANNELS + cID + "/messages/" + mID } CHANNEL_MESSAGE_ACK = func(cID, mID string) string { return CHANNELS + cID + "/messages/" + mID + "/ack" } INVITE = func(iID string) string { return API + "invite/" + iID } INTEGRATIONS_JOIN = func(iID string) string { return API + "integrations/" + iID + "/join" } EMOJI = func(eID string) string { return API + "emojis/" + eID + ".png" } OAUTH2 = API + "oauth2/" APPLICATIONS = OAUTH2 + "applications" APPLICATION = func(aID string) string { return APPLICATIONS + "/" + aID } APPLICATIONS_BOT = func(aID string) string { return APPLICATIONS + "/" + aID + "/bot" } )
Known Discord API Endpoints.
var ErrJSONUnmarshal = errors.New("json unmarshal")
ErrJSONUnmarshal is returned for JSON Unmarshall errors.
var ErrNilState = errors.New("State not instantiated, please use discordgo.New() or assign Session.State.")
ErrNilState is returned when the state is nil.
Functions ¶
This section is empty.
Types ¶
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"` }
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("DG_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 Attachment ¶
type Attachment 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"` }
An Attachment stores data for message attachments.
type Channel ¶
type Channel struct { ID string `json:"id"` GuildID string `json:"guild_id"` Name string `json:"name"` Topic string `json:"topic"` Type string `json:"type"` LastMessageID string `json:"last_message_id"` Position int `json:"position"` Bitrate int `json:"bitrate"` IsPrivate bool `json:"is_private"` Recipient *User `json:"recipient"` Messages []*Message `json:"-"` PermissionOverwrites []*PermissionOverwrite `json:"permission_overwrites"` }
A Channel holds all data related to an individual Discord channel.
type ChannelCreate ¶ added in v0.11.0
type ChannelCreate struct {
*Channel
}
ChannelCreate is a wrapper struct for an event.
type ChannelDelete ¶ added in v0.11.0
type ChannelDelete struct {
*Channel
}
ChannelDelete is a wrapper struct for an event.
type ChannelUpdate ¶ added in v0.11.0
type ChannelUpdate struct {
*Channel
}
ChannelUpdate is a wrapper struct for an event.
type Disconnect ¶ added in v0.11.0
type Disconnect struct{}
Disconnect is an empty struct for an event.
type Embed ¶
type Embed struct { URL string `json:"url"` Type string `json:"type"` Title string `json:"title"` Description string `json:"description"` Thumbnail *struct { URL string `json:"url"` ProxyURL string `json:"proxy_url"` Width int `json:"width"` Height int `json:"height"` } `json:"thumbnail"` Provider *struct { URL string `json:"url"` Name string `json:"name"` } `json:"provider"` Author *struct { URL string `json:"url"` Name string `json:"name"` } `json:"author"` Video *struct { URL string `json:"url"` Width int `json:"width"` Height int `json:"height"` } `json:"video"` }
An Embed stores data for message embeds.
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"` }
Emoji struct holds data related to Emoji's
type Event ¶
type Event struct { Type string `json:"t"` State int `json:"s"` Operation int `json:"op"` Direction int `json:"dir"` RawData json.RawMessage `json:"d"` Struct interface{} `json:"-"` }
An Event provides a basic initial struct for all websocket event.
type Game ¶ added in v0.7.0
type Game struct {
Name string `json:"name"`
}
A Game struct holds the name of the "playing .." game for a user
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 string `json:"joined_at"` // make this a timestamp Splash string `json:"splash"` AfkTimeout int `json:"afk_timeout"` VerificationLevel VerificationLevel `json:"verification_level"` EmbedEnabled bool `json:"embed_enabled"` Large bool `json:"large"` // ?? 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
type GuildBanAdd struct {
*GuildBan
}
GuildBanAdd is a wrapper struct for an event.
type GuildBanRemove ¶ added in v0.11.0
type GuildBanRemove struct {
*GuildBan
}
GuildBanRemove is a wrapper struct for an event.
type GuildCreate ¶ added in v0.11.0
type GuildCreate struct {
*Guild
}
GuildCreate is a wrapper struct for an event.
type GuildDelete ¶ added in v0.11.0
type GuildDelete struct {
*Guild
}
GuildDelete is a wrapper struct for an event.
type GuildEmojisUpdate ¶ added in v0.8.0
A GuildEmojisUpdate stores data for a guild emoji update event.
type GuildIntegrationsUpdate ¶
type GuildIntegrationsUpdate struct {
GuildID string `json:"guild_id"`
}
A GuildIntegrationsUpdate stores data for the guild integrations update websocket event.
type GuildMemberAdd ¶ added in v0.11.0
type GuildMemberAdd struct {
*Member
}
GuildMemberAdd is a wrapper struct for an event.
type GuildMemberRemove ¶ added in v0.11.0
type GuildMemberRemove struct {
*Member
}
GuildMemberRemove is a wrapper struct for an event.
type GuildMemberUpdate ¶ added in v0.11.0
type GuildMemberUpdate struct {
*Member
}
GuildMemberUpdate is a wrapper struct for an event.
type GuildParams ¶ added in v0.12.0
type GuildParams struct { Name string `json:"name"` Region string `json:"region"` VerificationLevel *VerificationLevel `json:"verification_level"` }
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 a wrapper struct for an event.
type GuildRoleDelete ¶
A GuildRoleDelete stores data for the guild role delete websocket event.
type GuildRoleUpdate ¶ added in v0.11.0
type GuildRoleUpdate struct {
*GuildRole
}
GuildRoleUpdate is a wrapper struct for an event.
type GuildUpdate ¶ added in v0.11.0
type GuildUpdate struct {
*Guild
}
GuildUpdate is a wrapper struct for an 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 string `json:"created_at"` // TODO make timestamp MaxAge int `json:"max_age"` Uses int `json:"uses"` MaxUses int `json:"max_uses"` XkcdPass bool `json:"xkcdpass"` Revoked bool `json:"revoked"` Temporary bool `json:"temporary"` }
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"` 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 string `json:"timestamp"` EditedTimestamp string `json:"edited_timestamp"` Tts bool `json:"tts"` MentionEveryone bool `json:"mention_everyone"` Author *User `json:"author"` Attachments []*Attachment `json:"attachments"` Embeds []*Embed `json:"embeds"` Mentions []*User `json:"mentions"` }
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"` }
A MessageAck stores data for the message ack websocket event.
type MessageCreate ¶ added in v0.11.0
type MessageCreate struct {
*Message
}
MessageCreate is a wrapper struct for an event.
type MessageDelete ¶
type MessageDelete struct {
*Message
}
MessageDelete is a wrapper struct for an event.
type MessageUpdate ¶ added in v0.11.0
type MessageUpdate struct {
*Message
}
MessageUpdate is a wrapper struct for an 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 string `json:"status"` Game *Game `json:"game"` }
A Presence stores the online, offline, or idle and game status of Guild members.
type PresenceUpdate ¶
type PresenceUpdate struct { Status string `json:"status"` GuildID string `json:"guild_id"` Roles []string `json:"roles"` User *User `json:"user"` Game *Game `json:"game"` }
A PresenceUpdate stores data for the presence update websocket event.
type PresencesReplace ¶ added in v0.12.0
type PresencesReplace []*Presence
PresencesReplace is an array of Presences for an event.
type RateLimit ¶ added in v0.9.0
type RateLimit struct { Bucket string `json:"bucket"` Message string `json:"message"` RetryAfter time.Duration `json:"retry_after"` }
A RateLimit struct holds information related to a specific rate limit.
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"` HeartbeatInterval time.Duration `json:"heartbeat_interval"` User *User `json:"user"` ReadState []*ReadState `json:"read_state"` PrivateChannels []*Channel `json:"private_channels"` Guilds []*Guild `json:"guilds"` }
A Ready stores all data for the websocket READY event.
type Role ¶
type Role struct { ID string `json:"id"` Name string `json:"name"` Managed bool `json:"managed"` 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 // Debug for printing JSON request/responses Debug bool // Should the session reconnect the websocket on errors. ShouldReconnectOnError bool // Should the session request compressed websocket data. Compress bool // 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 the Data Websocket is ready DataReady bool // Whether the Voice Websocket is ready VoiceReady bool // Whether the UDP Connection is ready UDPReady bool // 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 // 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. 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.
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 interface fires. eventToInterface in events.go has a list of all the Discord WSAPI events and their respective interface. 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) 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 token : The authentication Token for a user account to convert into a bot account. This is optional, if omited a new account is created using the name of the 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 strucutre 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) ChannelFileSend ¶ added in v0.11.0
ChannelFileSend sends a file to the given channel. channelID : The ID of a Channel. 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, Temporary,
and XkcdPass defined.
func (*Session) ChannelInvites ¶
ChannelInvites returns an array of Invite structures for the given channel channelID : The ID of a Channel
func (*Session) ChannelMessageAck ¶
ChannelMessageAck acknowledges and marks the given message as read channeld : The ID of a Channel messageID : the ID of a Message
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. channeld : 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) 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) ChannelMessages ¶
func (s *Session) ChannelMessages(channelID string, limit int, beforeID, afterID 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.
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) Close ¶
Close closes a websocket and stops all listening/heartbeat goroutines. TODO: Add support for Voice WS/UDP connections
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) 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) 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) GuildIcon ¶ added in v0.10.0
GuildIcon returns an image.Image of a guild icon. 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) 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) GuildMembers ¶
GuildMembers returns a list of members for a guild.
guildID : The ID of a Guild. offset : A number of members to skip limit : max number of members to return (max 1000)
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) (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.
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) Invite ¶
Invite returns an Invite structure of the given invite inviteID : The invite code (or maybe xkcdpass?)
func (*Session) InviteAccept ¶
InviteAccept accepts an Invite to a Guild or Channel inviteID : The invite code (or maybe xkcdpass?)
func (*Session) InviteDelete ¶
InviteDelete deletes an existing invite inviteID : the code (or maybe xkcdpass?) of an invite
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) 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) Request ¶
Request makes a (GET/POST/...) Requests to Discord REST API with JSON data. All the other Discord REST Calls in this file use this function.
func (*Session) UpdateStatus ¶
UpdateStatus is used to update the authenticated user's status. If idle>0 then set status to idle. If game>0 then set game. 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 returns an image.Image of a users Avatar. userID : A user ID or "@me" which is a shortcut of current user ID
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.
func (*Session) UserChannels ¶
UserChannels returns an array of Channel structures for all private channels.
func (*Session) UserGuilds ¶
UserGuilds returns an array of Guild structures for all guilds.
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) VoiceRegions ¶
func (s *Session) VoiceRegions() (st []*VoiceRegion, err error)
VoiceRegions returns the voice server regions
type Settings ¶
type Settings struct { RenderEmbeds bool `json:"render_embeds"` InlineEmbedMedia bool `json:"inline_embed_media"` EnableTtsCommand bool `json:"enable_tts_command"` MessageDisplayCompact bool `json:"message_display_compact"` ShowCurrentGame bool `json:"show_current_game"` Locale string `json:"locale"` Theme string `json:"theme"` MutedChannels []string `json:"muted_channels"` }
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 // 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 an private channels.
func (*State) ChannelAdd ¶ added in v0.8.0
ChannelAdd adds a guild 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.
type TypingStart ¶
type TypingStart struct { UserID string `json:"user_id"` ChannelID string `json:"channel_id"` Timestamp int `json:"timestamp"` }
A TypingStart stores data for the typing start websocket event.
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"` Bot bool `json:"bot"` }
A User stores all data for an individual Discord user.
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 UserGuildSettingsUpdate ¶ added in v0.12.0
type UserGuildSettingsUpdate struct {
*UserGuildSettings
}
UserGuildSettingsUpdate is a map for an event.
type UserSettingsUpdate ¶ added in v0.11.0
type UserSettingsUpdate map[string]interface{}
UserSettingsUpdate is a map for an event.
type UserUpdate ¶ added in v0.11.0
type UserUpdate struct {
*User
}
UserUpdate is a wrapper struct for an event.
type VerificationLevel ¶ added in v0.12.0
type VerificationLevel int
VerificationLevel type defination
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.Mutex Debug bool // If true, print extra logging Ready bool // If true, voice is ready to send/receive audio GuildID string ChannelID string UserID 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"` }
A VoiceServerUpdate stores the data received during the Voice Server Update data websocket event. This data is used during the initial Voice Channel join handshaking.
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 defination 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 a wrapper struct for an event.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
examples
|
|
api_basic
This file provides a basic "quick start" example of using the Discordgo package to connect to Discord using the low level API functions.
|
This file provides a basic "quick start" example of using the Discordgo package to connect to Discord using the low level API functions. |
new_basic
This file provides a basic "quick start" example of using the Discordgo package to connect to Discord using the New() helper function.
|
This file provides a basic "quick start" example of using the Discordgo package to connect to Discord using the New() helper function. |