![Logo](https://i.imgur.com/kIk6lO3.png)
Un npm para detectar mensajes de spam totalmente configurable.
  ![Creador](https://raster.shields.io/static/v1?label=Creador&message=Seyron#5532&color=RED?style=flat&logo=appveyor)

## Instalación
Antes de instalarlo, debe tener instalado [Node.js](https://nodejs.org/en/download/)
La instalación se realiza mediante el [comando de instalación npm](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):

```bash
$ npm install dspamdetector --save
```


## Características
* Mínimo de letras para que lo analice(si el mensaje no supera el limite nunca lo detectara como spam).
* Mínimo de palabras.
* Máximo de mayúsculas.
* Prohibir palabras
* Máximo de letras repetidas en relación a la longitud del texto.
* Detecta flood.
* Actualizaciones constantes.

## Opciones
- **minletters:** Esta opcion es para determinar el numero de caracteres que debe tener el string para detectarlo (isSpam)
- **minwords:** Esta opcion es para determinar el numero de palabras que debe tener el string para detectarlo (isSpam)
- **maxpercentcaps:** Esta opcion es para determinar el porcentaje maximo de letras en mayusculas que puede haber (isSpam)
- **maxpercentletters:** Esta opcion es para determinar el porcentaje de caracteres maximo que puede haber en el string (isSpam)
- **blockedwords:** Esta opcion es para determinar las palabras que el detector determinara como spam directamente (isSpam)
- **floodt:** Esta opcion es para determinar el tiempo maximo en el que pueden mandar floodml mensajes (isFlood)
- **floodml:** Esta opcion es para determinar el numero de mensajes maximo que pueden mandar en floodt segundos (isFlood)

## Ejemplos

### Ejemplo 1: Petición básica
```js
const spamdetector = require("dspamdetector")
let opciones = {
                    minletters:5,
                    minwords:0,
                    maxpercentcaps:15,
                    maxpercentletters:60,
                    blockedwords:[]
                }
let detector = new spamdetector.detector(opciones)
let texto = "¿Hola que tal estás?"
console.log(detector.isSpam(texto)) // Si has puesto las mismas opciones, debería devolverte FALSE, es decir, que no es spam.
```

## Estas usando Discord.js?

### Ejemplo 1: Filtro Anti-Spam usando Discord.js
```js
const Discord = require('discord.js');
const client = new Discord.Client();
const spamdetector = require("dspamdetector")
let opciones = {
                    minletters:5,
                    minwords:0,
                    maxpercentcaps:15,
                    maxpercentletters:60,
                    blockedwords:[]
                }
let detector = new spamdetector.detector(opciones)

client.on("message", message => {
detector.isSpam(message.content).then(resultado => {
    if(resultado == true) {
        message.channel.send('Su mensaje ha sido considerado como spam.')
        message.delete()
    }
})
})
```
### Ejemplo 2: Filtro Anti-Flood usando Discord.js
```js
const Discord = require('discord.js');
const client = new Discord.Client();
const spamdetector = require("dspamdetector")

let opciones = {
                    floodt:60, //limite de segundos
                    floodml:3 //limite de mensajes
                }
let detector = new spamdetector.detector(opciones)

client.on("message", message => {
    //El 3 son el limite de mensajes y el 60 es cada cuanto tiempo por ejemplo si yo escribiera en menos de 1 minuto 3 mensajes el npm te dira que es spam
    if(message.author.bot) return //esta linea no es obligatoria pero al no ponerla el bot entrara en bucle ya que detectara sus propios mensajes como spam o borrara los mensajes de otros bots si los manda muy rapido
detector.isFlood(message.author.id,message.guild.id,message.channel.id).then(resultado => {
    if(resultado == true) {
        message.channel.send('Su mensaje ha sido considerado como flood.')
        message.delete()
    }
})
})
```
## setOptions
Esta función sirve para cuando te equivocas poniendo las opciones o si quieres cambiarlas
```js
const spamdetector = require("dspamdetector")
let detector = new spamdetector.detector() //Esto iniciaria el detector con las opciones por defecto
detector.setOptions({
                        minletters:2,
                        minwords:5,
                        maxpercentcaps:30,
                        maxpercentletters:80,
                        blockedwords:["hey"],
                        floodml:7,
                        floodt:120
                    }) // no recomiendo usar estas opciones, son solo un ejemplo
```


## Aclaracion

Aunque en los ejemplos en las opciones no esten todas juntas puedes ponerlas todas juntas y solo tener un detector asi:
```js
const Discord = require('discord.js');
const client = new Discord.Client();
const spamdetector = require("dspamdetector")

let opciones = {
                    minletters:5,
                    minwords:0,
                    maxpercentcaps:15,
                    maxpercentletters:60,
                    blockedwords:[],
                    floodt:60,
                    floodml:3
                }
let detector = new spamdetector.detector(opciones)

client.on("message", message => {
    if(message.author.bot) return
detector.isSpam(message.content).then(resultado => {
    if(resultado == true) {
        message.channel.send('Su mensaje ha sido considerado como spam.')
        message.delete()
    }
})
detector.isFlood(message.author.id,message.guild.id,message.channel.id).then(resultado => {
    if(resultado == true) {
        message.channel.send('Su mensaje ha sido considerado como flood.')
        message.delete()
    }
})
})
```


***Creado por: Discord Safe***