From dd2eebd4a526992a308b69518947d7fce190913a Mon Sep 17 00:00:00 2001
From: Dragory <2606411+Dragory@users.noreply.github.com>
Date: Sat, 1 Apr 2023 21:40:27 +0300
Subject: [PATCH] fix: occasional crash in context menus

Co-authored-by: metal <metal@i0.tf>
---
 backend/src/plugins/ContextMenus/actions/clean.ts    | 6 +++---
 backend/src/plugins/ContextMenus/actions/mute.ts     | 8 ++++----
 backend/src/plugins/ContextMenus/actions/userInfo.ts | 2 +-
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/backend/src/plugins/ContextMenus/actions/clean.ts b/backend/src/plugins/ContextMenus/actions/clean.ts
index 7fd124e9..262fb393 100644
--- a/backend/src/plugins/ContextMenus/actions/clean.ts
+++ b/backend/src/plugins/ContextMenus/actions/clean.ts
@@ -10,7 +10,7 @@ export async function cleanAction(
   amount: number,
   interaction: ContextMenuCommandInteraction,
 ) {
-  interaction.deferReply({ ephemeral: true });
+  await interaction.deferReply({ ephemeral: true });
   const executingMember = await pluginData.guild.members.fetch(interaction.user.id);
   const userCfg = await pluginData.config.getMatchingConfig({
     channelId: interaction.channelId,
@@ -34,10 +34,10 @@ export async function cleanAction(
   const user = undefined;
 
   try {
-    interaction.followUp(`Cleaning... Amount: ${amount}, User Only: ${targetUserOnly}, Pins: ${deletePins}`);
+    await interaction.followUp(`Cleaning... Amount: ${amount}, User Only: ${targetUserOnly}, Pins: ${deletePins}`);
     utility.clean({ count: amount, user, channel: targetMessage.channel.id, "delete-pins": deletePins }, targetMessage);
   } catch (e) {
-    interaction.followUp({ ephemeral: true, content: "Plugin error, please check your BOT_ALERTs" });
+    await interaction.followUp({ ephemeral: true, content: "Plugin error, please check your BOT_ALERTs" });
 
     if (e instanceof RecoverablePluginError && e.code === ERRORS.NO_MUTE_ROLE_IN_CONFIG) {
       pluginData.getPlugin(LogsPlugin).logBotAlert({
diff --git a/backend/src/plugins/ContextMenus/actions/mute.ts b/backend/src/plugins/ContextMenus/actions/mute.ts
index 4dfc682e..9dbe529a 100644
--- a/backend/src/plugins/ContextMenus/actions/mute.ts
+++ b/backend/src/plugins/ContextMenus/actions/mute.ts
@@ -15,7 +15,7 @@ export async function muteAction(
   duration: string | undefined,
   interaction: ContextMenuCommandInteraction,
 ) {
-  interaction.deferReply({ ephemeral: true });
+  await interaction.deferReply({ ephemeral: true });
   const executingMember = await pluginData.guild.members.fetch(interaction.user.id);
   const userCfg = await pluginData.config.getMatchingConfig({
     channelId: interaction.channelId,
@@ -34,7 +34,7 @@ export async function muteAction(
   const targetMember = await pluginData.guild.members.fetch(interaction.targetId);
 
   if (!canActOn(pluginData, executingMember, targetMember)) {
-    interaction.followUp({ ephemeral: true, content: "Cannot mute: insufficient permissions" });
+    await interaction.followUp({ ephemeral: true, content: "Cannot mute: insufficient permissions" });
     return;
   }
 
@@ -51,9 +51,9 @@ export async function muteAction(
       result.notifyResult.method ?? "dm"
     })\nPlease update the new case with the \`update\` command`;
 
-    interaction.followUp({ ephemeral: true, content: muteMessage });
+    await interaction.followUp({ ephemeral: true, content: muteMessage });
   } catch (e) {
-    interaction.followUp({ ephemeral: true, content: "Plugin error, please check your BOT_ALERTs" });
+    await interaction.followUp({ ephemeral: true, content: "Plugin error, please check your BOT_ALERTs" });
 
     if (e instanceof RecoverablePluginError && e.code === ERRORS.NO_MUTE_ROLE_IN_CONFIG) {
       pluginData.getPlugin(LogsPlugin).logBotAlert({
diff --git a/backend/src/plugins/ContextMenus/actions/userInfo.ts b/backend/src/plugins/ContextMenus/actions/userInfo.ts
index 5818d57c..e445e1c8 100644
--- a/backend/src/plugins/ContextMenus/actions/userInfo.ts
+++ b/backend/src/plugins/ContextMenus/actions/userInfo.ts
@@ -7,7 +7,7 @@ export async function userInfoAction(
   pluginData: GuildPluginData<ContextMenuPluginType>,
   interaction: ContextMenuCommandInteraction,
 ) {
-  interaction.deferReply({ ephemeral: true });
+  await interaction.deferReply({ ephemeral: true });
   const executingMember = await pluginData.guild.members.fetch(interaction.user.id);
   const userCfg = await pluginData.config.getMatchingConfig({
     channelId: interaction.channelId,