npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

starmusic

v3.0.0

Published

Reproduce tu música fácilmente, en español y sin complicaciones.

Downloads

11

Readme

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ón | Tipo | Descripción | Por Defecto | | -------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | | youtubekey | String | Key de YouTube Data API3 que puedes obtener desde Google Cloud | Ninguno | | embedColor | String | Color que se le dará a los embeds en hexadesimal o colores reservados de discord.js | RED | | emoji | String | Establece el emoji que se mostrará en el reproductor | 🔴 | | maxTail | Number | Establece el límite de la cola que se permite | 50 | | bitrate | String | Establece el bitRate que discord.js usa y permite | auto | | adminRoles | Array | ID de los roles con poder en los comandos como sacar al bot o omitir canciones sin ser quien puso la canción | Ninguno | | djRoles | Array | ID de los roles que pueden usar los comandos si soloDj es true | Ninguno | | justDj | Boolean | si es true, solamente los que tendan cierto rol podrán ocupar los comandos | False | | anyTakeOut | Boolean | si es true, cualquiera podrá usar el comando de salir, si es false, solamente quien puso la canción y admins podrán hacerlo | False | | anyPause | Boolean | si es true, cualquiera podrá usar el comando de pausar, si es false, solamente quien puso la canción y admins podrán hacerlo | False | | anySkip | Boolean | si es true, cualquiera podrá usar el comando de omitir, si es false, solamente quien puso la canción y admins podrán hacerlo | False | | newSongMessage | Boolean | si 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 mensaje | True | | showName | Boolean | si es true, mostrará el nombre en el embed de quien solicitó la canción | True |

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