3.0.0 • Published 3 years ago

starmusic v3.0.0

Weekly downloads
55
License
MIT
Repository
github
Last release
3 years ago

Versión de NPM Descargas de NPM Estado ESLint Vulnerabilidades Conocidas DeepScan grade time tracker Chat de Discord

npm installnfo

forthebadge

Módulo de música para bots en Discord.js (v13) con el que podrás implementar la capacidad de reproducir música a tus bots, siendo fácil y en español.

Para ver los cambios recientes, no olvides leer el documento CHANGELOG.md

Instalación

npm install --save starmusic

Funciones

Configuraciones

Requiriendo el paquete

Usando ESM

import StarMusic from 'starmusic';

Usando CommonJS

const StarMusic = require('starmusic');

Inicializar

En su archivo principal del bot, index.js o server.js comúnmente, debe de iniciar el módulo antes de ser utilizado.

var music = new StarMusic({
    youtubeKey: 'Tu YouTube Data API3 key'
});

El constructor recibe {opciones} los cuales puedes revisar en esta tabla

Play

play(message, search);

Reproduce música dando un texto a buscar o un link de youtube, ya sea una canción o una lista el link. Cuando empieza la canción se mostrara su información y el reproductor.

  • Argumentos
  1. message: Corresponde a la variable message de tu evento messages de Discord.
  2. search: Será la cadena de texto que se tiene que buscar o un link de youtube.

Search

search(message, search);

Búsca una canción y selecciona una de las 10 opciones para reproducir la música. (Tienen que escribir del 1 al 10 después de usar el comando para elegir la canción)

  • Argumentos
  1. message: Corresponde a la variable message de tu evento messages de Discord.
  2. search: Será la cadena de texto que se tiene que buscar.

Pause

pause(message);

Pausa la reproducción actual.

  • Argumentos
  1. message: Corresponde a la variable message de tu evento messages de Discord.

Resume

resume(message);

Continúa con la reproducción previamente pausada.

  • Argumentos
  1. message: Corresponde a la variable message de tu evento messages de Discord.

skip

skip(message);

Salta la canción actual, si no hay otra canción el bot finalizará la reproducción.

  • Argumentos
  1. message: Corresponde a la variable message de tu evento messages de Discord.

Leave

leave(message);

Termina la reproduccion actual y salca al bot de el canal.

  • Argumentos
  1. message: Corresponde a la variable message de tu evento messages de Discord.

Np

np(message);

Te dice lo que está sonando en ese momento y abre el reproductor nuevamente.

  • Argumentos
  1. message: Corresponde a la variable message de tu evento messages de Discord.

Repeat

repeat(message, song);

Establece el modo de repetición de la cola de reproducción actual.

  • Argumentos
  1. message: Corresponde a la variable message de tu evento messages de Discord.
  2. song (opcional): Modo en número. Si no pasa esta propiedad el modo se establecerá al siguiente de la lista.

Modos:

  • 1: Modo repetir una canción.
  • 2: Repetir todas las canciones.
  • 0 | 3: Desactivar modo repetir.

Queue

queue(message, song);

Te muestra las canciones que tienes por reproducir y la actual. Si colocas un número representando la posisión de la canción en cola, te da información hacerca de esta.

  • Argumentos
  1. message: Corresponde a la variable message de tu evento messages.
  2. song (opcional): Número correspondiente a la posision de una canción.

Remove

remove(message, song);

Quita una canción en especifico de la cola de reproducción.

  • Argumentos
  1. message: Corresponde a la variable message de tu evento messages de Discord.
  2. song: Número correspondiente a la posision de la canción a quitar.

Clear

clear(message);

Quitará todas las canciones de la cola de reproducción menos la que esté sonando actualmente.

  • Argumentos
  1. message: Corresponde a la variable message de tu evento messages de Discord.

Opciones

Tabla de opciones y configuraciones

OpciónTipoDescripciónPor Defecto
youtubekeyStringKey de YouTube Data API3 que puedes obtener desde Google CloudNinguno
embedColorStringColor que se le dará a los embeds en hexadesimal o colores reservados de discord.jsRED
emojiStringEstablece el emoji que se mostrará en el reproductor🔴
maxTailNumberEstablece el límite de la cola que se permite50
bitrateStringEstablece el bitRate que discord.js usa y permiteauto
adminRolesArrayID de los roles con poder en los comandos como sacar al bot o omitir canciones sin ser quien puso la canciónNinguno
djRolesArrayID de los roles que pueden usar los comandos si soloDj es trueNinguno
justDjBooleansi es true, solamente los que tendan cierto rol podrán ocupar los comandosFalse
anyTakeOutBooleansi es true, cualquiera podrá usar el comando de salir, si es false, solamente quien puso la canción y admins podrán hacerloFalse
anyPauseBooleansi es true, cualquiera podrá usar el comando de pausar, si es false, solamente quien puso la canción y admins podrán hacerloFalse
anySkipBooleansi es true, cualquiera podrá usar el comando de omitir, si es false, solamente quien puso la canción y admins podrán hacerloFalse
newSongMessageBooleansi es true, saldrá un mensaje cuando termine una cancion y empiece una nueva con la información de la misma, si es false, no saldrá ningun mensajeTrue
showNameBooleansi es true, mostrará el nombre en el embed de quien solicitó la canciónTrue

Ejemplos

Usando un archivo (Nivel básico)

En nuestro archivo principal. Comunmente llamado index.js.

// Declaramos la base
const Discord = require('discord.js');
const StarMusic = require('starmusic');

const prefix = '!';
const client = new Discord.Client();

// Aquí iniciamos el módulo.
var music = new StarMusic({
    youtubeKey: 'ApiKey',
    adminRoles: ['IDRol']
    // Puedes poner las opciones que necesites.
});

// Evento para ver cuando el bot ya prendió y está funcionando.
client.on('ready', () => console.log('¡Encendido!'));

// Escuchamos los mensajes con el evento "messageCreate".
client.on('messageCreate', (message) => {
    // No hacemos nada si el mensaje no empieza con el prefijo o el usuario es un bot.
    if (!message.content.startsWith(prefix) || message.author.bot) return;

    if (message.content.startsWith(prefix + 'play')) {
        // Aquí medimos nuestro prefix y sumamos 4 por el largo de la palabra "play"
        let args = message.content.slice(prefix.length + 4);

        music.play(message, args.join(' '));
    }
});

client.login('SecretToken');

En TypeScript

import { Client, Message } from "discord.jsdiscord.js";
import StarMusic from "starmusic";

const prefix = '!';
const client = new Client();

// Iniciamos el módulo.
var starmusic = new StarMusic({
    youtubeKey: 'ApiKey'
});

// Escuchamos el evento "ready".
client.on('ready', () => console.log('¡Encendido!'));

// Escuchamos el evento "messageCreate".
client.on('messageCreate', (message: Message) => {
    // Retornamos si el mensaje no empieza con el prefijo o el usuario es un bot.
    if (!message.content.startsWith(prefix) || message.author.bot) return;

    if (message.content.startsWith(prefix + 'play')) {
        let args = message.content.slice(prefix.length + 4);

        starmusic.play(message, args.join(' '));
    }
});

// "TOKEN_BOT" Se define como variable de entorno en tu sistema operativo o usando dotenv y un archivo .env
client.login(process.env.TOKEN_BOT as string);

Usando Command handling (Nivel intermedio)

En nuestro archivo principal. Comunmente llamado index.js.

// Declaramos la base
const Discord = require('discord.js');
const StarMusic = require('starmusic');
const fs = require('fs');

const prefix = '!';
const client = new Discord.Client();
client.commands = new Discord.Collection();

// Aquí iniciamos el módulo y lo pasaremos por el cliente.
client.music = new StarMusic({
    youtubeKey: 'ApiKey',
    djRoles: ['IDRol', 'IDRol2'],
    embedColor: 'BLUE'
});

// Leemos la carpeta commands donde se encuentran nuestros archivos de comandos.
const commandFiles = fs.readdirSync('./commands').filter((file) => file.endsWith('.js'));

// Hacemos un for para leer los archivos escaneados previamente.
for (const file of commandFiles) {
    const command = require(`./commands/${file}`);

    /* Establecer un nuevo comando en la colección.
     * Ponemos como clave el nombre de comando y como valor el módulo exportado.
     */
    client.commands.set(command.name, command);
}

// Nuestro evento común de encendido
client.on('ready', () => console.log('¡Encendido!'));

// Escuchamos los mensajes con el evento "messageCreate".
client.on('messageCreate', (message) => {
    if (!message.content.startsWith(prefix) || message.author.bot) return;

    const args = message.content.slice(prefix.length).trim().split(/ +/);
    const command = args.shift().toLowerCase();

    if (command == 'play') {
        // Obtenemos nuestro comando y ejecutamos su función execute.
        client.commands.get('play').execute(client, message, args);
    }
});

client.login('SecretToken');

En la misma carpeta del bot, cree una nueva carpeta y asígnele un nombre como commands. Después crea un nuevo archivo llamado play.js copia y pega el siguiente código:

module.exports = {
    name: 'play',
    description: 'Reproduce una canción',
    execute(client, message, args) {
        // Ejecutamos la función play
        client.music.play(message, args.join(' '));
    }
};

Puedes ver una guía completa de como hacer manejo de comandos en esta guía (En inglés)

Usando en SlashCommands

En nuestro archivo principal. Comunmente llamado index.js.

// Declaramos la base
const Discord = require('discord.js');
const StarMusic = require('starmusic');
const fs = require('fs');

const prefix = '!';
const client = new Discord.Client();
client.commands = new Discord.Collection();

// Aquí iniciamos el módulo y lo pasaremos por el cliente.
client.music = new StarMusic({
    youtubeKey: 'ApiKey',
    djRoles: ['IDRol', 'IDRol2'],
    embedColor: 'BLUE'
});

// Nuestros eventos comunes...
client.on('ready', () => console.log('¡Encendido!'));

/* Debes de crear los slashCommands previamente conforme a lo que requieras
 * por ejemplo:
 * {
 *     name: "play",
 *     description: "Reproduce una canción de Youtube por su nombre o su url.",
 *     options: [
 *         {
 *             name: "song",
 *             type: "STRING",
 *             description: "Nombre de la canción o url a buscar.",
 *             required: true
 *         }
 *     ]
 * }
 */

// Escuchamos los comandos con el evento "interaction".
client.on('interactionCreate', (interaction) => {
    // Si nuestra interacción no es un comando, retornamos sin hacer nada
    if (!interaction.isCommand()) return;

    // Si es comando se llama play
    if (interaction.commandName === 'play') {
        // Tomamos el valor de búsqueda llamada song
        const url = interaction.options.get('song').value;
        // Ejecutamos la función play
        client.music.play(interaction, url);
        // Si es comando se llama leave
    } else if (interaction.commandName === 'leave') {
        client.music.leave(interaction);
    }
});

client.login('SecretToken');

Soporte

StarArmy