diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 7f1bc4963..1b20d2678 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -1062,6 +1062,7 @@ var InternalClient = (function () { color: data.color || role.color, hoist: data.hoist || role.hoist, name: data.name || role.name, + position: data.position || role.position, permissions: role.permissions || 0 }; @@ -2087,6 +2088,14 @@ var InternalClient = (function () { if (server) { var user = self.users.add(new _StructuresUser2["default"](data.user, client)); if (user) { + var oldMember = { + roles: server.memberMap[data.user.id].roles, + mute: server.memberMap[data.user.id].mute, + selfMute: server.memberMap[data.user.id].selfMute, + deaf: server.memberMap[data.user.id].deaf, + selfDeaf: server.memberMap[data.user.id].selfDeaf, + nick: server.memberMap[data.user.id].nick + }; server.memberMap[data.user.id] = server.memberMap[data.user.id] || {}; server.memberMap[data.user.id].roles = data.roles.map(function (pid) { return server.roles.get("id", pid); @@ -2096,7 +2105,7 @@ var InternalClient = (function () { server.memberMap[data.user.id].deaf = data.deaf; server.memberMap[data.user.id].selfDeaf = data.self_deaf; server.memberMap[data.user.id].nick = data.nick || null; - client.emit("serverMemberUpdated", server, user); + client.emit("serverMemberUpdated", server, user, oldMember); } else { client.emit("warn", "server member removed but user doesn't exist in cache"); } diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 105a7feb3..23de59ffd 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -895,6 +895,7 @@ export default class InternalClient { color: data.color || role.color, hoist: data.hoist || role.hoist, name: data.name || role.name, + position: data.position || role.position, permissions: role.permissions || 0 }; @@ -1785,6 +1786,14 @@ export default class InternalClient { if (server) { var user = self.users.add(new User(data.user, client)); if (user) { + var oldMember = { + roles: server.memberMap[data.user.id].roles, + mute: server.memberMap[data.user.id].mute, + selfMute: server.memberMap[data.user.id].selfMute, + deaf: server.memberMap[data.user.id].deaf, + selfDeaf: server.memberMap[data.user.id].selfDeaf, + nick: server.memberMap[data.user.id].nick + }; server.memberMap[data.user.id] = server.memberMap[data.user.id] || {}; server.memberMap[data.user.id].roles = data.roles.map(pid => server.roles.get("id", pid)); server.memberMap[data.user.id].mute = data.mute; @@ -1792,7 +1801,7 @@ export default class InternalClient { server.memberMap[data.user.id].deaf = data.deaf; server.memberMap[data.user.id].selfDeaf = data.self_deaf; server.memberMap[data.user.id].nick = data.nick || null; - client.emit("serverMemberUpdated", server, user); + client.emit("serverMemberUpdated", server, user, oldMember); } else { client.emit("warn", "server member removed but user doesn't exist in cache"); }