From 178439ef8c3c74448992774b8cab4000575e9c82 Mon Sep 17 00:00:00 2001 From: Advaith Date: Fri, 14 Aug 2020 11:49:44 -0700 Subject: [PATCH] feat: trigger userUpdate on GUILD_MEMBER_UPDATE (#4697) --- src/client/actions/UserUpdate.js | 1 + src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/src/client/actions/UserUpdate.js b/src/client/actions/UserUpdate.js index 7279ca7dd..0033aaaec 100644 --- a/src/client/actions/UserUpdate.js +++ b/src/client/actions/UserUpdate.js @@ -13,6 +13,7 @@ class UserUpdateAction extends Action { if (!oldUser.equals(newUser)) { /** * Emitted whenever a user's details (e.g. username) are changed. + * Triggered by the Discord gateway events USER_UPDATE, GUILD_MEMBER_UPDATE, and PRESENCE_UPDATE. * @event Client#userUpdate * @param {User} oldUser The user before the update * @param {User} newUser The user after the update diff --git a/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js b/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js index 92c9da6c5..4c8d259c2 100644 --- a/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +++ b/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js @@ -3,6 +3,12 @@ const { Status, Events } = require('../../../util/Constants'); module.exports = (client, { d: data }, shard) => { + let user = client.users.cache.get(data.user.id); + if (!user && data.user.username) user = client.users.add(data.user); + if (user && data.user && data.user.username) { + if (!user.equals(data.user)) client.actions.UserUpdate.handle(data.user); + } + const guild = client.guilds.cache.get(data.guild_id); if (guild) { const member = guild.members.cache.get(data.user.id); @@ -11,6 +17,7 @@ module.exports = (client, { d: data }, shard) => { if (shard.status === Status.READY) { /** * Emitted whenever a guild member changes - i.e. new role, removed role, nickname. + * Also emitted when the user's details (e.g. username) change. * @event Client#guildMemberUpdate * @param {GuildMember} oldMember The member before the update * @param {GuildMember} newMember The member after the update