Bugfixes and consistency on message content and deletion
This commit is contained in:
@@ -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": [],
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
12
src/functions/deleteMessageFromMessagesArray.ts
Normal file
12
src/functions/deleteMessageFromMessagesArray.ts
Normal 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);
|
||||||
|
}
|
||||||
@@ -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;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user