support new guild member role endpoints for cleaner role updates (#901)

* support new roles endpoints

* use promise chaining

* properties man

* Update RESTMethods.js

* Update RESTMethods.js

* Update RESTMethods.js

* Update RESTMethods.js
This commit is contained in:
Gus Caplan
2016-12-02 22:46:55 -06:00
committed by Schuyler Cebulskie
parent 8b7ef0c850
commit 638e51a18c
3 changed files with 22 additions and 2 deletions

View File

@@ -328,6 +328,23 @@ class RESTMethods {
); );
} }
addMemberRole(member, role) {
return this.rest.makeRequest('put', Constants.Endpoints.guildMemberRole(member.guild.id, member.id, role.id))
.then(() => {
if (!member._roles.includes(role.id)) member._roles.push(role.id);
return member;
});
}
removeMemberRole(member, role) {
return this.rest.makeRequest('delete', Constants.Endpoints.guildMemberRole(member.guild.id, member.id, role.id))
.then(() => {
const index = member._roles.indexOf(role.id);
if (index >= 0) member._roles.splice(index, 1);
return member;
});
}
sendTyping(channelID) { sendTyping(channelID) {
return this.rest.makeRequest('post', `${Constants.Endpoints.channel(channelID)}/typing`, true); return this.rest.makeRequest('post', `${Constants.Endpoints.channel(channelID)}/typing`, true);
} }

View File

@@ -314,7 +314,8 @@ class GuildMember {
* @returns {Promise<GuildMember>} * @returns {Promise<GuildMember>}
*/ */
addRole(role) { addRole(role) {
return this.addRoles([role]); if (!(role instanceof Role)) role = this.guild.roles.get(role);
return this.client.rest.methods.addMemberRole(this, role);
} }
/** /**
@@ -339,7 +340,8 @@ class GuildMember {
* @returns {Promise<GuildMember>} * @returns {Promise<GuildMember>}
*/ */
removeRole(role) { removeRole(role) {
return this.removeRoles([role]); if (!(role instanceof Role)) role = this.guild.roles.get(role);
return this.client.rest.methods.removeMemberRole(this, role);
} }
/** /**

View File

@@ -106,6 +106,7 @@ const Endpoints = exports.Endpoints = {
guildIntegrations: (guildID) => `${Endpoints.guild(guildID)}/integrations`, guildIntegrations: (guildID) => `${Endpoints.guild(guildID)}/integrations`,
guildMembers: (guildID) => `${Endpoints.guild(guildID)}/members`, guildMembers: (guildID) => `${Endpoints.guild(guildID)}/members`,
guildMember: (guildID, memberID) => `${Endpoints.guildMembers(guildID)}/${memberID}`, guildMember: (guildID, memberID) => `${Endpoints.guildMembers(guildID)}/${memberID}`,
guildMemberRole: (guildID, memberID, roleID) => `${Endpoints.guildMember(guildID, memberID)}/roles/${roleID}}`,
stupidInconsistentGuildEndpoint: (guildID) => `${Endpoints.guildMember(guildID, '@me')}/nick`, stupidInconsistentGuildEndpoint: (guildID) => `${Endpoints.guildMember(guildID, '@me')}/nick`,
guildChannels: (guildID) => `${Endpoints.guild(guildID)}/channels`, guildChannels: (guildID) => `${Endpoints.guild(guildID)}/channels`,
guildEmojis: (guildID) => `${Endpoints.guild(guildID)}/emojis`, guildEmojis: (guildID) => `${Endpoints.guild(guildID)}/emojis`,