From 41d404766335fb0f229ffbba688ef2431a44848b Mon Sep 17 00:00:00 2001 From: Matheus Albino Date: Sun, 3 Nov 2024 13:00:48 -0300 Subject: [PATCH] Adds events for MessageUpdate and MessageDelete/deleteRepliesToAuthorMessage --- src/bot.ts | 15 +++++++++------ src/functions/deleteRepliesToAuthorMessage.ts | 19 +++++++++++++++---- src/functions/handleMessageUpdate.ts | 16 +++++++++++++--- 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/src/bot.ts b/src/bot.ts index c58f5c4..79d5e4f 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -31,17 +31,20 @@ client.on(Events.MessageCreate, async (message) => { messagesArr = handleMessageReposts(messagesArr, message); }); -client.on(Events.MessageUpdate, async (message) => { - if (!botIsReady) return; - - messagesArr = handleMessageUpdate(messagesArr, message); // TODO -}); +// not needed for some reason +// client.on(Events.MessageUpdate, async (newMessage) => { +// if (!botIsReady) return; +// +// return; +// +// messagesArr = handleMessageUpdate(messagesArr, newMessage); +// }); client.on(Events.MessageDelete, async (message) => { if (!botIsReady) return; messagesArr = deleteMessageFromMessagesArray(messagesArr, message); - deleteRepliesToAuthorMessage(message); // TODO + deleteRepliesToAuthorMessage(client, message); }); await client.login(process.env.DISCORD_TOKEN); diff --git a/src/functions/deleteRepliesToAuthorMessage.ts b/src/functions/deleteRepliesToAuthorMessage.ts index b493232..9adf6c3 100644 --- a/src/functions/deleteRepliesToAuthorMessage.ts +++ b/src/functions/deleteRepliesToAuthorMessage.ts @@ -1,5 +1,16 @@ -import type { Message, PartialMessage } from "discord.js"; +import type { Client, Message, PartialMessage } from "discord.js"; -export default function deleteRepliesToAuthorMessage( - authorMessage: Message | PartialMessage, -): void { } +export default async function deleteRepliesToAuthorMessage( + client: Client, + authorMessage: Message | PartialMessage, +): Promise { + const channelMessages = await authorMessage.channel.messages.fetch(); + + for (const [, message] of channelMessages) { + if (!client.user || !message.reference) continue; + if (message.author.id !== client.user.id) continue; + if (message.reference.messageId !== authorMessage.id) continue; + + message.delete(); + } +} diff --git a/src/functions/handleMessageUpdate.ts b/src/functions/handleMessageUpdate.ts index 7ea7f98..3fe9be1 100644 --- a/src/functions/handleMessageUpdate.ts +++ b/src/functions/handleMessageUpdate.ts @@ -1,8 +1,18 @@ import type { Message, PartialMessage } from "discord.js"; export default function handleMessageUpdate( - messagesArray: Message[], - updatedMessage: Message | PartialMessage, + messagesArray: Message[], + updatedMessage: Message | PartialMessage, ): Message[] { - return messagesArray; + if (updatedMessage.partial) return messagesArray; + + const outdatedMessageIndexInMessagesArray = messagesArray.findIndex( + (message) => message.id === updatedMessage.id, + ); + + if (outdatedMessageIndexInMessagesArray === -1) return messagesArray; + + messagesArray[outdatedMessageIndexInMessagesArray] = updatedMessage; + + return messagesArray; }