mirror of
https://github.com/danbulant/discord.js
synced 2026-05-27 22:11:53 +00:00
fix(RESTMethods): verify correct member in add and remove role listeners
Fixes #2480
This commit is contained in:
parent
7c37a0d386
commit
de78a8d0b4
1 changed files with 10 additions and 6 deletions
|
|
@ -522,15 +522,17 @@ class RESTMethods {
|
|||
if (member._roles.includes(role.id)) return resolve(member);
|
||||
|
||||
const listener = (oldMember, newMember) => {
|
||||
if (!oldMember._roles.includes(role.id) && newMember._roles.includes(role.id)) {
|
||||
if (newMember.id === member.id && !oldMember._roles.includes(role.id) && newMember._roles.includes(role.id)) {
|
||||
this.client.removeListener(Constants.Events.GUILD_MEMBER_UPDATE, listener);
|
||||
resolve(newMember);
|
||||
}
|
||||
};
|
||||
|
||||
this.client.on(Constants.Events.GUILD_MEMBER_UPDATE, listener);
|
||||
const timeout = this.client.setTimeout(() =>
|
||||
this.client.removeListener(Constants.Events.GUILD_MEMBER_UPDATE, listener), 10e3);
|
||||
const timeout = this.client.setTimeout(() => {
|
||||
this.client.removeListener(Constants.Events.GUILD_MEMBER_UPDATE, listener);
|
||||
reject(new Error('Adding the role timeout out.'));
|
||||
}, 10e3);
|
||||
|
||||
return this.rest.makeRequest('put', Endpoints.Member(member).Role(role.id), true, undefined, undefined, reason)
|
||||
.catch(err => {
|
||||
|
|
@ -546,15 +548,17 @@ class RESTMethods {
|
|||
if (!member._roles.includes(role.id)) return resolve(member);
|
||||
|
||||
const listener = (oldMember, newMember) => {
|
||||
if (oldMember._roles.includes(role.id) && !newMember._roles.includes(role.id)) {
|
||||
if (newMember.id === member.id && oldMember._roles.includes(role.id) && !newMember._roles.includes(role.id)) {
|
||||
this.client.removeListener(Constants.Events.GUILD_MEMBER_UPDATE, listener);
|
||||
resolve(newMember);
|
||||
}
|
||||
};
|
||||
|
||||
this.client.on(Constants.Events.GUILD_MEMBER_UPDATE, listener);
|
||||
const timeout = this.client.setTimeout(() =>
|
||||
this.client.removeListener(Constants.Events.GUILD_MEMBER_UPDATE, listener), 10e3);
|
||||
const timeout = this.client.setTimeout(() => {
|
||||
this.client.removeListener(Constants.Events.GUILD_MEMBER_UPDATE, listener);
|
||||
reject(new Error('Removing the role timeout out.'));
|
||||
}, 10e3);
|
||||
|
||||
return this.rest.makeRequest('delete', Endpoints.Member(member).Role(role.id), true, undefined, undefined, reason)
|
||||
.catch(err => {
|
||||
|
|
|
|||
Loading…
Reference in a new issue