Bugfixes and consistency on message content and deletion

This commit is contained in:
Matheus Albino
2024-10-16 12:56:41 -03:00
parent 71c40384ed
commit de9fff8529
5 changed files with 44 additions and 18 deletions

View File

@@ -5,6 +5,7 @@
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"start": "node --experimental-strip-types --env-file=.env src/bot.ts", "start": "node --experimental-strip-types --env-file=.env src/bot.ts",
"debug": "node --inspect --experimental-strip-types --env-file=.env src/bot.ts",
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"keywords": [], "keywords": [],

View File

@@ -3,6 +3,7 @@ import type { Message } from "discord.js";
import { readyHandler } from "./functions/ready.ts"; import { readyHandler } from "./functions/ready.ts";
import feedMessagesArray from "./functions/feedMessagesArray.ts"; import feedMessagesArray from "./functions/feedMessagesArray.ts";
import handleMessageReposts from "./functions/handleMessageReposts.ts"; import handleMessageReposts from "./functions/handleMessageReposts.ts";
import deleteMessageFromMessagesArray from "./functions/deleteMessageFromMessagesArray.ts";
const client = new Client({ const client = new Client({
intents: [ intents: [
@@ -23,8 +24,9 @@ client.on(Events.MessageCreate, async (message) => {
messagesArr = handleMessageReposts(messagesArr, message); messagesArr = handleMessageReposts(messagesArr, message);
}); });
// // TODO, updateMessagesArray on message deletion // TODO, updateMessagesArray on message deletion
// client.on(Events.MessageDelete, async (message) => { client.on(Events.MessageDelete, async (message) => {
// }); messagesArr = deleteMessageFromMessagesArray(messagesArr, message);
});
await client.login(process.env.DISCORD_TOKEN); await client.login(process.env.DISCORD_TOKEN);

View File

@@ -0,0 +1,12 @@
import type {
Message,
OmitPartialGroupDMChannel,
PartialMessage,
} from "discord.js";
export default function deleteMessageFromMessagesArray(
messagesArray: Message[],
messageToDelete: OmitPartialGroupDMChannel<Message<boolean> | PartialMessage>,
): Message[] {
return messagesArray.filter((message) => message.id !== messageToDelete.id);
}

View File

@@ -6,25 +6,23 @@ import updateMessagesArray from "./updateMessagesArray.ts";
import attemptSendAuthorMessage from "./attemptSendUserMessage.ts"; import attemptSendAuthorMessage from "./attemptSendUserMessage.ts";
export default function handleMessageReposts( export default function handleMessageReposts(
messagesArray: Message[], messagesArray: Message[],
newMessage: Message, newMessage: Message,
): Message[] { ): Message[] {
const urlMessagesMap = transformMessageArrayInMap(messagesArray); const urlMessagesMap = transformMessageArrayInMap(messagesArray);
const newMessageClearedUrl = clearUrl(newMessage.content); const newMessageClearedUrl = clearUrl(newMessage.content);
if (!newMessageClearedUrl) return messagesArray; if (!newMessageClearedUrl) return messagesArray;
const urlMessagesMatchArray = urlMessagesMap.get(newMessageClearedUrl); const urlMessagesMatchArray = urlMessagesMap.get(newMessageClearedUrl);
if (!urlMessagesMatchArray) return messagesArray; if (!urlMessagesMatchArray) {
return updateMessagesArray(messagesArray, newMessage);
}
if (urlMessagesMatchArray.length <= 1) { newMessage.delete();
return updateMessagesArray(messagesArray, newMessage); attemptSendAuthorMessage(newMessage);
}
newMessage.delete(); return messagesArray;
attemptSendAuthorMessage(newMessage);
return messagesArray;
} }

View File

@@ -1,7 +1,20 @@
export function clearUrl(url: string): string { export function clearUrl(url: string): string {
const clearedUrl = url.split("?")[0]; const urlRegex = /(https?:\/\/[^ ]*)/;
const matchUrl = url.match(urlRegex);
if (!matchUrl) return "";
if (!matchUrl[0]) return "";
let clearedUrl = matchUrl[0].split("?")[0];
if (!clearedUrl) return ""; if (!clearedUrl) return "";
clearedUrl = clearedUrl.split("\n")[0];
if (!clearedUrl) return "";
clearedUrl = clearedUrl.replace(/\/+$/, "");
return clearedUrl; return clearedUrl;
} }