discord-vatron
Version:
Módulo para facilitar la interacción con la API de Discord
664 lines (502 loc) • 19 kB
Markdown
### Instalar el módulo
```
$ npm install discord-vatron --s
```
----------------------
> Este módulo te facilitará el desarrollo de un bot de Discord, teniendo funciones para hacerlo más fácil
### Crear nueva instancia de un bot
```js
const Discord = require('discord-vatron');
const bot = new Discord.Bot();
```
> Si tienes alguna duda puedes preguntar en el servidor de proyectos:
[https://discord.gg/aMAR32FuTP](https://discord.gg/aMAR32FuTP)
----------------------
## Lista clases
- [Bot](#bot)
- [BotUsuario](#botusuario)
- [Archivo](#archivo)
- [Botón](#boton)
- [Canal](#canal)
- [CanalCategoría](#canalcategoria)
- [CanalTexto](#canaltexto)
- [CanalVoz](#canalvoz)
- [Colección](#coleccion)
- [Embed](#embed)
- [Emoji](#emoji)
- [FilaBotones](#filabotones)
- [Interacción](#interaccion)
- [Menciones](#menciones)
- [Mensaje](#mensaje)
- [Miembro](#miembro)
- [Presencia](#presencia)
- [Role](#role)
- [Servidor](#servidor)
- [Usuario](#usuario)
----------------------
## Clases
## Bot
### Propiedades
- `intents` - Intents que usa
- `servidores` - [Colección](#coleccion) con los [servidores](#servidor) en los que se encuentra el bot
- `canales` - [Colección](#coleccion) con los [canales](#canal) de todos los servidores en los que se encuentra el bot
- `usuarios` - [Colección](#coleccion) con los [usuarios](#usuario) que vee el bot
- `roles` - [Colección](#coleccion) con los [roles](#role) de todos los servidores en los que se encuentra el bot
- `emojis` - [Colección](#coleccion) con los [emojis](#emoji) de todos los servidores en los que se encuentra el bot
- `presencias` - [Colección](#coleccion) con las [presencias](#presencia) de los usuarios que vee el bot
- `canalesMD` - [Colección](#coleccion) con los [canales](#canal) de MD que vee el bot
- `usuario` - [BotUsuario](#botusuario) del bot
### Métodos
`iniciar` - Inicia al bot mediante su token
> Ejemplo: `bot.iniciar('token')`
`obtenerCanal` - Obtiene un canal mediante la ID en caso de que no esté en la colección bot.canales
> Ejemplo: `bot.obtenerCanal('idCanal')`
### Eventos
- `listo` - Se emite cuando el bot está listo, recibe: [BotUsuario](#botusuario)
- `mensaje` - Se emite cuando se envia un nuevo mensaje a un canal de texto, recibe: [Mensaje](#mensaje)
- `mensajeEditado` - Se emite cuando se edita un mensaje, recibe: [MensajeAntiguo](#mensaje) | [MensajeNuevo](#mensaje)
- `mensajeEliminado` - Se emite cuando se elimina un mensaje, recibe: [Mensaje](#mensaje) (si estaba en la colección de mensajes)
- `servidorActualizado` - Se emite cuando se actualiza un servidor, recibe: [ServidorAntiguo](#servidor) | [ServidorNuevo](#servidor)
- `servidorEntrandoMiembro` - Se emite cuando un usuario entra a un servidor, recibe: [Miembro](#miembro)
- `servidorSaliendoMiembro` - Se emite cuando un miembro sale de un servidor, recibe: [Miembro](#miembro)
- `servidorMiembroActualizado` - Se emite cuando un miembro es actualizado, recibe: [MiembroAntiguo](#miembro) | [MiembroNuevo](#miembro)
- `canalActualizado` - Se emite cuando se actualiza un canal, recibe: [CanalAntiguo](#canal) | [CanalNuevo](#canal)
- `canalEliminado` - Se emite cuando se elimina un canal, recibe: [Canal](#canal)
- `servidorEliminado` - Se emite cuando un servidor es eliminado, recibe: [Servidor](#servidor)
- `usuarioActualizado` - Se emite cuando se actualiza un usuario, recibe: [UsuarioAntiguo](#usuario) | [UsuarioNuevo](#usuario)
- `presenciaActualizada` - Se emite cuando se actualiza una presencia, recibe: [PresenciaAntigua](#presencia) | [PresenciaNueva](#presencia)
- `servidorRoleCreado` - Se emite cuando se crea un role en un servidor, recibe: [Role](#role)
- `servidorRoleEliminado` - Se emite cuando se elimina un role en un servidor, recibe: [Role](#role)
- `servidorRoleActualizado` - Se emite cuando se actualiza un role en un servidor, recibe: [RoleAntiguo](#role) | [RoleNuevo](#role)
- `servidorEmojisActualizados` - Se emite cuando se actualizan los emojis del servidor, recibe: [Servidor](#servidor) | [ListaEmojis](#emoji)
- `interaccionCreada` - Se emite cuando se interactua con una interacción, recibe: [Interacción](#interaccion)
## BotUsuario
> Extiende a la clase [Usuario](#usuario)
### Métodos
`estPresencia` - Cambia la presencia actual del bot
> Ejemplo:
```js
bot.usuario.estPresencia({
estado: 'enLinea | noMolestar | ausente',
juego: {
nombre: 'Texto para la presencia',
tipo: 'JUGANDO | TRANSMITIENDO | ESCUCHANDO | VIENDO'
}
});
```
## Archivo
### Propiedades
- `anchura` - Anchura del archivo
- `altura` - Altura del archivo
- `tamano` - Tamaño del archivo
- `url` - URL del archivo
- `urlProxy` - URL Proxy del archivo
- `nombre` - Nombre del archivo
- `tipoContenido` - Tipo del contenido del archivo, por ejemplo: **image/png**
## Botón
> new Discord.Boton(boton?)
### Métodos
`estEstilo` - Cambia el estilo del botón; AZUL | GRIS | VERDE | ROJO | URL
> Ejemplo: `boton.estEstilo('estilo')`
`estTexto` - Cambia el texto del botón
> Ejemplo: `boton.estTexto('Click aquí')`
`estEmoji` - Cambia el emoji del botón
> Ejemplo: `boton.estEmoji('👋 | emojiDeServidor')`
`estID` - Cambia la ID del botón (no disponible cuando se usa estilo URL)
> Ejemplo: `boton.estID('id')`
`estDesactivado` - Activa o desactiva el botón
> Ejemplo: `boton.estDesactivado(true|false)`
`estURL` - Cambia la URL del botón (sólo disponible cuando se usa el estilo URL)
> Ejemplo: `boton.estURL('https://discord.gg/aMAR32FuTP')`
## Canal
### Propiedades
- `nombre` - Nombre del canal
- `id` - ID del canal
- `tipo` - Tipo del canal
- `servidor` - [Servidor](#servidor) en el que se encuentra el canal
- `categoria` - [CanalCategoría](#canalcategoria) en el que se encuentra el canal
### Métodos
`eliminar` - Elimina el canal
## CanalCategoría
> Extiende a la clase [Canal](#canal)
### Propiedades
- `canales` - [Colección](#coleccion) con los [canales](#canal) que se encuentran dentro de esa categoría
## CanalTexto
> Extiende a la clase [Canal](#canal)
### Propiedades
- `tema` - Tema del canal
- `nfsw` - Si el canal es NSFW o no
- `tiempoPausa` - El tiempo de pausa entre [mensaje](#mensaje) y [mensaje](#mensaje) en segundos
- `mensajes` - [Colección](#coleccion) con los [mensajes](#mensaje) que se enviaron después de iniciar al bot
- `ultimoMensaje` - Último [mensaje](#mensaje) que se envió al canal, si es que está en la colección de mensajes
### Métodos
`enviar` - Envia un mensaje al canal, devuelve una promesa que al resolverla devuelve el [mensaje](#mensaje)
> Ejemplo
```js
canalTexto.enviar({
contenido: 'Contenido del mensaje',
embeds: arrayConEmbeds,
botones: arrayConBotones,
filas: arrayConFilasBotones,
responder: mensaje
});
```
`obtenerMensaje` - Obtiene un [mensaje](#mensaje) del canal en caso de que no esté en la colección de mensajes
> Ejemplo: `canalTexto.obtenerMensaje('idMensaje')`
`crearColectorMensajes` - Crea un colector de mensajes
> Ejemplo
```js
const colector = canalTexto.crearColectorMensajes((msj) => msj.autor.id == mensaje.autor.id, { tiempo: milisegundos });
colector.on('recibido', (mensaje) => {
// lo que quieras
// para finalizar: colector.finalizar('razón');
});
colector.on('finalizado', (razon) => {
console.log(razon);
});
```
`editar` - Edita el canal
> Ejemplo
```js
canalTexto.editar({
nombre: 'nombre',
tema: 'tema',
posicion: num,
nsfw: true|false,
categoria: categoria|id
});
```
## CanalVoz
> Extiende a la clase [Canal](#canal)
### Propiedades
- `miembros` - [Colección](#coleccion) de [miembros](#miembro) que se encuentran conectados al canal de voz
- `limiteUsuarios` - Número máximo de miembros que se pueden conectar al canal
### Métodos
`editar` - Edita el canal
> Ejemplo
```js
canalTexto.editar({
nombre: 'nombre',
posicion: num,
categoria: categoria|id,
limiteUsuarios: num
});
```
## Colección
> Extiende a la clase [Map](https://developer.mozilla.org/es/docs/orphaned/Web/JavaScript/Reference/Global_Objects/Map)
### Métodos
- `map` - Mapea los valores de la colección
- `algunoCumple` - Verifica si algún valor de la colección cumple la condición propuesta en la función
- `todosCumplen` - Verifica si todos los valores de la colección cumplen la condición propuesta en la función
- `encontrar` - Encuentra el primer valor de la colección que cumpla con la condición propuesta en la función
- `filtrar` - Filtra los valores de la colección mediante si cumplen la condición propuesta en la función
- `ordenar` - Ordena los valores de la condición según la función
- `primero` - Obtén el primer valor de la colección
- `ultimo` - Obtén el último valor de la colección
- `aleatorio` - Obtén un valor de la colección aleatorio (si pones un número) devuelve un array con varios
- `claves` - Obtén un array con todas las claves de la colección
- `array` - Obtén un array con todos los valores de la colección
## Embed
> new Discord.Embed(embed?)
### Métodos
`estTitulo` - Establece el título del embed
`estAutor` - Establece el autor en el embed
> Ejemplo
```js
embed.estAutor({
nombre: 'autor',
url: 'urlAutor',
icono: 'urlIcono'
});
```
`estDesc` - Establece la descripción del embed
`estColor` - Establece el color del embed, puedes usar: AZUL | ROJO | VERDE | BLANCO | AGUA | AMARILLO | MORADO | DORADO | NARANJA | GRIS | NEGRO | ALEATORIO
`estImg` - Establece la imagen del embed
> Ejemplo
```js
embed.estImg({
url: 'urlImagen'
});
```
`estVideo` - Establece el vídeo del embed
> Ejemplo
```js
embed.estVideo({
url: 'urlVideo'
});
```
`estMarcaTiempo` - Establece la marca de tiempo en el embed
> Ejemplo: `embed.estMarcaTiempo(Date.now()+60000)` (la de dentro de 1 minuto)
`anadirCampo` - Añade un campo al embed
> Ejemplo
```js
embed.anadirCampo({
titulo: 'título',
desc: 'descripción',
enLinea: true|false
});
```
`estUrl` - Establece la URL del embed
> Ejemplo: `embed.estUrl('https://discord.gg/aMAR32FuTP')`
`estMiniatura` - Establece la miniatura del embed
> Ejemplo
```js
embed.estMiniatura({
url: 'urlImagen'
});
```
`estPie` - Establece el pie del embed
> Ejemplo
```js
embed.estPie({
texto: 'texto',
icono: 'urlImagen'
});
```
## Emoji
### Propiedades
- `nombre` - Nombre del emoji
- `id` - ID del emoji
- `animado` - Si es el animado el emoji
- `servidor` - Servidor en el que se encuentra el emoji
### Métodos
`editar` - Edita el emoji
> Ejemplo
```js
emoji.editar({
nombre: 'nombre'
});
```
`eliminar` - Elimina el emoji
> Ejemplo: `emoji.eliminar()`
## FilaBotones
> new Discord.FilaBotones(...botones?)
### Métodos
`anadirBoton` - Añade un botón a la fila
## Interacción
### Propiedades
`mensaje` - [Mensaje](#mensaje) de la interacción
`servidor` - [Servidor](#servidor) de la interacción
`canal` - [Canal](#canaltexto) de la interacción
`miembro` - [Miembro](#miembro) que ejecuta la interacción
`idBoton` - ID del [botón](#boton) presionado
### Métodos
`responder` - Responde a la interacción
> Ejemplo
```js
interaccion.responder({
contenido: 'contenido',
embeds: arrayConEmbeds,
propio: true|false
});
```
`aplazar` - Aplaza la interacción (no responder nada)
> Ejemplo: `interaccion.aplazar()`
`pensar` - Piensa el resultado de la interacción
> Ejemplo
```js
interaccion.pensar({
propio: true|false
});
```
## Menciones
> Extiende a la clase [Colección](#coleccion)
### Propiedades
- `usuarios` - [Colección](#coleccion) con los [usuarios](#usuario) mencionados
- `miembros` - [Colección](#coleccion) con los [miembros](#miembro) mencionados
- `roles` - [Colección](#coleccion) con los [roles](#role) mencionados
- `canales` - [Colección](#coleccion) con los [canales](#canal) mencionados
## Mensaje
### Propiedades
- `contenido` - Contenido del mensaje
- `id` - ID del mensaje
- `canal` - [Canal](#canaltexto) del mensaje
- `marcaTiempoEnviado` - Marca de tiempo en el que fue enviado el mensaje
- `marcaTiempoEditado` - Marca de tiempo en el que fue editado el mensaje
- `tts` - Si el mensaje es tts o no
- `everyoneMencionado` - Si está mencionado everyone o no
- `fijado` - Si el mensaje está fijado o no
- `miembro` - [Miembro](#miembro) que escribe el mensaje
- `servidor` - [Servidor](#servidor) en el que escribe el mensaje
- `embeds` - Array con los [embeds](#embeds) del mensaje
- `editable` - Obtén si es editable o no el mensaje
- `url` - URL del mensaje
- `esWebhook` - Verifica si es un webhook el mensaje
- `autor` - [Usuario](#usuario) que escribió el mensaje
- `reacciones` - [Colección](#coleccion) con las reacciones del mensaje
- `menciones` - [Menciones](#menciones) del mensaje
- `archivos` - [Archivos](#archivo) que se encuentran en el mensaje
### Métodos
`eliminar` - Eliminar el mensaje
`editar` - Edita el mensaje
> Ejemplo
```js
mensaje.editar({
contenido: 'Contenido del mensaje',
embeds: arrayConEmbeds,
botones: arrayConBotones,
filas: arrayConFilasBotones
});
```
`responder` - Responde a un mensaje
> Ejemplo
```js
mensaje.responder({
contenido: 'texto',
embeds: arrayConEmbeds,
botones: arrayConBotones,
filas: arrayConFilasBotones
});
```
`reaccionar` - Reacciona al mensaje
> Ejemplo: `mensaje.reaccionar('👋 | emojiDelServidor')`
`crearColectorBotones` - Crea un colector de botones (cuando se pulsa algún botón del mensaje)
> Ejemplo
```js
const colector = mensaje.crearColectorBotones((interaccion) => interaccion.miembro.id == mensaje.autor.id, { tiempo: milisegundos });
colector.on('recibido', (interaccion) => {
// lo que quieras
// para finalizar: colector.finalizar('razón');
});
colector.on('finalizado', (razon) => {
console.log(razon);
});
```
## Miembro
### Propiedades
- `usuario` - Miembro en forma de [usuario](#usuario)
- `id` - ID del miembro
- `marcaTiempoUnido` - Marca de tiempo de cuando se unió el miembro
- `servidor` - [Servidor](#servidor) del que es el miembro
- `avatar` - Avatar del miembro
- `roles` - [Colección](#coleccion) con los roles del miembro
- `roleAlto` - [Role](#role) más alto del miembro
- `permisos` - [Colección](#coleccion) con los permisos del miembro
- `canalVoz` - [CanalVoz](#canalvoz) en el que está el miembro
### Métodos
`anadirRole` - Añade un [role](#role) al miembro
> Ejemplo: `miembro.anadirRole('idRole|role')`
`eliminarRole` - Elimina un [role](#role) al miembro
> Ejemplo: `miembro.eliminarRole('idRole|role')`
`urlAvatar` - Obtén la URL del avatar del miembro
> Ejemplo: `miembro.urlAvatar({ tamano: num, defecto: true|false })`
`banear` - Banea al miembro
> Ejemplo: `miembro.banear({ dias: num, razon: 'Razón del baneo' })`
`expulsar` - Expulsa al miembro
> Ejemplo: `miembro.expulsar('Razón del baneo')`
`apodo` - Obtén el apodo del miembro
> Ejemplo: `miembro.apodo(true|false)`
`estApodo` - Establece el apodo del miembro
> Ejemplo: `miembro.estApodo('apodo')`
## Presencia
### Propiedades
- `juego` - Juego al que se está jugando actualmente
- `actividades` - Actividades que se están realizando actualmente
- `usuario` - Usuario de la presencia
## Role
### Propiedades
- `nombre` - Nombre del role
- `id` - ID del role
- `separado` - Separado del resto de roles
- `posicion` - Posición del role
- `administrado` - Role administrado por algún servicio externo
- `mencionable` - Role mencionable o no
- `color` - Color del role
- `servidor` - Servidor del role
- `permisos` - Permisos del role
- `miembros` - Miembros que tienen el role
### Métodos
`eliminar` - Elimina el role
`editar` - Edita el role
> Ejemplo
```js
role.editar({
nombre: 'nombre',
color: 'color',
separado: true|false,
mencionable: true|false
});
```
## Servidor
### Propiedades
- `nombre` - Nombre del servidor
- `id` - ID del servidor
- `nivelVerificacion` - Nivel de verificación del servidor
- `tiempoAFK` - Tiempo para ser considerado AFK en segundos
- `miembros` - [Colección](#coleccion) con los [miembros](#miembro) del servidor
- `canales` - [Colección](#coleccion) con los [canales](#canal) del servidor
- `emojis` - [Colección](#coleccion) con los [emojis](#emoji) del servidor
- `roles` - [Colección](#coleccion) con los [roles](#role) del servidor
- `region` - Región del servidor
- `salpicadura` - Salpicadura del servidor
- `dueno` - [Miembro](#miembro) que es dueño del servidor
- `yo` - [Miembro](#miembro) referido al bot
- `canalAFK` - [CanalVoz](#canalvoz) para AFK's
- `canalSistema` - [CanalTexto](#canaltexto) del sistema
- `canalReglas` - [CanalTexto](#canaltexto) de reglas
### Métodos
`editar` - Edita el servidor
> Ejemplo
```js
servidor.editar({
nombre: 'nombre',
region: 'región',
nivelVerificacion: num,
canalAFK: 'idCanal|CanalVoz',
icono: 'urlIcono',
salpicadura: 'urlSalpicadura',
canalSistema: 'idCanal|CanalTexto',
canalReglas: 'idCanal|CanalTexto'
});
```
`crearRole` - Crea un [role](#role) en el servidor
> Ejemplo
```js
servidor.crearRole({
nombre: 'nombre',
color: 'color',
separado: true|false,
mencionable: true|false
});
```
`crearCanal` - Crea un [canal](#canal) en el servidor
> Ejemplo
```js
servidor.crearCanal({
nombre: 'nombre',
tipo: 'texto|voz|categoría',
tema: 'tema',
limiteUsuarios: num,
tiempoPausa: num,
categoria: 'idCanal|CanalCategoría',
nsfw: true|false
});
```
`icono` - Obtén el icono del servidor
> Ejemplo: `servidor.icono(tamaño)`
`desbanear` - Desbanea a un miembro
> Ejemplo: `servidor.desbanear('idMiembro')`
## Usuario
### Propiedades
- `nombre` - Nombre de usuario
- `nombreCompleto` - Nombre de usuario con el #TAG incluido
- `id` - ID del usuario
- `tag` - #TAG del usuario
- `bot` - El usuario es un bot o no
- `sistema` - El usuario es parte del sistema o no
- `avatar` - Avatar del usuario
- `presencia` - [Presencia](#presencia) del usuario
- `banderas` - Banderas que tiene el usuario en su perfil
### Métodos
`enviar` - Envia un mensaje al usuario
> Ejemplo
```js
usuario.enviar({
contenido: 'texto',
embeds: arrayConEmbeds,
botones: arrayConBotones,
filas: arrayConFilasBotones
});
```
`urlAvatar` - Obtén la URL del avatar del usuario
> Ejemplo: `usuario.urlAvatar(tamaño)`