From c3c6c1b6c212503a92b5d02adfa2a814ed700e1e Mon Sep 17 00:00:00 2001 From: Adam Jarvis Date: Mon, 4 Apr 2022 23:33:27 +0100 Subject: [PATCH] Payload for member edit (#1122) * Create payload for Guild Member Edit * Update rest API usage with new payload * Update comment with ref to discord API * Change data to pointer instead * Change struct to just nick and roles * Review comments * feat(rest#GuildMemberEditComplex): return updated member and cosmetic changes * feat(structs): renamed GuildMemberEditData to GuildMemberParams * style(structs#GuildMemberParams): fix spacing * fix(rest#GuildMemberEditComplex): use GuildMemberParams instead of GuildMemberEditData Co-authored-by: nitroflap --- restapi.go | 15 +++++++++++++++ structs.go | 9 +++++++++ 2 files changed, 24 insertions(+) diff --git a/restapi.go b/restapi.go index 90ebd0c..3e5e84e 100644 --- a/restapi.go +++ b/restapi.go @@ -798,6 +798,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 b20a490..ab79af6 100644 --- a/structs.go +++ b/structs.go @@ -1581,6 +1581,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"`