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",
"scripts": {
"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"
},
"keywords": [],

View File

@@ -3,6 +3,7 @@ import type { Message } from "discord.js";
import { readyHandler } from "./functions/ready.ts";
import feedMessagesArray from "./functions/feedMessagesArray.ts";
import handleMessageReposts from "./functions/handleMessageReposts.ts";
import deleteMessageFromMessagesArray from "./functions/deleteMessageFromMessagesArray.ts";
const client = new Client({
intents: [
@@ -23,8 +24,9 @@ client.on(Events.MessageCreate, async (message) => {
messagesArr = handleMessageReposts(messagesArr, message);
});
// // TODO, updateMessagesArray on message deletion
// client.on(Events.MessageDelete, async (message) => {
// });
// TODO, updateMessagesArray on message deletion
client.on(Events.MessageDelete, async (message) => {
messagesArr = deleteMessageFromMessagesArray(messagesArr, message);
});
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";
export default function handleMessageReposts(
messagesArray: Message[],
newMessage: Message,
messagesArray: Message[],
newMessage: 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) {
return updateMessagesArray(messagesArray, newMessage);
}
newMessage.delete();
attemptSendAuthorMessage(newMessage);
newMessage.delete();
attemptSendAuthorMessage(newMessage);
return messagesArray;
return messagesArray;
}

View File

@@ -1,7 +1,20 @@
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 "";
clearedUrl = clearedUrl.split("\n")[0];
if (!clearedUrl) return "";
clearedUrl = clearedUrl.replace(/\/+$/, "");
return clearedUrl;
}