From 42e5db71aec170e172d48ad09cc2a3a1fd945c4c Mon Sep 17 00:00:00 2001 From: Yanzi-dev Date: Tue, 18 Jul 2023 15:45:22 +0200 Subject: [PATCH] =?UTF-8?q?fix=20better=20url=20mapping=20vxtwitter?= =?UTF-8?q?=F0=9F=A7=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/handlers/handle-guild-message-creation.ts | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/handlers/handle-guild-message-creation.ts b/src/handlers/handle-guild-message-creation.ts index 6607e19..a3fdde0 100644 --- a/src/handlers/handle-guild-message-creation.ts +++ b/src/handlers/handle-guild-message-creation.ts @@ -1,6 +1,12 @@ import type { Message } from 'discord.js'; import { MessageType } from 'discord.js'; +const urlMappings = [ + { + pattern: /https?:\/\/(mobile\.)?twitter\.com\/\S+/g, + replacement: 'https://vxtwitter.com', + }, +]; export const handleGuildMessageCreation = async (message: Message) => { if (message.author.bot) { return; @@ -10,17 +16,20 @@ export const handleGuildMessageCreation = async (message: Message) => { return; } - const urls = message.content.match(/https?:\/\/\S+/g); - if (urls === null) { - return; - } + let modifiedContent = message.content; + let hasModification = false; - const newContent = message.content.replaceAll( - /https?:\/\/(mobile\.)?twitter\.com/g, - 'https://vxtwitter.com' - ); + for (const { pattern, replacement } of urlMappings) { + if (pattern.test(modifiedContent)) { + modifiedContent = modifiedContent.replace(pattern, replacement); + hasModification = true; + } + } - const newMessage = [`<@${message.author.id}>`, newContent].join('\n'); + if (!hasModification) { + return; + } + const newMessage = [`<@${message.author.id}>`, modifiedContent].join('\n'); await message.channel.send(newMessage); await message.delete();