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) {
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;