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

discord.js-musicbot-addon-v2

v1.10.4

Published

A music bot addon for an already made Discord.js bot to run with or simply run by itself.

Downloads

17

Readme

npm package
Discord Server Downlaods Version


This module may be buggy and need some fine tuning. Feel free to let me know what problems you encounter by opening an issue on the repo. This was originally an update of the original bot from ruiqimao by nexu-dev, but is now a updated version (again) for Discord.js's version 11.2^. Fixes deprecated warnings, video playback issues, along with various other add-ons and tweaks to the priors. For support/questions join the Discord server for a faster response than the repo.

The commands available are: (default names)

  • musichelp [command]: Displays help text for commands by this addon, or help for a specific command.
  • play <url>|<search string>: Play audio from YouTube.
  • skip [number]: Skip a song or multi songs with skip [some number],
  • queue: Display the current queue.
  • pause: Pause music playback.
  • resume: Resume music playback.
  • volume: Adjust the playback volume between 1 and 200.
  • leave: Clears the song queue and leaves the channel.
  • clearqueue: Clears the song queue.
  • owner: Various owner commands/actions. (W.I.P)

Permissions:

  • If anyoneCanSkip is true, anyone can skip songs in the queue.
  • If anyoneCanAdjust is true, anyone can adjust the volume.
  • If ownerOverMember is true, the set ID of the user (botOwner) will over-ride CanAjust and CanSkip.

Installation


Pre-installation:

  1. npm install discord.js
    It is recommended to have the stable branch.

  2. ffmpeg installed correctly for your OS/env.
    Allows the bot to join voice as well as speak.

  3. npm install node-opus or npm install opusscript
    Required for voice. Discord.js prefers node-opus.

Installation:

  • npm install discord.js-musicbot-addon

Common installation issues:
Issue: (Trivial) FFMPEG was not found on your system.
Fix: Make sure ffmpeg is installed correctly and set in your PATH variable.

Issue: (Uncommon) Couldn't find an Opus engine.
Fix: npm install node-opus or npm install opusscript

Issue: (Rare) [NPM] ERR Cannot read property '0' of undefined
Fix: npm i -g [email protected] or another lower version of npm.

Issue: (Rare) TypeError: Invalid non-string/buffer chunk
Fix: Stop using ffmpeg-binaries. Seriously. It's been said enough to use ffmpeg itself by now.

Issue: (Trivial) Any node-gyp errors. (build fail, missing cl.exe, etc.)
Fix: This one is a little more complicated.

  1. Download and install Visual Studio 2015
  2. New project -> Visual C++
  3. Install Visual C++

If that doesn't fix your issue;

  1. Download and install the Windows 8.1 SDK

Issue: (Uncommon) ffluent-ffmpeg errors.

  1. Download and install ffmpeg correctly for your OS/env.
  2. Stop asking and make sure it's installed right.

Basic Example.


This addon is easy to use, and doesn't require any extra configuration besides a YouTube Data API key to run.
More examples can be found on the repo or once downloaded in examples.

Example basic code, standalone:

const Discord = require('discord.js');
const Music = require('discord.js-musicbot-addon');
const client = new Discord.Client();

const music = new Music(client, {
  youtubeKey: 'sum-key_hhereas'
});

client.login("token");

Options & Config.


Most options are optional and thus not needed.
The options you can pass in music(client, {options}) and their types is as followed:
Note: All boolean options default false.

Basic Options.

| Option | Type | Description |
| --- | --- | --- |
| youtubeKey | String | A YouTube Data API3 key. Required to run. | | botPrefix | String | The prefix of the bot. Defaults to "!". | | thumbnailType | String | Type of thumbnails to use for videos on embeds. Can equal: default, medium, high. | | global | Boolean | Whether to use one global queue or server specific ones. | | maxQueueSize | Number | Max queue size allowed. Defaults 20. | | defVolume | Number | The default volume of music. 1 - 200, defaults 50. | | anyoneCanSkip | Boolean | Whether or not anyone can skip. | | clearInvoker | Boolean | Whether to delete command messages. |
| messageHelp | Boolean | Whether to message the user on help command usage. If it can't, it will send it in the channel like normal. | | botAdmins | Object/Array | An array of Discord user ID's to be admins as the bot. They will ignore permissions for the bot, including the set command. | | embedColor | String | The hex code or RGB value of the color of your embeds. Defaults to 0x27e33d. | | djRole | String | The name of the Discord role needed to control music. |

Other Options.

| Option | Type | Description |
| --- | --- | --- |
| enableQueueStat | Boolean | Whether to enable the queue status, old fix for an error that occurs for a few people. | | anyoneCanAdjust | Boolean | Whether anyone can adjust volume. | | ownerOverMember | Boolean | Whether the owner over-rides CanAdjust and CanSkip. | | anyoneCanLeave | Boolean | Whether anyone can make the bot leave the currently connected channel. | | botOwner | String | The ID of the Discord user to be seen as the owner. Required if using ownerOverMember. | | logging | Boolean | Some extra none needed logging (such as caught errors that didn't crash the bot, etc). | | enableAliveMessage | Boolean | Enables the bot to log a message in the console every x milliseconds. | | aliveMessage | String | The message to be logged. *note | | aliveMessageTime | Number | Time in milliseconds the bot logs the message. Defaults to 600000 (5 minutes). | | requesterName | Boolean | Whether or not to display the username of the song requester. | | inlineEmbeds | Boolean | Whether or not to make embed fields inline (help command and some fields are excluded). | | streamMode | Number | New! Sets what to use for streaming. 0 = ytdl-core, 1 = youtube-audio-stream. |

Command Options.

| Option | Type | Description |
| --- | --- | --- |
| helpCmd | String | Name of the help command. | | disableHelp | Boolean | Disable the help command. | | helpHelp | String | Help text of the help command. | | helpAlt | Array | Alt names (aliases) for the help command. | | playCmd | String | Name of the play command. | | disablePlay | Boolean | Disable the play command. | | playHelp | String | Help text of the play command. | | playAlt | Array | Alt names (aliases) for the play command. | | skipCmd | String | Name of the skip command. | | disableSkip | Boolean | Disable the skip command. | | skipHelp | String | Help text of the skip command. | | skipAlt | Array | Alt names (aliases) for the skip command. | | queueCmd | String | Name of the queue command. | | disableQueue | Boolean | Disable the queue command. | | queueHelp | String | Help text of the queue command. | | queueAlt | Array | Alt names (aliases) for the queue command. | | pauseCmd | String | Name of the pause command. | | disablePause | Boolean | Disable the pause command. | | pauseHelp | String | Help text of the pause command. | | pauseAlt | Array | Alt names (aliases) for the pause command. | | resumeCmd | String | Name of the resume command. | | disableResume | Boolean | Disable the resume command. | | resumeHelp | String | Help text of the resume command. | | resumeAlt | Array | Alt names (aliases) for the resume command. | | volumeCmd | String | Name of the volume command. | | disableVolume | Boolean | Disable the volume command. | | volumeHelp | String | Help text of the volume command. | | volumeAlt | Array | Alt names (aliases) for the volume command. | | leaveCmd | String | Name of the leave command. | | disableLeave | Boolean | Disable the leave command. | | leaveHelp | String | Help text of the leave command. | | leaveAlt | Array | Alt names (aliases) for the leave command. | | clearCmd | String | Name of the clear command. | | disableClear | Boolean | Disable the clear command. | | clearHelp | String | Help text of the clear command. | | clearAlt | Array | Alt names (aliases) for the clear command. | | setCmd | String | Name of the set command. | | disableSet | Boolean | Disable the set command. | | setHelp | String | Help text of the set command. | | setAlt | Array | Alt names (aliases) for the set command. | | loopCmd | String | Name of the loop command. | | disableLoop | Boolean | Disable the loop command. | | loopHelp | String | Help text of the loop command. | | loopAlt | Array | Alt names (aliases) for the loop command. | | searchCmd | String | Name of the search command. | | disableSearch | Boolean | Disable the search command. | | searchHelp | String | Help text of the search command. | | searchAlt | Array | Alt names (aliases) for the search command. | | ownerCmd | String | Name of the owner command. | | disableOwnerCmd | Boolean | Disable the owner command. | | ownerHelp | String | Help text of the owner command. | | ownerAlt | Array | Alt names (aliases) for the owner command. |

An example of a few custom options would be:

const music = new Music(client, {
  prefix: ">",
  maxQueueSize: "100",
  disableLoop: true,
  leaveHelp: "Bad help text.",
  leaveAlt: ["lve","leev","un1c0rns"],
  helpCmd: 'mhelp',
  leaveCmd: 'begone',
  ownerOverMember: true,
  botOwner: '123456789101112',
  youtubeKey: 'some-key_here'
});

Changelog


1.10.3

  • Removed lockChan and unused related items.

1.10.2

  • Bot now supports multiple prefix's.
  • Added advancedMode, multiPrefix, advancedMode object settings. Please see examples (advancedModeBot.js) or the discord server.
  • Fixed leave.
  • Fixed note function errors.
  • Added set command.
  • Boolean options are now always Booleans. Always.
  • Added botAdmins. Adding an ID will allow this user to override every permission.

1.10.1

  • Corrected streamMode error.

1.10.0

  • Added the search command.
  • Added the thumbnailType option.
  • Play command now plays the first result instead of searching.
  • Links might work now.
  • anyoneCanLeave allows anyone to use leave.
  • Maximum call stack errors should occur less or not at all.
  • You can now change between using ytdl-core and youtube-audio-stream to stream music with streamMode.
  • Small fixes.

1.9.1

  • Fixed looping errors.
  • May have fixed some link related errors.
  • Added the maxWait option.
  • Fixed command run functions.

1.9.0

  • Requires Node 8+.
  • Added aliases support.
  • Small changes to some code.
  • Started the owner command.
  • Commands are now mapped on startup.
  • Added custom help text for commands.
  • Looping & last played are per-server.
  • Looping & last played have new functions.
  • Prefix and command names are now case sensitive.
  • May have fixed some 'undefined' errors with play.
  • Pause now doesn't pause if it's already paused. Yeah...
  • Alive message now replaces {{username}} with the bots username.
  • When looping music, no longer shows a "Now Playing" for the same song.
  • Added messageHelp, if true will attempt message a user on help usage.
  • Alive message now replaces {{starttime}} with the bots readyAt time.
  • Help command now sends both embeds and non-embed messages according to permissions.
  • Errors now display when queueing a song rather than showing "timed out" when one actually occurs. Probably.

1.8.2

  • Actually fixed the play function queueing the wrong song. (update: I lied)

1.8.1

  • Fixed the queueing error within the play function.

1.8.0

  • Updated the searching for the play command, you can now choose out of 10 results.
  • Tried to fix weird bug with link queueing, still broken.
  • Probably caused more issues than I fixed.
  • Removed maxChecks.

1.7.2

  • Added maxChecks option.
  • Now checks after searching for videos if the link to be played is a video.

1.7.1

  • Fixed clearInvoker. I think.

1.7

  • Added fancy embeds to some commands.
  • Able to use !queue [songNumber] to view info on a specific song in the queue.
  • Checks whether the requester of the song is available for the bot.
  • Stores the avi-url of the requester for the song.
  • Prevents some errors from crashing the bot.
  • Fixed the alive messages, along with a startup message (console).
  • Added option (inlineEmbeds) to make embeds by the bot inline. See the embed field documention for info.
  • Fixed playlist fetching when the link had something like &list=RDOeJKsrD791A&t=66 to prevent throwing errors or crashes.
  • Looping force disables on clearQueue, leave and skip.
  • Removed events/emitters because I forgot what the hell I was doing with them.

1.6.10

  • Fixed queue, NowPlaying's.

1.6.8

  • Added error catching for new features to help prevent bot crashing and error logging.
  • Put random shit in so I could call this a real update.

1.6.7

  • (probable) Error fix.

1.6.6

  • rocky_road.jpeg

1.6.5

  • Fixed a typo from 1.6.4 that crashes the bot.

1.6.4

  • Pull requests merged/edited (mcao, Erik). For most changes, take a look at their pull requests.
  • Added requesterName.

1.6.3

  • Brought back disabling commands.
  • Fixed help function.

1.6.2

  • Nothing notable.

1.6.1

  • Fixed some typos and minor errors.

1.6

  • Removed asynchronous functions since some people don't like using the latest and greatest.
  • Added enabling/disabling commands.
  • Added looping.
  • "Class" update.
  • Fixed some errors/bugs from 1.5.
  • Added alive message function && (heh) options.
  • Removed enabling/disabling commands until further notice.
  • Added all additions from pull requests to the main npm module.
  • Updated examples.

1.5.1

  • Added playlist support (thanks Rodabaugh for reminding me).
  • Fixed clearqueue crashing if queue is empty.
  • Fixed skip crashing if the queue is empty.
  • Now requires ffmpeg installed over ffmpeg-binaries.

1.4.0

  • Added wrapping.
  • Added owner over member options.
  • Fixed errors.
  • Reworked the playing music method.
  • Fixed UnknownSpawn errors.
  • Bot now requires your own YouTube Data API3 key for searching.
  • Music is less likely to cut out now.
  • Volume works again (again).

1.3.1 - 1.3.6

  • These were testing updates to just see how it would work on different platforms, which code still needed to be fixed, error testing, etc.

1.3.0:

  • Added errors.
  • Fixed volume crashing the bot (thanks TheTimmaeh).
  • Added future support for events.
  • Minor bug fixes.

1.2.0:

  • Marked "stable".
  • Finished module for full public access.

1.1.0 and lower:

  • No idea.