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<T>(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<Member | null> {
+export async function resolveMember(bot: Client, guild: Guild, value: string, fresh = false): Promise<Member | null> {
   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;
   }