diff --git a/restapi.go b/restapi.go index 41796fe23..158b74ca1 100644 --- a/restapi.go +++ b/restapi.go @@ -710,6 +710,21 @@ func (s *Session) GuildMemberEdit(guildID, userID string, roles []string) (err e return } +// GuildMemberEditComplex edits the nickname and roles of a member. +// guildID : The ID of a Guild. +// userID : The ID of a User. +// data : A GuildMemberEditData struct with the new nickname and roles +func (s *Session) GuildMemberEditComplex(guildID, userID string, data GuildMemberParams) (st *Member, err error) { + var body []byte + body, err = s.RequestWithBucketID("PATCH", EndpointGuildMember(guildID, userID), data, EndpointGuildMember(guildID, "")) + if err != nil { + return nil, err + } + + err = unmarshal(body, &st) + return +} + // GuildMemberMove moves a guild member from one voice channel to another/none // guildID : The ID of a Guild. // userID : The ID of a User. diff --git a/structs.go b/structs.go index 3a92c9fd8..2983c1e11 100644 --- a/structs.go +++ b/structs.go @@ -1566,6 +1566,15 @@ type UserGuildSettingsEdit struct { ChannelOverrides map[string]*UserGuildSettingsChannelOverride `json:"channel_overrides"` } +// GuildMemberParams stores data needed to update a member +// https://discord.com/developers/docs/resources/guild#modify-guild-member +type GuildMemberParams struct { + // Value to set user's nickname to + Nick string `json:"nick,omitempty"` + // Array of role ids the member is assigned + Roles *[]string `json:"roles,omitempty"` +} + // An APIErrorMessage is an api error message returned from discord type APIErrorMessage struct { Code int `json:"code"`