Im trying to scan the inside of an embed description "embed reader" and i keep getting this error and cant fix it. It worked on discord.js V12 but i switched to v13 so i can add it to my other bot.
const { Client, Intents} = require('discord.js');
const Discord = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });
let prefix = ";";
let badwords = ["IP Logger", "grabify", "dlscord.com"];
client.on('ready', () => {
console.log('Ready!');
});
client.on("message", async message => {
const detectedEmbed = new Discord.MessageEmbed()
.setColor('#0099ff')
.setTitle('Detected')
.setURL('https://discord.js.org/%27')
.setAuthor("apphx the ass grabber")
.setDescription('IP Logger Detected')
.setThumbnail('https://kinsta.com/wp-content/uploads/2017/09/external-ip-address-1-1024x512.png%27')
var content = message.content;
var stringToCheck = content.replace(/\s+/g, '').toLowerCase();
if(message.content.toLowerCase().includes( badwords))
message.channel.send(detectedEmbed);
else {
for (var i = 0; i < badwords.length; i++) {
if (message.embeds[i].title.includes(badwords) && message.embeds[i].title.includes(badwords[i])){
message.delete();
message.channel.send(detectedEmbed)
break
}
}
}
})
client.login(verysecrettoken');
Shouldn't it be:
for (var i = 0; i < message.embeds.length; i++) {
There is nothing stopping i exceeding the number of embeds in the message and so when it does, message.embeds[i] doesn't exist.
It looks like you meant to iterate over the badwords array for each embed in the message.
for (var i = 0; i < message.embeds.length; i++) {
for (var j = 0; j < badwords.length; j++) {
if (message.embeds[i].title.includes(badwords[j])){
message.delete();
message.channel.send(detectedEmbed)
break
}
}
}
Also, in v13 you probable have to have:
message.channel.send({ embeds: [detectedEmbed] })