mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-17 03:53:29 +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) {
|
updateGuildMember(member, data) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if (data.channel) data.channel_id = this.rest.client.resolver.resolveChannel(data.channel).id;
|
if (data.channel) data.channel_id = this.rest.client.resolver.resolveChannel(data.channel).id;
|
||||||
if (data.roles) {
|
if (data.roles) data.roles = data.roles.map(role => role instanceof Role ? role.id : role);
|
||||||
if (data.roles instanceof Collection) data.roles = data.roles.array();
|
|
||||||
data.roles = data.roles.map(role => role instanceof Role ? role.id : role);
|
|
||||||
}
|
|
||||||
|
|
||||||
let endpoint = Constants.Endpoints.guildMember(member.guild.id, member.id);
|
let endpoint = Constants.Endpoints.guildMember(member.guild.id, member.id);
|
||||||
// fix your endpoints, discord ;-;
|
// fix your endpoints, discord ;-;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
const TextBasedChannel = require('./interface/TextBasedChannel');
|
const TextBasedChannel = require('./interface/TextBasedChannel');
|
||||||
|
const Role = require('./Role');
|
||||||
const Collection = require('../util/Collection');
|
const Collection = require('../util/Collection');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -164,13 +165,68 @@ class GuildMember {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the Roles applied to the member.
|
* 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>}
|
* @returns {Promise<GuildMember>}
|
||||||
*/
|
*/
|
||||||
setRoles(roles) {
|
setRoles(roles) {
|
||||||
return this.edit({ 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
|
* Set the nickname for the Guild Member
|
||||||
* @param {string} nick The nickname for the Guild Member
|
* @param {string} nick The nickname for the Guild Member
|
||||||
|
|||||||
Reference in New Issue
Block a user