diff --git a/src/core/events/message-create.js b/src/core/events/message-create.js index 5678986..abf20d2 100644 --- a/src/core/events/message-create.js +++ b/src/core/events/message-create.js @@ -78,9 +78,41 @@ async function trackLostMessage(message) { } } +const socialLinkRegex = + /https?:\/\/(www\.)?(twitter\.com|x\.com|instagram\.com)(\/[^\s]*)?/gi; + +const domainReplacements = { + "twitter.com": "fixupx.com", + "x.com": "fixupx.com", + "instagram.com": "kkinstagram.com", +}; + +async function fixSocialLinks(message) { + if (message.author.bot) return; + if (!socialLinkRegex.test(message.content)) return; + + socialLinkRegex.lastIndex = 0; + const fixedContent = message.content.replace( + socialLinkRegex, + (match, www, domain, path) => + `https://${domainReplacements[domain.toLowerCase()]}${path ?? ""}`, + ); + + try { + await message.delete(); + await message.channel.send({ + content: `${message.author} sent ${fixedContent}`, + allowedMentions: { users: [message.author.id] }, + }); + } catch (error) { + console.error("Failed to fix social link:", error); + } +} + module.exports = { name: Events.MessageCreate, async execute(message) { + await fixSocialLinks(message); await replyToPurple(message); await trackMessage(message); },