
Company News
/Security News
Socket Selected for OpenAI's Cybersecurity Grant Program
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.
discord-music-player
Advanced tools
Complete framework to facilitate music commands using discord.js v14 and v13.
Discord Music Player is a powerful Node.js module that allows you to easily implement music commands. Everything is customizable, and everything can be done using this package - there are no limitations!
This package supports YouTube Videos & Playlists, Spotify Songs & Playlists, Apple Music Songs & Playlists. Package from version v7.0.0 is fully maintained by SushiBtw.
Node.JS v16 or newer is required to run this module.
npm install --save discord-music-player
Install @discordjs/opus:
npm install --save @discordjs/opus
Install FFMPEG!
Discord Music Player documentation: https://discord-music-player.js.org/
Feel free to join Discord-Music-Player Discord Server and ask us about DMP.
The code bellow, will show you how to use DMP in your code.
Please define your Player after the client/bot definition.
[!] Remember to include the related voice Intents at the client options. [!]
const Discord = require("discord.js");
const client = new Discord.Client({
intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_VOICE_STATES]
});
const settings = {
prefix: '!',
token: 'YourBotTokenHere'
};
const { Player } = require("discord-music-player");
const player = new Player(client, {
leaveOnEmpty: false, // This options are optional.
});
// You can define the Player as *client.player* to easily access it.
client.player = player;
client.on("ready", () => {
console.log("I am ready to Play with DMP 🎶");
});
client.login(settings.token);
const { RepeatMode } = require('discord-music-player');
client.on('messageCreate', async (message) => {
const args = message.content.slice(settings.prefix.length).trim().split(/ +/g);
const command = args.shift();
let guildQueue = client.player.getQueue(message.guild.id);
if(command === 'play') {
let queue = client.player.createQueue(message.guild.id);
await queue.join(message.member.voice.channel);
let song = await queue.play(args.join(' ')).catch(err => {
console.log(err);
if(!guildQueue)
queue.stop();
});
}
if(command === 'playlist') {
let queue = client.player.createQueue(message.guild.id);
await queue.join(message.member.voice.channel);
let song = await queue.playlist(args.join(' ')).catch(err => {
console.log(err);
if(!guildQueue)
queue.stop();
});
}
if(command === 'skip') {
guildQueue.skip();
}
if(command === 'stop') {
guildQueue.stop();
}
if(command === 'removeLoop') {
guildQueue.setRepeatMode(RepeatMode.DISABLED); // or 0 instead of RepeatMode.DISABLED
}
if(command === 'toggleLoop') {
guildQueue.setRepeatMode(RepeatMode.SONG); // or 1 instead of RepeatMode.SONG
}
if(command === 'toggleQueueLoop') {
guildQueue.setRepeatMode(RepeatMode.QUEUE); // or 2 instead of RepeatMode.QUEUE
}
if(command === 'setVolume') {
guildQueue.setVolume(parseInt(args[0]));
}
if(command === 'seek') {
guildQueue.seek(parseInt(args[0]) * 1000);
}
if(command === 'clearQueue') {
guildQueue.clearQueue();
}
if(command === 'shuffle') {
guildQueue.shuffle();
}
if(command === 'getQueue') {
console.log(guildQueue);
}
if(command === 'getVolume') {
console.log(guildQueue.volume)
}
if(command === 'nowPlaying') {
console.log(`Now playing: ${guildQueue.nowPlaying}`);
}
if(command === 'pause') {
guildQueue.setPaused(true);
}
if(command === 'resume') {
guildQueue.setPaused(false);
}
if(command === 'remove') {
guildQueue.remove(parseInt(args[0]));
}
if(command === 'createProgressBar') {
const ProgressBar = guildQueue.createProgressBar();
// [======> ][00:35/2:20]
console.log(ProgressBar.prettier);
}
})
// Init the event listener only once (at the top of your code).
client.player
// Emitted when channel was empty.
.on('channelEmpty', (queue) =>
console.log(`Everyone left the Voice Channel, queue ended.`))
// Emitted when a song was added to the queue.
.on('songAdd', (queue, song) =>
console.log(`Song ${song} was added to the queue.`))
// Emitted when a playlist was added to the queue.
.on('playlistAdd', (queue, playlist) =>
console.log(`Playlist ${playlist} with ${playlist.songs.length} was added to the queue.`))
// Emitted when there was no more music to play.
.on('queueDestroyed', (queue) =>
console.log(`The queue was destroyed.`))
// Emitted when the queue was destroyed (either by ending or stopping).
.on('queueEnd', (queue) =>
console.log(`The queue has ended.`))
// Emitted when a song changed.
.on('songChanged', (queue, newSong, oldSong) =>
console.log(`${newSong} is now playing.`))
// Emitted when a first song in the queue started playing.
.on('songFirst', (queue, song) =>
console.log(`Started playing ${song}.`))
// Emitted when someone disconnected the bot from the channel.
.on('clientDisconnect', (queue) =>
console.log(`I was kicked from the Voice Channel, queue ended.`))
// Emitted when deafenOnJoin is true and the bot was undeafened
.on('clientUndeafen', (queue) =>
console.log(`I got undefeanded.`))
// Emitted when there was an error in runtime
.on('error', (error, queue) => {
console.log(`Error: ${error} in ${queue.guild.name}`);
});
While running the Queue#createQueue() method you can pass a options#data object to hold custom data.
This can be made in two ways:
// Pass custom data
await player.createQueue(message.guild.id, {
data: {
queueInitMessage: message,
myObject: 'this will stay with the queue :)',
more: 'add more... there are no limitations...'
}
});
// Or by using
queue.setData({
whatever: 'you want :D'
});
// Access custom data
let queue = player.getQueue(message.guild.id);
let initMessage = queue.data.queueInitMessage;
await initMessage.channel.send(`This message object is hold in Queue :D`);
While running the Queue#play()/Queue#playlist() method you can pass a options#data object to hold custom data.
This can be made in two ways:
// Play the song
let song = await queue.play('Born in the USA!');
// Set song data
song.setData({
initMessage: message
});
// Play the playlist
let playlist = await queue.playlist('https://www.youtube.com/playlist?list=PLDLGxnP4y2mGKGEqwxWTRkd3HtrrVTMdU');
// Set playlist data (will set data for each song in the playlist)
song.setData({
initMessage: message
});
// Access custom data
let queue = player.getQueue(message.guild.id);
let { initMessage } = queue.nowPlaying.data;
await initMessage.channel.send(`This message object is hold in Song :D`);
FAQs
Complete framework to facilitate music commands using discord.js v14 and v13.
The npm package discord-music-player receives a total of 81 weekly downloads. As such, discord-music-player popularity was classified as not popular.
We found that discord-music-player demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

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.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.

Security News
Socket CEO Feross Aboukhadijeh joins 10 Minutes or Less, a podcast by Ali Rohde, to discuss the recent surge in open source supply chain attacks.

Research
/Security News
Campaign of 108 extensions harvests identities, steals sessions, and adds backdoors to browsers, all tied to the same C2 infrastructure.