forked from pothtonswer/discordmuffin
Added RequestGuildMembers to request guild members from the gateway
This commit is contained in:
parent
bbbc21db6b
commit
9c7c9d3fd2
3 changed files with 45 additions and 0 deletions
|
@ -30,6 +30,7 @@ var eventToInterface = map[string]interface{}{
|
||||||
"GUILD_ROLE_DELETE": GuildRoleDelete{},
|
"GUILD_ROLE_DELETE": GuildRoleDelete{},
|
||||||
"GUILD_INTEGRATIONS_UPDATE": GuildIntegrationsUpdate{},
|
"GUILD_INTEGRATIONS_UPDATE": GuildIntegrationsUpdate{},
|
||||||
"GUILD_EMOJIS_UPDATE": GuildEmojisUpdate{},
|
"GUILD_EMOJIS_UPDATE": GuildEmojisUpdate{},
|
||||||
|
"GUILD_MEMBERS_CHUNK": GuildMembersChunk{},
|
||||||
"MESSAGE_ACK": MessageAck{},
|
"MESSAGE_ACK": MessageAck{},
|
||||||
"MESSAGE_CREATE": MessageCreate{},
|
"MESSAGE_CREATE": MessageCreate{},
|
||||||
"MESSAGE_UPDATE": MessageUpdate{},
|
"MESSAGE_UPDATE": MessageUpdate{},
|
||||||
|
|
|
@ -412,6 +412,12 @@ type GuildEmojisUpdate struct {
|
||||||
Emojis []*Emoji `json:"emojis"`
|
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.
|
// A GuildIntegration stores data for a guild integration.
|
||||||
type GuildIntegration struct {
|
type GuildIntegration struct {
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
|
|
38
wsapi.go
38
wsapi.go
|
@ -269,6 +269,44 @@ func (s *Session) UpdateStatus(idle int, game string) (err error) {
|
||||||
return s.UpdateStreamingStatus(idle, game, "")
|
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 hat username sarts with, leave empty to return all members
|
||||||
|
// limit : max number of items to return, or 0 o reques 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
|
// onEvent is the "event handler" for all messages received on the
|
||||||
// Discord Gateway API websocket connection.
|
// Discord Gateway API websocket connection.
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue