From 4041df652cb21b26b1610ce57716c67ba2754eff Mon Sep 17 00:00:00 2001 From: StanByes Date: Fri, 31 May 2024 22:50:50 +0200 Subject: [PATCH] Make getInviteCodesInString check codes with only 8 chars --- backend/src/utils.test.ts | 7 ++++++- backend/src/utils.ts | 6 +++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/backend/src/utils.test.ts b/backend/src/utils.test.ts index 2c1627d6..33bb8504 100644 --- a/backend/src/utils.test.ts +++ b/backend/src/utils.test.ts @@ -1,6 +1,6 @@ import test from "ava"; import z from "zod"; -import { convertDelayStringToMS, convertMSToDelayString, getUrlsInString, zAllowedMentions } from "./utils.js"; +import { convertDelayStringToMS, convertMSToDelayString, getInviteCodesInString, getUrlsInString, zAllowedMentions } from "./utils.js"; import { ErisAllowedMentionFormat } from "./utils/erisAllowedMentionsToDjsMentionOptions.js"; type AssertEquals = TActual extends TExpected ? true : false; @@ -55,3 +55,8 @@ test("tAllowedMentions matches Eris's AllowedMentions", (t) => { const typeTest: AssertEquals = true; t.pass(); }); + +test("getInviteCodesInString() : Try to get all real invite codes in a string", (t) => { + const codes = getInviteCodesInString("My first link is https://discord.gg/jyfP8grUe (wrong) and the second is https://discord.gg/jyfP8grU (real)"); + t.is(codes.join(" "), "jyfP8grU"); +}) \ No newline at end of file diff --git a/backend/src/utils.ts b/backend/src/utils.ts index b898fbe4..3a2f2c30 100644 --- a/backend/src/utils.ts +++ b/backend/src/utils.ts @@ -575,10 +575,10 @@ export function isNotNull(value: T): value is Exclude { // discord.gg/ // discord.com/friend-invite/ const quickInviteDetection = - /discord(?:app)?\.com\/(?:friend-)?invite\/([a-z0-9-]+)|discord\.gg\/(?:\S+\/)?([a-z0-9-]+)/gi; + /discord(?:app)?\.com\/(?:friend-)?invite\/([a-z0-9-]{8})|discord\.gg\/(?:\S+\/)?([a-z0-9-]{8})/gi; const isInviteHostRegex = /(?:^|\.)(?:discord.gg|discord.com|discordapp.com)$/i; -const longInvitePathRegex = /^\/(?:friend-)?invite\/([a-z0-9-]+)$/i; +const longInvitePathRegex = /^\/(?:friend-)?invite\/([a-z0-9-]{8})$/i; export function getInviteCodesInString(str: string): string[] { const inviteCodes: string[] = []; @@ -605,7 +605,7 @@ export function getInviteCodesInString(str: string): string[] { // discord.gg/[anything/] if (url.hostname === "discord.gg") { const parts = url.pathname.split("/").filter(Boolean); - return parts[parts.length - 1]; + return parts[parts.length - 1].substring(0, 8); } // discord.com/invite/[/anything]