From ac7935e24da0a221bed66129b71c0ccea8683f0d Mon Sep 17 00:00:00 2001 From: Dragory <2606411+Dragory@users.noreply.github.com> Date: Thu, 17 Dec 2020 03:50:02 +0200 Subject: [PATCH] Fix muteUser() sometimes operating on stale member info --- backend/src/plugins/Mutes/functions/muteUser.ts | 2 +- backend/src/utils.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/plugins/Mutes/functions/muteUser.ts b/backend/src/plugins/Mutes/functions/muteUser.ts index 0dc425d4..4d07a8d9 100644 --- a/backend/src/plugins/Mutes/functions/muteUser.ts +++ b/backend/src/plugins/Mutes/functions/muteUser.ts @@ -47,7 +47,7 @@ export async function muteUser( throw new RecoverablePluginError(ERRORS.INVALID_USER); } - const member = await resolveMember(pluginData.client, pluginData.guild, user.id); // Grab the fresh member so we don't have stale role info + const member = await resolveMember(pluginData.client, pluginData.guild, user.id, true); // Grab the fresh member so we don't have stale role info const config = pluginData.config.getMatchingConfig({ member, userId }); if (member) { diff --git a/backend/src/utils.ts b/backend/src/utils.ts index 30b376f3..fb7c3c7d 100644 --- a/backend/src/utils.ts +++ b/backend/src/utils.ts @@ -1088,12 +1088,12 @@ export async function resolveUser(bot, value) { * Resolves a guild Member from the passed user id, user mention, or full username (with discriminator). * If the member is not found in the cache, it's fetched from the API. */ -export async function resolveMember(bot: Client, guild: Guild, value: string): Promise { +export async function resolveMember(bot: Client, guild: Guild, value: string, fresh = false): Promise { const userId = resolveUserId(bot, value); if (!userId) return null; // If we have the member cached, return that directly - if (guild.members.has(userId)) { + if (guild.members.has(userId) && !fresh) { return guild.members.get(userId) || null; }