Michael-J-Scofield / discord-anti-spam

A simple discord anti spam node.js module to prevent spam on your discord server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Can you make it so I can add embeds?

FxckingAngel opened this issue · comments

const antiSpam = new AntiSpam({
warnThreshold: 3,
muteThreshold: 4,
maxInterval: 2000,
warnMessage: "{@user}, Please stop spamming",
muteMessage: [em], //That's the embed
maxDuplicatesWarning: 6,
maxDuplicatesMute: 8,
ignoredPermissions: ["ADMINISTRATOR"],
ignoreBots: true,
verbose: true,
ignoredMembers: [],
unMuteTime: 10,
removeMessages: true,
modLogsEnabled: false,
modLogsChannelName: "mod-logs",
modLogsMode: "embed",
});

Have you tried putting it out of a array?

No I will try

I does not work with or without the array.

Can you send the embed code also

var em = new Discord.MessageEmbed()
.setTitle(Muted!)
.setDescription(Admin has muted you!)
.setColor(800080)
.setImage("https://i.pinimg.com/originals/93/4a/c2/934ac2e1254bfe067aff258f92260310.gif")

I'll look into this later today.

also here error sorry for not giving all info before asking

if (typeof data !== 'string') throw new error(errorMessage);
                                    ^

RangeError [EMBED_DESCRIPTION]: MessageEmbed description must be a string.

Oh. Ye that explains alot

This may work!
message.channel.send({ embeds: this.format(this.options.muteMessage, message}))

for a catch

You can simply rely on the packages events... like warnAdd on that event:

antiSpam.onEvent("warnAdd", (member) => {
   //create your embed in here and send it to the log channel, or whichever channel you want.
   //in my case here is my code:
    const logChannel = member.guild.channels.cache.find(c => c.name.includes("mod-logs"));
    if (logChannel) {
        const embed = new MessageEmbed()
            .setColor("#ff0000")
            .setTitle("Member Warned")
            .setThumbnail(member.guild.me.user.displayAvatarURL())
            .setFooter({ text: member.guild.me.displayName, iconURL: member.guild.me.user.displayAvatarURL() })
            .setTimestamp()
            .setDescription(stripIndents`
            **Warned member:** ${member} (${member.id})
            **Warned By:** ${member.guild.me}
            **Reason:** Spam`)
        logChannel.send({text: '', embeds: embed});
    }
});

@FxckingAngel Have you tried to using an actual string?

var em = new Discord.MessageEmbed()
       .setTitle("Muted!")
       .setDescription("Admin has muted you!")
   	.setColor(800080)
       .setImage("https://i.pinimg.com/originals/93/4a/c2/934ac2e1254bfe067aff258f92260310.gif")
     

sorry for late reply they both work but for the first one need to fix this

antiSpam.on("warnAdd", (member) => {
    const logChannel = member.guild.channels.cache.find(c => c.name.includes("mellie-logs"));
    if (logChannel) {
        const embed = new MessageEmbed()
            .setColor("#800080")
            .setTitle("Member Warned")
        .setThumbnail(member.guild.me.user.displayAvatarURL())
            .setFooter({ text: member.guild.me.displayName, iconURL: member.guild.me.user.displayAvatarURL() })
            .setTimestamp()
            .setDescription(`
            **Warned member:** ${member} (${member.id})
            **Warned By:** ${member.guild.me}
            **Reason:** Spam`)
        logChannel.send({embeds: [embed]});
    }
});

yes but It won't send @Scraayp

You can simply rely on the packages events... like warnAdd on that event:

antiSpam.onEvent("warnAdd", (member) => {
   //create your embed in here and send it to the log channel, or whichever channel you want.
   //in my case here is my code:
    const logChannel = member.guild.channels.cache.find(c => c.name.includes("mod-logs"));
    if (logChannel) {
        const embed = new MessageEmbed()
            .setColor("#ff0000")
            .setTitle("Member Warned")
            .setThumbnail(member.guild.me.user.displayAvatarURL())
            .setFooter({ text: member.guild.me.displayName, iconURL: member.guild.me.user.displayAvatarURL() })
            .setTimestamp()
            .setDescription(stripIndents`
            **Warned member:** ${member} (${member.id})
            **Warned By:** ${member.guild.me}
            **Reason:** Spam`)
        logChannel.send({text: '', embeds: embed});
    }
});

This works just fix it like mine above
#160 (comment)

That doesn't fix the issue why the warnMessage option already doesn't give the option to add the embeds.

Hello, i have read the code of the module and i have find this lines that make the crash when you using embeds messages (you need to a .content a the end of the this.format())

222 if (embed.description) embed.setDescription(embed.description)
223 if (embed.title) embed.setTitle(embed.title)
224 if (embed.footer && embed.footer.text) embed.footer.text = this.format(embed.footer.text, message)
225 if (embed.author && embed.author.name) embed.author.name = this.format(embed.author.name, message)

Hello, i have read the code of the module and i have find this lines that make the crash when you using embeds messages (you need to a .content a the end of the this.format())

222 if (embed.description) embed.setDescription(embed.description) 223 if (embed.title) embed.setTitle(embed.title) 224 if (embed.footer && embed.footer.text) embed.footer.text = this.format(embed.footer.text, message) 225 if (embed.author && embed.author.name) embed.author.name = this.format(embed.author.name, message)

I already found out :). It's in my work in progress branch.

But thank you for letting know!

A option to add embeds was added in v2.8.0. Please see https://discord-anti-spam.js.org for more information!