discord-antiflood v2.1.1
Discord-AntiFlood
Discord-AntiFlood es un modulo para evitar el flood y spam en Discord.
Modulo completamente configurable y facil de entender.
El modulo ha sido desarrollado por
tnfAngel#8642.
Documentación
Definir
- Para declararlo en tu codigo puedes poner lo siguiente:
 
// Node.js / CommonJS
const antiFlood = require('discord-antiflood');
// TypeScript / ES6
import antiFlood from 'discord-antiflood';Instanciar
- función
 
Necesario para que el modulo funcione. Hay que ponerlo debajo de la clase Client de discord.js.
Client: Instancia de la clase Client de discord.js.
AntiFloodAjustes: Objeto para configurar el modulo, explicado abajo.
const antiFlood = require('discord-antiflood');
antiFlood(client, antiFloodAjustes); // client es una instancia de Discord.Client, antiFloodAjustes es un objeto explicado justo abajo.Opciones
- debug
 
Si el modulo creará mensajes informativos en la consola.
Boolean: true / false
debug: true- ignorarBots
 
Si el modulo ignorará los mensajes de los bots.
Boolean: true / false
ignorarBots: true- usuariosIgnorados
 
Array de IDs de usuarios que el modulo ignorará. Lo puedes dejar en blanco para que no ignore nada (Array vacio).
Array: \<IDs>
usuariosIgnorados: [
    "ID-USUARIO", 
    "ID-USUARIO"
]- servidoresIgnorados
 
Array de IDs de servidores que el modulo ignorará. Lo puedes dejar en blanco para que no ignore nada (Array vacio).
Array: \<IDs>
servidoresIgnorados: [
    "ID-SERVIDOR", 
    "ID-SERVIDOR"
]- canalesIgnorados
 
Array de IDs de canales que el modulo ignorará. Lo puedes dejar en blanco para que no ignore nada (Array vacio).
Array: \<IDs>
canalesIgnorados: [
    "ID-CANAL", 
    "ID-CANAL"
]- permisosIgnorados
 
Array de permisos que el modulo ignorará. Lo puedes dejar en blanco para que no ignore nada (Array vacio).
Array: \<Permisos>
permisosIgnorados: [
    "MANAGE_MESSAGES", 
    "MANAGE_GUILD"
]- infracciones
 
Array de objetos que se usarán como infracciones. Cada uno debe tener una ID diferente.
Array: \<Objetos>
infracciones: [
    {
        id: "ID-QUE-QUIERAS",
        mensajes: 5,
        tiempo: 5000,
        args: {
            nombre: "Argumento que quieras",
            sas: "Fresca",
            lo: "que quieras"
        }
    },
    {
        id: "ID-QUE-QUIERAS-QUE-NO-SE-REPITA",
        mensajes: 10,
        tiempo: 6000,
        args: {
            nombre: "Argumento que quieras"
        }
    }
]Infracciones
- id
 
ID unica de la infracción. Puedes poner lo que quieras mientras no se repita.
String: "ID"
id: "ID-AQUI"- mensajes
 
Numero de mensajes en los que esta infracción se activará.
Number: 123
mensajes: 5- tiempo
 
Tiempo en milisegundos que pasará hasta que se resetee el numero de mensajes del usuario.
Number: 123
tiempo: 5000- args
 
Objeto para pasar argumentos desde el evento, puede llevar lo que quieras.
Object: { }
args: {
    hola: "si"
}Ejemplo de opciones del modulo
let antiFloodAjustes = {
    debug: true,
    ignorarBots: true,
    usuariosIgnorados: [
        "ID-USUARIO", 
        "ID-USUARIO"
    ],
    servidoresIgnorados: [
        "ID-SERVIDOR", 
        "ID-SERVIDOR"
    ],
    canalesIgnorados: [
        "ID-CANAL", 
        "ID-CANAL"
    ],
    permisosIgnorados: [
        "MANAGE_MESSAGES", 
        "MANAGE_GUILD"
    ],
    infracciones: [
        {
            id: "WARN",
            mensajes: 5,
            tiempo: 5000,
            args: {
                nombre: "Advertencia",
                sas: "Fresca"
            }
        },
        {
            id: "MUTE",
            mensajes: 10,
            tiempo: 5000,
            args: {
                nombre: "Muteo"
            }
        },
        {
            id: "KICK",
            mensajes: 10,
            tiempo: 5000,
            args: {
                nombre: "Expulsión"
            }
        }
    ]
};Eventos
- antiflood-infraccion
 
Evento emitido cuando un usuario sobrepasa el limite de mensajes de una infracción en el tiempo dado en los ajustes del modulo.
message: Objeto message de discord.js, el objeto es del mensaje que se consideró flood, da toda la información del miembro, canal y mensaje.
infraccion: Objeto de infracción, visto anteriormente. Proporciona la id, los mensajes, el tiempo y los argumentos de la infracción. 
client.on('antiflood-infraccion', async (message, infraccion) => {
    console.log(message, infraccion);
    
})Ejemplo de bot completo usando el modulo
const Discord = require('discord.js');
const client = new Discord.Client();
const antiFlood = require('discord-antiflood');
let antiFloodAjustes = {
    debug: true,
    ignorarBots: true,
    usuariosIgnorados: [
        "ID-USUARIO", 
        "ID-USUARIO"
    ],
    servidoresIgnorados: [
        "ID-SERVIDOR", 
        "ID-SERVIDOR"
    ],
    canalesIgnorados: [
        "ID-CANAL", 
        "ID-CANAL"
    ],
    permisosIgnorados: [
        "MANAGE_MESSAGES", 
        "MANAGE_GUILD"
    ],
    infracciones: [
        {
            id: "WARN",
            mensajes: 3,
            tiempo: 4000,
            args: {
                nombre: "Warn",
                sas: "Fresca"
            }
        },
        {
            id: "MUTE",
            mensajes: 6,
            tiempo: 5000,
            args: {
                nombre: "Muteo"
            }
        },
        {
            id: "KICK",
            mensajes: 10,
            tiempo: 6000,
            args: {
                nombre: "Kick"
            }
        }
    ]
};
antiFlood(client, antiFloodAjustes); // Activar el modulo para que reciba y emita eventos.
client.on('antiflood-infraccion', async (message, infraccion) => { // Evento emitido cuando se superan los limites de uno de los objetos del array de infracciones.
    
    if (infraccion.id === "WARN") { // Filtrar las infracciones comprobando su id para dar la sanción correspondiente.
        await message.channel.send(`<@${message.author.id}> ¡Deja de hacer flood! Has sido advertido.`);
        console.log(`[${infraccion.args.nombre}] ${message.author.tag} Fue advertido por hacer flood en el canal #${message.channel.name}.`);
    }
    if (infraccion.id === "MUTE") {
        
        if (message.guild.id == "ID-SERVER") {
            // Ejemplo de muteo, este se puede ejecutar en cualquier                 
            // servidor, pero solo podemos poner la id del rol de muteado 
            // de un servidor. Esto se puede solucionar con una base
            // de datos que obtenga la id del rol de muteado del server.
            if (message.guild.me.hasPermission('MANAGE_ROLES')) {
                await message.member.roles.add('ID-ROL-MUTEADO');
                await message.channel.send(`<@${message.author.id}> Ha sido muteado por hacer flood.`);
                console.log(`[${infraccion.args.nombre}] ${message.author.tag} Fue muteado por hacer flood en el canal #${message.channel.name}.`);
            }
        }
    }
    if (infraccion.id === "KICK") {
        
        if (message.guild.me.hasPermission('KICK_MEMBERS')) { // Comprobar que el bot tiene permisos para expulsar miembros.
            await message.member.kick('Hacer flood');
            await message.channel.send(`<@${message.author.id}> Ha sido expulsado por hacer flood.`);
            console.log(`[${infraccion.args.nombre}] ${message.author.tag} Fue expulsado por hacer flood en el canal #${message.channel.name}.`);
        }
    }
});
// El bot inicia sesion
client.login('token');Instalación
Si tienes problemas con el modulo puedes unirte al servidor de soporte.
Linux y Windows
1. Abre: CMD
2. Pon: npm i discord-antiflood@latest
Mac
- Instala: XCode
 - Pon: 
npm i discord-antiflood@latest 
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago