From 9b24535d44f314b052227f015b1a55942c604df6 Mon Sep 17 00:00:00 2001 From: sadan4 <117494111+sadan4@users.noreply.github.com> Date: Tue, 24 Jun 2025 20:44:11 -0400 Subject: [PATCH] FakeNitro: fix crash when embed.url is undefined (#3510) --- src/plugins/fakeNitro/index.tsx | 48 ++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/src/plugins/fakeNitro/index.tsx b/src/plugins/fakeNitro/index.tsx index 4bdf194c..a4da103e 100644 --- a/src/plugins/fakeNitro/index.tsx +++ b/src/plugins/fakeNitro/index.tsx @@ -671,32 +671,38 @@ export default definePlugin({ }, shouldIgnoreEmbed(embed: Message["embeds"][number], message: Message) { - const contentItems = message.content.split(/\s/); - if (contentItems.length > 1 && !settings.store.transformCompoundSentence) return false; + try { + const contentItems = message.content.split(/\s/); + if (contentItems.length > 1 && !settings.store.transformCompoundSentence) return false; - switch (embed.type) { - case "image": { - if ( - !settings.store.transformCompoundSentence - && !contentItems.some(item => item === embed.url! || item.match(hyperLinkRegex)?.[1] === embed.url!) - ) return false; + switch (embed.type) { + case "image": { + const url = embed.url ?? embed.image?.url; + if (!url) return false; + if ( + !settings.store.transformCompoundSentence + && !contentItems.some(item => item === url || item.match(hyperLinkRegex)?.[1] === url) + ) return false; - if (settings.store.transformEmojis) { - if (fakeNitroEmojiRegex.test(embed.url!)) return true; - } - - if (settings.store.transformStickers) { - if (fakeNitroStickerRegex.test(embed.url!)) return true; - - const gifMatch = embed.url!.match(fakeNitroGifStickerRegex); - if (gifMatch) { - // There is no way to differentiate a regular gif attachment from a fake nitro animated sticker, so we check if the StickerStore contains the id of the fake sticker - if (StickerStore.getStickerById(gifMatch[1])) return true; + if (settings.store.transformEmojis) { + if (fakeNitroEmojiRegex.test(url)) return true; } - } - break; + if (settings.store.transformStickers) { + if (fakeNitroStickerRegex.test(url)) return true; + + const gifMatch = url.match(fakeNitroGifStickerRegex); + if (gifMatch) { + // There is no way to differentiate a regular gif attachment from a fake nitro animated sticker, so we check if the StickerStore contains the id of the fake sticker + if (StickerStore.getStickerById(gifMatch[1])) return true; + } + } + + break; + } } + } catch (e) { + new Logger("FakeNitro").error("Error in shouldIgnoreEmbed:", e); } return false;