mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
Add GuildMember.addRole/addRoles (#615)
* Add GuildMember.addRole/addRoles * Add GuildMember.removeRole/removeRoles
This commit is contained in:
committed by
Amish Shah
parent
e87c9bb9a0
commit
dc7b07022c
File diff suppressed because one or more lines are too long
@@ -307,10 +307,7 @@ class RESTMethods {
|
||||
updateGuildMember(member, data) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (data.channel) data.channel_id = this.rest.client.resolver.resolveChannel(data.channel).id;
|
||||
if (data.roles) {
|
||||
if (data.roles instanceof Collection) data.roles = data.roles.array();
|
||||
data.roles = data.roles.map(role => role instanceof Role ? role.id : role);
|
||||
}
|
||||
if (data.roles) data.roles = data.roles.map(role => role instanceof Role ? role.id : role);
|
||||
|
||||
let endpoint = Constants.Endpoints.guildMember(member.guild.id, member.id);
|
||||
// fix your endpoints, discord ;-;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
const TextBasedChannel = require('./interface/TextBasedChannel');
|
||||
const Role = require('./Role');
|
||||
const Collection = require('../util/Collection');
|
||||
|
||||
/**
|
||||
@@ -164,13 +165,68 @@ class GuildMember {
|
||||
|
||||
/**
|
||||
* Sets the Roles applied to the member.
|
||||
* @param {Collection<string, Role>|Role[]} roles The roles to apply
|
||||
* @param {Collection<string, Role>|Role[]|string[]} roles The roles or role IDs to apply
|
||||
* @returns {Promise<GuildMember>}
|
||||
*/
|
||||
setRoles(roles) {
|
||||
return this.edit({ roles });
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a single Role to the member.
|
||||
* @param {Role|string} role The role or ID of the role to add
|
||||
* @returns {Promise<GuildMember>}
|
||||
*/
|
||||
addRole(role) {
|
||||
return this.addRoles([role]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds multiple roles to the member.
|
||||
* @param {Collection<string, Role>|Role[]|string[]} roles The roles or role IDs to add
|
||||
* @returns {Promise<GuildMember>}
|
||||
*/
|
||||
addRoles(roles) {
|
||||
let allRoles;
|
||||
if (roles instanceof Collection) {
|
||||
allRoles = this._roles.slice();
|
||||
for (const role of roles.values()) allRoles.push(role.id);
|
||||
} else {
|
||||
allRoles = this._roles.concat(roles);
|
||||
}
|
||||
return this.edit({ roles: allRoles });
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a single Role from the member.
|
||||
* @param {Role|string} role The role or ID of the role to remove
|
||||
* @returns {Promise<GuildMember>}
|
||||
*/
|
||||
removeRole(role) {
|
||||
return this.removeRoles([role]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes multiple roles from the member.
|
||||
* @param {Collection<string, Role>|Role[]|string[]} roles The roles or role IDs to remove
|
||||
* @returns {Promise<GuildMember>}
|
||||
*/
|
||||
removeRoles(roles) {
|
||||
const allRoles = this._roles.slice();
|
||||
if (roles instanceof Collection) {
|
||||
for (const role of roles.values()) {
|
||||
const index = allRoles.indexOf(role.id);
|
||||
if (index >= 0) allRoles.splice(index, 1);
|
||||
}
|
||||
} else {
|
||||
for (const role of roles) {
|
||||
const index = allRoles.indexOf(role instanceof Role ? role.id : role);
|
||||
if (index >= 0) allRoles.splice(index, 1);
|
||||
}
|
||||
}
|
||||
return this.edit({ roles: allRoles });
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the nickname for the Guild Member
|
||||
* @param {string} nick The nickname for the Guild Member
|
||||
|
||||
Reference in New Issue
Block a user