Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

discord-player

Package Overview
Dependencies
Maintainers
2
Versions
358
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

discord-player

Complete framework to facilitate music commands using discord.js

  • 6.3.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
3K
decreased by-0.83%
Maintainers
2
Weekly downloads
 
Created
Source

Discord Player

Discord Player is a powerful framework for JavaScript and TypeScript, built on top of @discord.js/voice library. It provides easy set of customizable tools to develop Discord Music bots.

downloadsBadge versionBadge discordBadge

Why Discord Player?

  • Beginner friendly, easy to understand
  • TypeScript support
  • Supports audio player sharing
  • Quick and easy to set up
  • Wide range of player management features
  • 64+ built-in audio filter presets
  • Highly customizable
  • Automatic queue management
  • Query caching support
  • Wide range of extendable sources via Extractors API
  • Object oriented
  • Built in stats tracker

Installation

Before you start

Discord Player requires Discord.js 14.0 or higher. PLease make sure you have a compatible version using npm list discord.js in your terminal. If you're using an earlier version please update it. The Discord.JS Guide has resources to help with that.

Main Library
$ yarn add discord-player # main library
$ yarn add @discord-player/extractor # extractors provider

Discord Player recognizes @discord-player/extractor and loads it automatically by default.

Opus Library

Discord Player is a high level framework for Discord VoIP. Discord only accepts opus packets, thus you need to install opus library. You can install any of these:

$ yarn add @discordjs/opus
# or
$ yarn add opusscript
FFmpeg or Avconv

FFmpeg or Avconv is required for media transcoding. You can get it from https://ffmpeg.org or by installing it from npm (ffmpeg-static or other binaries are not recommended):

$ yarn add ffmpeg-static
# or
$ yarn add @ffmpeg-installer/ffmpeg
# or
$ yarn add @node-ffmpeg/node-ffmpeg-installer
# or
$ yarn add ffmpeg-binaries

Use FFMPEG_PATH environment variable to load ffmpeg from custom path.

Streaming Library

You also need to install streaming library if you want to add support for youtube playback. You can install one of these libraries:

$ yarn add ytdl-core
# or
$ yarn add play-dl
# or
$ yarn add @distube/ytdl-core

Done with all these? Let's write a simple music bot then.

Setup

Let's create a master player instance.

const { Player } = require('discord-player');

// get some extractors if you want to handpick sources
const { SpotifyExtractor, SoundCloudExtractor } = require('@discord-player/extractor');

const client = new Discord.Client({
    // Make sure you have 'GuildVoiceStates' intent enabled
    intents: ['GuildVoiceStates' /* Other intents */]
});


// this is the entrypoint for discord-player based application
const player = new Player(client);

// This method will load all the extractors from the @discord-player/extractor package
await player.extractors.loadDefault();

// If you dont want to use all of the extractors and register only the required ones manually, use
await player.extractors.register(SpotifyExtractor, {});
await player.extractors.register(SoundCloudExtractor, {});

Did You Know? Discord Player is by default a singleton.

Now, let's add some event listeners:

// this event is emitted whenever discord-player starts to play a track
player.events.on('playerStart', (queue, track) => {
    // we will later define queue.metadata object while creating the queue
    queue.metadata.channel.send(`Started playing **${track.title}**!`);
});

Let's write the command part. You can define the command as you desire. We will only check the command handler part:

async function execute(interaction) {
    const channel = interaction.message.member.voice.channel;
    if (!channel) return interaction.reply('You are not connected to a voice channel!'); // make sure we have a voice channel
    const query = interaction.options.getString('query', true); // we need input/query to play

    // let's defer the interaction as things can take time to process
    await interaction.deferReply();

    try {
        const { track } = await player.play(channel, query, {
            nodeOptions: {
                // nodeOptions are the options for guild node (aka your queue in simple word)
                metadata: interaction // we can access this metadata object using queue.metadata later on
            }
        });

        return interaction.followUp(`**${track.title}** enqueued!`);
    } catch (e) {
        // let's return error if something failed
        return interaction.followUp(`Something went wrong: ${e}`);
    }
}

That's all it takes to build your own music bot.

Check out the Documentation for more info.

Community Resources

A curated list of resources (such as open source music bots, extractors, etc.) built by Discord Player community. https://discord-player.js.org/docs/guides/community-resources

Keywords

FAQs

Package last updated on 30 Apr 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc