Skip to content

Commit

Permalink
Added support for adding users to guild 2 (#1179)
Browse files Browse the repository at this point in the history
* Added support for adding users to guild

added RESTMethods#AddGuildMemberOptions and Guild#addMember with typedef
AddGuildMemberOptions to be able to add user to guild as a member
through `PUT/guilds/{guild.id}/members/{user.id}`
https://discordapp.com/developers/docs/resources/guild#add-guild-member

* fixing lint errors

* Changes based on discussion

* Changes based on discussion 2

* Changes based on discussion 3

Yay! More changes.
  • Loading branch information
MikeKovarik authored and amishshah committed Feb 8, 2017
1 parent 2518a0f commit dd6dd6f
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/client/rest/RESTMethods.js
Expand Up @@ -377,6 +377,22 @@ class RESTMethods {
return this.rest.makeRequest('get', Constants.Endpoints.channelMessage(channel.id, messageID), true);
}

putGuildMember(guild, user, options) {
if (options.roles) {
var roles = options.roles;
if (roles instanceof Collection || (roles instanceof Array && roles[0] instanceof Role)) {
options.roles = roles.map(role => role.id);
}
}
if (options.accessToken) {
options.access_token = options.accessToken;
} else {
return Promise.reject(new Error('OAuth2 access token was not specified.'));
}
return this.rest.makeRequest('put', Constants.Endpoints.guildMember(guild.id, user.id), true, options)
.then(data => this.client.actions.GuildMemberGet.handle(guild, data).member);
}

getGuildMember(guild, user, cache) {
return this.rest.makeRequest('get', Constants.Endpoints.guildMember(guild.id, user.id), true).then(data => {
if (cache) {
Expand Down
22 changes: 22 additions & 0 deletions src/structures/Guild.js
Expand Up @@ -331,6 +331,28 @@ class Guild {
return this.client.rest.methods.fetchVoiceRegions(this.id);
}

/**
* The data for a role
* @typedef {Object} AddGuildMemberOptions
* @property {string} accessToken An oauth2 access token granted with the guilds.join to the bot's application
* for the user you want to add to the guild
* @property {string} [nick] Value to set users nickname to
* @property {Collection<Snowflake, Role>|Role[]|string[]} [roles] The roles or role IDs to add
* @property {boolean} [mute] If the user is muted
* @property {boolean} [deaf] If the user is deafened
*/

/**
* Add a user to this guild using OAuth2
* @param {UserResolvable|string} user The user or ID of the user to add to guild
* @param {AddGuildMemberOptions} options Options object containing the access_token
* @returns {Promise<GuildMember>}
*/
addMember(user, options) {
if (this.members.has(user.id)) return Promise.resolve(this.members.get(user.id));
return this.client.rest.methods.putGuildMember(this, user, options);
}

/**
* Fetch a single guild member from a user.
* @param {UserResolvable} user The user to fetch the member for
Expand Down

0 comments on commit dd6dd6f

Please sign in to comment.