distube
    TypeScript icon, indicating that this package has built-in type declarations

    2.8.18 • Public • Published

    npm Depfu Codacy Grade CodeFactor Grade

    DisTube

    A Discord.js v12 module to simplify your music commands and play songs with audio filters on Discord without any API key.

    DisTube Support Server - Frequently Asked Questions

    Features

    • Build on discord.js v12
    • Easily to use and customize
    • Support YouTube, SoundCloud, Facebook, and 700+ more sites
    • Audio filters (bassboost, nightcore, vaporwave,...)
    • Autoplay related YouTube songs
    • Prebuilt server queue
    • Multiple servers compatible

    Installation

    npm install distube
    

    Requirement

    Documentation

    Read DisTube's definitions, properties and events details in the Documentation page.

    Example Bot

    • DisTube-Bot - A music bot with reaction controller, filters, DJ mode, user's custom playlist and voting.
    • DisTube-Example - Example bot with simple command handler.
    // DisTube example bot, definitions, properties and events details in the Documentation page.
    const Discord = require('discord.js'),
        DisTube = require('distube'),
        client = new Discord.Client(),
        config = {
            prefix: ".",
            token: process.env.TOKEN || "Your Discord Token"
        };
    
    // Create a new DisTube
    const distube = new DisTube(client, { searchSongs: true, emitNewSongOnly: true });
    
    client.on('ready', () => {
        console.log(`Logged in as ${client.user.tag}!`);
    });
    
    client.on("message", async (message) => {
        if (message.author.bot) return;
        if (!message.content.startsWith(config.prefix)) return;
        const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
        const command = args.shift();
    
        if (command == "play")
            distube.play(message, args.join(" "));
    
        if (["repeat", "loop"].includes(command))
            distube.setRepeatMode(message, parseInt(args[0]));
    
        if (command == "stop") {
            distube.stop(message);
            message.channel.send("Stopped the music!");
        }
    
        if (command == "skip")
            distube.skip(message);
    
        if (command == "queue") {
            let queue = distube.getQueue(message);
            message.channel.send('Current queue:\n' + queue.songs.map((song, id) =>
                `**${id + 1}**. ${song.name} - \`${song.formattedDuration}\``
            ).slice(0, 10).join("\n"));
        }
    
        if ([`3d`, `bassboost`, `echo`, `karaoke`, `nightcore`, `vaporwave`].includes(command)) {
            let filter = distube.setFilter(message, command);
            message.channel.send("Current queue filter: " + (filter || "Off"));
        }
    });
    
    // Queue status template
    const status = (queue) => `Volume: \`${queue.volume}%\` | Filter: \`${queue.filter || "Off"}\` | Loop: \`${queue.repeatMode ? queue.repeatMode == 2 ? "All Queue" : "This Song" : "Off"}\` | Autoplay: \`${queue.autoplay ? "On" : "Off"}\``;
    
    // DisTube event listeners, more in the documentation page
    distube
        .on("playSong", (message, queue, song) => message.channel.send(
            `Playing \`${song.name}\` - \`${song.formattedDuration}\`\nRequested by: ${song.user}\n${status(queue)}`
        ))
        .on("addSong", (message, queue, song) => message.channel.send(
            `Added ${song.name} - \`${song.formattedDuration}\` to the queue by ${song.user}`
        ))
        .on("playList", (message, queue, playlist, song) => message.channel.send(
            `Play \`${playlist.name}\` playlist (${playlist.songs.length} songs).\nRequested by: ${song.user}\nNow playing \`${song.name}\` - \`${song.formattedDuration}\`\n${status(queue)}`
        ))
        .on("addList", (message, queue, playlist) => message.channel.send(
            `Added \`${playlist.name}\` playlist (${playlist.songs.length} songs) to queue\n${status(queue)}`
        ))
        // DisTubeOptions.searchSongs = true
        .on("searchResult", (message, result) => {
            let i = 0;
            message.channel.send(`**Choose an option from below**\n${result.map(song => `**${++i}**. ${song.name} - \`${song.formattedDuration}\``).join("\n")}\n*Enter anything else or wait 60 seconds to cancel*`);
        })
        // DisTubeOptions.searchSongs = true
        .on("searchCancel", (message) => message.channel.send(`Searching canceled`))
        .on("error", (message, e) => {
            console.error(e)
            message.channel.send("An error encountered: " + e);
        });
    
    client.login(config.token);

    Install

    npm i distube

    DownloadsWeekly Downloads

    28,735

    Version

    2.8.18

    License

    MIT

    Unpacked Size

    95.5 kB

    Total Files

    15

    Last publish

    Collaborators

    • skick