Merge remote-tracking branch 'bwmarrin/develop' into develop
This commit is contained in:
commit
663abba05e
4 changed files with 56 additions and 2 deletions
|
@ -30,6 +30,7 @@ var eventToInterface = map[string]interface{}{
|
|||
"GUILD_ROLE_DELETE": GuildRoleDelete{},
|
||||
"GUILD_INTEGRATIONS_UPDATE": GuildIntegrationsUpdate{},
|
||||
"GUILD_EMOJIS_UPDATE": GuildEmojisUpdate{},
|
||||
"GUILD_MEMBERS_CHUNK": GuildMembersChunk{},
|
||||
"MESSAGE_ACK": MessageAck{},
|
||||
"MESSAGE_CREATE": MessageCreate{},
|
||||
"MESSAGE_UPDATE": MessageUpdate{},
|
||||
|
|
|
@ -362,8 +362,8 @@ func (s *Session) UserChannelCreate(recipientID string) (st *Channel, err error)
|
|||
return
|
||||
}
|
||||
|
||||
// UserGuilds returns an array of Guild structures for all guilds.
|
||||
func (s *Session) UserGuilds() (st []*Guild, err error) {
|
||||
// UserGuilds returns an array of UserGuild structures for all guilds.
|
||||
func (s *Session) UserGuilds() (st []*UserGuild, err error) {
|
||||
|
||||
body, err := s.Request("GET", EndpointUserGuilds("@me"), nil)
|
||||
if err != nil {
|
||||
|
|
15
structs.go
15
structs.go
|
@ -223,6 +223,15 @@ type Guild struct {
|
|||
Unavailable bool `json:"unavailable"`
|
||||
}
|
||||
|
||||
// A UserGuild holds a brief version of a Guild
|
||||
type UserGuild struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Icon string `json:"icon"`
|
||||
Owner bool `json:"owner"`
|
||||
Permissions int `json:"permissions"`
|
||||
}
|
||||
|
||||
// A GuildParams stores all the data needed to update discord guild settings
|
||||
type GuildParams struct {
|
||||
Name string `json:"name"`
|
||||
|
@ -415,6 +424,12 @@ type GuildEmojisUpdate struct {
|
|||
Emojis []*Emoji `json:"emojis"`
|
||||
}
|
||||
|
||||
// A GuildMembersChunk stores data for the Guild Members Chunk websocket event.
|
||||
type GuildMembersChunk struct {
|
||||
GuildID string `json:"guild_id"`
|
||||
Members []*Member `json:"members"`
|
||||
}
|
||||
|
||||
// A GuildIntegration stores data for a guild integration.
|
||||
type GuildIntegration struct {
|
||||
ID string `json:"id"`
|
||||
|
|
38
wsapi.go
38
wsapi.go
|
@ -280,6 +280,44 @@ func (s *Session) UpdateStatus(idle int, game string) (err error) {
|
|||
return s.UpdateStreamingStatus(idle, game, "")
|
||||
}
|
||||
|
||||
type requestGuildMembersData struct {
|
||||
GuildID string `json:"guild_id"`
|
||||
Query string `json:"query"`
|
||||
Limit int `json:"limit"`
|
||||
}
|
||||
|
||||
type requestGuildMembersOp struct {
|
||||
Op int `json:"op"`
|
||||
Data requestGuildMembersData `json:"d"`
|
||||
}
|
||||
|
||||
// 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 (s *Session) RequestGuildMembers(guildID, query string, limit int) (err error) {
|
||||
s.log(LogInformational, "called")
|
||||
|
||||
s.RLock()
|
||||
defer s.RUnlock()
|
||||
if s.wsConn == nil {
|
||||
return errors.New("no websocket connection exists")
|
||||
}
|
||||
|
||||
data := requestGuildMembersData{
|
||||
GuildID: guildID,
|
||||
Query: query,
|
||||
Limit: limit,
|
||||
}
|
||||
|
||||
s.wsMutex.Lock()
|
||||
err = s.wsConn.WriteJSON(requestGuildMembersOp{8, data})
|
||||
s.wsMutex.Unlock()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// onEvent is the "event handler" for all messages received on the
|
||||
// Discord Gateway API websocket connection.
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue