discord-utils-spanish
Version:
Un package que incluye diferentes caracteristicas y funciones para usarlas en tu bot de Discord!
154 lines (103 loc) • 4.72 kB
Markdown
# Haciendo el Setup
Primero que todo, deberemos iniciar el modulo en nuestro proyecto a usar
```js
const { mongoConnect, messages } = require("discord-utils-spanish");
```
Despues de definir esto, usaremos la funcion de `mongoConnect` para conectar con MongoDB donde guardaremos todos estos datos.
```js
mongoConnect("mongodb://...");
```
Nota: **Este proceso solo se hace una vez en todo el proyecto**
## Notas
- Estos ejemplos se basan asumiendo que tu `Discord.js Client` esta definido como `client`
- Aqui estamos basandonos en <a href="https://www.npmjs.com/package/discord.js">Discord.js v13</a> por lo cual factores como lo son `client.on("messageCreate", async(message)...` deben ser reemplazados por `client.on("message", async(message)...` si estas usando Discord.js v12
- Todas las funciones del NPM devuelven una promesa por lo tanto deben usarse en codigos asincronicas. Usando `await`
## Metodos y/o Funciones ✏️
- **addMessages**
Agrega una cantidad de mensajes a un usuario
```js
messages.addMessages(<GuildID - String>, <UserID - String>, <Amount - Number>)
```
- Salida
```cli
Promise<Boolean>
```
- **removeMessages**
Remueve una cantidad de mensajes a un usuario
```js
messages.removeMessages(<GuildID - String>, <UserID - String>, <Amount - Number>)
```
- Salida
```cli
Promise<Boolean>
```
- **setMessages**
Setea la cantidad de mensajes a un usuario
```js
messages.setMessages(<GuildID - String>, <UserID - String>, <Amount - Number>)
```
- Salida
```cli
Promise<Boolean>
```
- **deleteUserData**
Borra los datos de un usuario en la db si este existe
```js
messages.deleteUserData(<GuildID - String>, <UserID - String>)
```
- Salida
```cli
Promise<Boolean>
```
- **deleteGuildData**
Borra los datos de un servidor en la db si este existe
```js
messages.deleteGuildData(<GuildID - String>)
```
- Salida
```cli
Promise<Boolean>
```
- **fetchUser**
Obtiene la informacion de un usuario en la db
```js
messages.fetchUser(<GuildID - String>, <UserID - String>)
```
- Salida
```cli
Promise<Boolean/Object>
```
- **fetchLeaderboard**
Obtiene la informacion de todos los usuarios en un servidor de forma descendente de acuerdo a su cantidad de mensajes actual
```js
messages.fetchLeaderboard(<CLient - Discord.js Client>, <GuildID - String>)
```
- Salida
```cli
Promise<Array>
```
# Ejemplos y Usos
Asumiendo que ya se ha hecho el Setup anteriormente procedemos a iniciar con el sistema de mensajes
- **Iniciando el trackeo de mensajes**
```js
client.on("messageCreate", async (message) => { // Abrimos el evento de "messageCreate" en este caso
if (!message.guild) return; // Si el mensaje no se ha enviado desde un servidor, se ignora
if (message.author.bot) return; // Si el autor del mensaje es un bot, se ignora
messages.addMessages(message.guild.id, message.author.id, 1) //Aqui se agrega 1 mensaje al enviar este
}); //Se cierra el evento
```
- **Obteniendo los mensajes y la posicion del usuario en el servidor**
```js
const user = message.mentions.users.first() || message.author; // Definimos el usuario a buscar los datos
const userData = await messages.fetchUser(message.guild.id, user.id); // Buscamos los datos del usuario en la db
if(!user) return message.reply({ content: 'No tengo registrado mensajes del usuario en el servidor :(' }) // Si no se encuentra informacion sobre el usuario se retorna que no se ha encontrado este
message.reply({ content: `${user.tag} tiene ${userData.messages} en el servidor y se encuentra en la posicion ${userData.position}` }) //Se regresa los mensajes y la posicion del usuario en el servidor
```
- **Comando de Leaderboard**
```js
const leaderboard = await messages.fetchLeaderboard(client, message.guild.id) // Obtenemos informacion de la leaderboard
if(leaderboard.length < 1) message.reply({ content: 'No he encontrado mensajes registrados de ningun miembro en el servidor' }) // Si no ha encontrado informacion en la db retornara que no se ha podido encontrar
const leaderboardUsers = leaderboard.slice(0, 15).map(data => `${data.position}. ${data.user.tag} | Mensajes: \`${data.messages.toLocaleString()}\``).join('\n') // Mapeamos la leaderboard para obtener la informacion de los usuarios
message.reply({ content: `**Leaderboard de Mensajes en ${message.guild.name}**\n\n${leaderboardUsers}` }) //Regresamos la leaderboard con los usuarios con mas mensajes
```
Todos estos ejemplos son para guiarte en como puedes usar estas caracteristicas y funciones. De resto depende de ti y tu creatividad de usar estos datos como gustes 👍