mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-10 00:23:30 +01:00
Add guild member nickname setting n stuff
This commit is contained in:
@@ -15,5 +15,6 @@ module.exports = {
|
||||
"consistent-return": 0,
|
||||
"import/no-extraneous-dependencies": 0,
|
||||
"no-continue": 0,
|
||||
"no-confusing-arrow" : 0
|
||||
}
|
||||
};
|
||||
File diff suppressed because one or more lines are too long
@@ -1,8 +1,10 @@
|
||||
const Constants = require('../../util/Constants');
|
||||
const Collection = require('../../util/Constants');
|
||||
|
||||
const getStructure = name => require(`../../structures/${name}`);
|
||||
const User = getStructure('User');
|
||||
const GuildMember = getStructure('GuildMember');
|
||||
const Role = getStructure('Role');
|
||||
|
||||
class RESTMethods {
|
||||
constructor(restManager) {
|
||||
@@ -341,6 +343,31 @@ class RESTMethods {
|
||||
});
|
||||
}
|
||||
|
||||
updateGuildMember(member, data) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (data.channel) {
|
||||
data.channel_id = this.client.resolver.resolveChannel(data.channel).id;
|
||||
}
|
||||
if (data.roles) {
|
||||
if (data.roles instanceof Map) {
|
||||
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);
|
||||
// fix your endpoints, discord ;-;
|
||||
if (member.id === this.rest.client.user.id) {
|
||||
if (Object.keys(data).length === 1 && Object.keys(data)[0] === 'nick') {
|
||||
endpoint = Constants.Endpoints.stupidInconsistentGuildEndpoint(member.guild.id);
|
||||
}
|
||||
}
|
||||
this.rest.makeRequest('patch', endpoint, true, data)
|
||||
.then(resData => resolve(member.guild._updateMember(member, resData).mem))
|
||||
.catch(reject);
|
||||
});
|
||||
}
|
||||
|
||||
updateGuildRole(role, _data) {
|
||||
return new Promise((resolve, reject) => {
|
||||
/*
|
||||
|
||||
@@ -100,9 +100,18 @@ class Guild {
|
||||
_updateMember(member, data) {
|
||||
const oldMember = cloneObject(member);
|
||||
|
||||
member._roles = data.roles;
|
||||
member.nickname = data.nick;
|
||||
if (this.client.ws.status === Constants.Status.READY) {
|
||||
if (data.roles) {
|
||||
member._roles = data.roles;
|
||||
} else {
|
||||
member.nickname = data.nick;
|
||||
}
|
||||
|
||||
const notSame = (
|
||||
member.nickname !== oldMember.nickname &&
|
||||
!arraysEqual(member._roles, oldMember._roles)
|
||||
);
|
||||
|
||||
if (this.client.ws.status === Constants.Status.READY && notSame) {
|
||||
/**
|
||||
* Emitted whenever a Guild Member changes - i.e. new role, removed role, nickname
|
||||
*
|
||||
@@ -113,6 +122,10 @@ class Guild {
|
||||
*/
|
||||
this.client.emit(Constants.Events.GUILD_MEMBER_UPDATE, this, oldMember, member);
|
||||
}
|
||||
return {
|
||||
old: oldMember,
|
||||
mem: member,
|
||||
};
|
||||
}
|
||||
|
||||
_removeMember(guildMember) {
|
||||
|
||||
@@ -132,6 +132,60 @@ class GuildMember {
|
||||
return this.user.id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Mute/unmute a user
|
||||
* @param {Boolean} mute whether or not the member should be muted
|
||||
* @returns {Promise<GuildMember, Error>}
|
||||
*/
|
||||
setMute(mute) {
|
||||
return this.edit({ mute });
|
||||
}
|
||||
|
||||
/**
|
||||
* Deafen/undeafen a user
|
||||
* @param {Boolean} deaf whether or not the member should be deafened
|
||||
* @returns {Promise<GuildMember, Error>}
|
||||
*/
|
||||
setDeaf(deaf) {
|
||||
return this.edit({ deaf });
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves the Guild Member to the given channel.
|
||||
* @param {ChannelResolvable} channel the channel to move the member to
|
||||
* @returns {Promise<GuildMember, Error>}
|
||||
*/
|
||||
setVoiceChannel(channel) {
|
||||
return this.edit({ channel });
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the Roles applied to the member.
|
||||
* @param {Collection<String, Role>|Array<Role>} roles the roles to apply
|
||||
* @returns {Promise<GuildMember, Error>}
|
||||
*/
|
||||
setRoles(roles) {
|
||||
return this.edit({ roles });
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the nickname for the Guild Member
|
||||
* @param {String} nick the nickname for the Guild Member
|
||||
* @returns {Promise<GuildMember, Error>}
|
||||
*/
|
||||
setNickname(nick) {
|
||||
return this.edit({ nick });
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a Guild Member
|
||||
* @param {GuildmemberEditData} data the data to edit the member with
|
||||
* @returns {Promise<GuildMember, Error>}
|
||||
*/
|
||||
edit(data) {
|
||||
return this.client.rest.methods.updateGuildMember(this, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes any DM's with this Guild Member
|
||||
* @returns {Promise<DMChannel>}
|
||||
|
||||
@@ -98,6 +98,7 @@ const Endpoints = exports.Endpoints = {
|
||||
guildIntegrations: (guildID) => `${Endpoints.guild(guildID)}/integrations`,
|
||||
guildMembers: (guildID) => `${Endpoints.guild(guildID)}/members`,
|
||||
guildMember: (guildID, memberID) => `${Endpoints.guildMembers(guildID)}/${memberID}`,
|
||||
stupidInconsistentGuildEndpoint: (guildID) => `${Endpoints.guildMember(guildID, '@me')}/nick`,
|
||||
guildChannels: (guildID) => `${Endpoints.guild(guildID)}/channels`,
|
||||
|
||||
// channels
|
||||
|
||||
Reference in New Issue
Block a user