diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 1dcaaa52e..5fd80b904 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -658,7 +658,21 @@ export default class InternalClient { var roleIDS = roles[0].server.memberMap[member.id].roles.map(r => r.id); - if(roles.any(role => !role.server.memberMap[member.id])) { + var currentMemberRoles = roles[0].server.memberMap[member.id].roles; + for (var i = 0; i < roles.length; i++) { + var alreadyHasRole = currentMemberRoles.some(function(currentValue) { + if (currentValue.id === roles[i].id) { + return true; + }; + }); + if (!alreadyHasRole) { + roleIDS.push(roles[i].id); + }; + }; + + if (roles.some(function(role) { + return !role.server.memberMap[member.id]; + })) { return Promise.reject(new Error("Role does not exist on same server as member")); }