summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/gateway/src/commands/delete.ts8
-rw-r--r--packages/gateway/src/listeners/messageDeletion.ts11
2 files changed, 19 insertions, 0 deletions
diff --git a/packages/gateway/src/commands/delete.ts b/packages/gateway/src/commands/delete.ts
index f558d24..4a3b85a 100644
--- a/packages/gateway/src/commands/delete.ts
+++ b/packages/gateway/src/commands/delete.ts
@@ -1,6 +1,10 @@
import { Message } from "discord.js";
import { logUnexpectedDiscordAPIError, replyWithCleanup } from "../utilities";
import { logUnexpectedDiscordAPIResult } from "../../../shared/log";
+import {
+ disableMessageDeletionListener,
+ enableMessageDeletionListener,
+} from "../listeners/messageDeletion";
export const handleDeleteCommand = async (message: Message) => {
if (message.author.bot) return;
@@ -66,6 +70,8 @@ export const handleDeleteCommand = async (message: Message) => {
return;
}
+ disableMessageDeletionListener();
+
try {
if (messageIds.length > 1) {
try {
@@ -158,6 +164,8 @@ export const handleDeleteCommand = async (message: Message) => {
await message.reply(
"❌ Failed to delete messages. Check bot permissions and try again.",
);
+ } finally {
+ enableMessageDeletionListener();
}
}
};
diff --git a/packages/gateway/src/listeners/messageDeletion.ts b/packages/gateway/src/listeners/messageDeletion.ts
index b1316fc..580e371 100644
--- a/packages/gateway/src/listeners/messageDeletion.ts
+++ b/packages/gateway/src/listeners/messageDeletion.ts
@@ -13,9 +13,20 @@ const GUILD_CHANNEL_MAPPINGS = {
[CENTRAL_GUILD_ID]: CENTRAL_MESSAGE_LOG_CHANNEL_ID,
[ROLEPLAY_GUILD_ID]: ROLEPLAY_MESSAGE_LOG_CHANNEL_ID,
} as const;
+let isListenerDisabled = false;
+
+export const disableMessageDeletionListener = () => {
+ isListenerDisabled = true;
+};
+
+export const enableMessageDeletionListener = () => {
+ isListenerDisabled = false;
+};
export const handleMessageDeletion = (client: Client) => {
client.on(Events.MessageDelete, async (deletedMessage) => {
+ if (isListenerDisabled) return;
+
if (
!deletedMessage.guildId ||
!(deletedMessage.guildId in GUILD_CHANNEL_MAPPINGS)