This package has been deprecated

Author message:

Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

discord-antiflood

2.1.1 • Public • Published

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

  1. Instala: XCode
  2. Pon: npm i discord-antiflood@latest

Package Sidebar

Install

npm i discord-antiflood

Weekly Downloads

1

Version

2.1.1

License

ISC

Unpacked Size

19.7 kB

Total Files

7

Last publish

Collaborators

  • tnfangel