FakeNitro: fix crash when embed.url is undefined (#3510)

This commit is contained in:
sadan4 2025-06-24 20:44:11 -04:00 committed by GitHub
parent 658a62860e
commit 9b24535d44
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -671,32 +671,38 @@ export default definePlugin({
}, },
shouldIgnoreEmbed(embed: Message["embeds"][number], message: Message) { shouldIgnoreEmbed(embed: Message["embeds"][number], message: Message) {
const contentItems = message.content.split(/\s/); try {
if (contentItems.length > 1 && !settings.store.transformCompoundSentence) return false; const contentItems = message.content.split(/\s/);
if (contentItems.length > 1 && !settings.store.transformCompoundSentence) return false;
switch (embed.type) { switch (embed.type) {
case "image": { case "image": {
if ( const url = embed.url ?? embed.image?.url;
!settings.store.transformCompoundSentence if (!url) return false;
&& !contentItems.some(item => item === embed.url! || item.match(hyperLinkRegex)?.[1] === embed.url!) if (
) return false; !settings.store.transformCompoundSentence
&& !contentItems.some(item => item === url || item.match(hyperLinkRegex)?.[1] === url)
) return false;
if (settings.store.transformEmojis) { if (settings.store.transformEmojis) {
if (fakeNitroEmojiRegex.test(embed.url!)) return true; if (fakeNitroEmojiRegex.test(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;
} }
}
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; return false;