Ir al contenido

Módulo DisTube (Música)

El Módulo DisTube (@zumito-team/distube-module) incorpora capacidades completas de reproducción musical a tu bot mediante la librería DisTube. Soporta YouTube, Spotify, SoundCloud, BandLab y VK, y se integra con el User Panel para una interfaz de gestión de cola.

Ventana de terminal
npm install @zumito-team/distube-module

Agrega a tu zumito.config.ts:

bundles: ['@zumito-team/distube-module']

El servicio principal que envuelve una instancia de DisTube con plugins para múltiples plataformas:

PlataformaPlugin
YouTube@distube/youtube
Spotify@distube/spotify
SoundCloud@distube/soundcloud
BandLab@distube/bandlab
VK Musicdistube-vk-music-plugin

Accede a la instancia de DisTube directamente:

const music = ServiceContainer.getService('MusicService');
music.distube.play(voiceChannel, query);

Todos los comandos están en la categoría music:

ComandoDescripción
playReproduce una canción/playlist en tu canal de voz. Genera tarjeta “now playing”.
skipSalta la canción actual.
queueMuestra la cola de canciones.
stopDetiene la reproducción y limpia la cola.
pausePausa la reproducción.
resumeReanuda la reproducción pausada.
nowplayingMuestra información de la canción actual.
volumeAjusta el volumen de la música.
shuffleMezcla la cola.
loopActiva/desactiva el modo bucle.
seekSalta a una posición específica de la canción.
removeElimina una canción específica de la cola.
leaveEl bot abandona el canal de voz.
joinEl bot se une a tu canal de voz.
autoplayActiva/desactiva reproducción automática.
forwardAvanza en la canción actual.
rewindRetrocede la canción actual.
moveMueve una canción en la cola.
playskipReproduce una canción y salta a ella inmediatamente.
playtopAgrega una canción al inicio de la cola.
filtersAplica filtros de audio (nightcore, bassboost, etc.).
bassboostActiva/desactiva refuerzo de graves.

El módulo registra una página de Música en la barra lateral del User Panel en /panel/:guildId/music. Esta página muestra:

  • Canción actual con progreso
  • Lista completa de la cola
  • Controles de reproducción

El MusicService maneja estos eventos de DisTube:

EventoComportamiento
PLAY_SONGEnvía un mensaje al canal de texto.
ADD_SONGConfirma que la canción se agregó a la cola.
FFMPEG_DEBUGRegistra salida de depuración de ffmpeg.
ERRORRegistra información detallada de errores de DisTube.

El módulo usa estas variables de entorno implícitamente:

  • FFMPEG_PATH — Se establece automáticamente mediante ffmpeg-static. No se necesita configuración manual.

Las traducciones se definen en:

  • translations/en.json
  • translations/es.json

Puedes acceder a la instancia de DisTube y agregar tus propios plugins o extractores personalizados:

import { ServiceContainer } from 'zumito-framework';
const music = ServiceContainer.getService('MusicService');
const distube = music.distube;
// Agregar un plugin extractor personalizado
distube.extractors.push(miExtractorPersonalizado);

El comando play usa CanvasUtils para generar tarjetas de imagen. Puedes reemplazar la generación extendiendo o modificando el comando:

class ComandoPlayPersonalizado extends Command {
async execute(params: CommandParameters) {
const music = ServiceContainer.getService('MusicService');
// ... lógica personalizada ...
}
}

El módulo declara requeriments.services: ['UserPanelNavigationService'] y registra su página de música bajo la sección dashboard del User Panel. Cualquier módulo puede seguir este patrón para agregar páginas al panel de usuario.

  • distube — Librería principal de música.
  • @distube/youtube, @distube/spotify, @distube/soundcloud, @distube/bandlab, distube-vk-music-plugin — Plugins de plataformas.
  • @zumito-team/canvas-module — Para tarjetas “now playing”.
  • @zumito-team/user-panel-module — Para página de cola en panel de usuario.
  • @snazzah/davey — Soporte de letras.
  • ejs — Renderizado de plantillas.
  • ffmpeg-static — Binario FFmpeg.
  • opusscript — Codec de audio Opus.
  • discord.js (peer) — Cliente Discord.
  • zumito-framework
  • Módulo Canvas — Dependencia para generación de imágenes.
  • User Panel — Proporciona la interfaz para la cola de música.