{"_id":"discord-portable-player","_rev":"127-197b040813cf692644a1dacd8cebee8d","time":{"created":"2022-06-01T07:47:56.317Z","0.0.1-dev":"2022-05-01T08:00:55.447Z","modified":"2023-08-03T17:02:53.731Z","0.1.0-dev":"2022-05-01T15:16:30.293Z","0.1.1-dev":"2022-05-01T17:04:37.756Z","0.2.0":"2022-05-03T11:05:22.300Z","1.0.0":"2022-05-03T12:31:42.324Z","1.1.0":"2022-05-05T09:16:37.443Z","1.1.1":"2022-05-21T06:15:56.004Z","1.2.0":"2022-05-30T08:47:29.041Z","1.3.0":"2022-06-01T07:47:56.475Z","2.0.0-dev.f90be39":"2022-06-01T10:01:46.749Z","1.3.1":"2022-06-01T15:48:21.019Z","1.3.2":"2022-06-01T16:33:41.771Z","1.3.3":"2022-06-01T16:39:14.901Z","1.3.4":"2022-06-01T16:47:17.178Z","1.4.0":"2022-06-08T10:29:02.476Z","1.4.1":"2022-06-12T13:14:39.341Z","2.0.0-dev.f181777":"2022-06-14T11:06:27.367Z","2.0.0-dev.93ac698":"2022-06-14T11:17:14.276Z","2.0.0-dev-dev.1655359784.b1a6e7e":"2022-06-16T06:09:54.551Z","2.0.0-dev.1655359971.9b7b3a4":"2022-06-16T06:13:03.027Z","2.0.0-dev.1655368677.bfd2c6c":"2022-06-16T08:38:08.626Z","2.0.0-dev.1655376057.8c570a7":"2022-06-16T10:41:06.113Z","2.0.0-dev.1655376700.19ff6da":"2022-06-16T10:51:49.329Z","2.0.0-dev.1655378962.02c7e62":"2022-06-16T11:29:30.989Z","2.0.0-dev.1655383311.c87475e":"2022-06-16T12:42:01.365Z","2.0.0-dev.1655446991.fefd9ad":"2022-06-17T06:23:20.838Z","2.0.0":"2022-06-22T16:38:33.324Z","2.0.1-dev.1655917631.61474e6":"2022-06-22T17:07:20.947Z","2.0.1-dev.1655918484.2cdf4ce":"2022-06-22T17:21:34.899Z","2.0.1-dev.1655918498.2cdf4ce":"2022-06-22T17:21:47.557Z","2.0.1-dev.1655967014.db44a57":"2022-06-23T06:50:22.777Z","2.0.1":"2022-06-24T12:43:22.621Z","2.0.2":"2022-06-26T15:27:06.333Z","1.5.0":"2022-06-27T06:21:20.844Z","2.0.3":"2022-06-30T06:03:43.010Z","2.0.4":"2022-07-04T05:45:25.259Z","2.0.5":"2022-07-04T06:57:29.545Z","2.0.6":"2022-07-05T11:42:55.750Z","2.0.7":"2022-07-06T15:44:16.557Z","2.0.8":"2022-07-07T15:46:10.512Z","2.0.9":"2022-07-08T19:33:16.227Z","2.0.10":"2022-07-16T10:38:36.343Z","1.5.1":"2022-07-17T18:26:32.169Z","2.0.11":"2022-07-18T09:34:39.169Z","2.0.12":"2022-07-18T16:51:21.365Z","2.0.13":"2022-07-22T22:46:02.290Z","1.6.0":"2022-07-27T13:04:44.670Z","1.6.1":"2022-07-27T23:11:38.706Z","2.1.0":"2022-07-29T08:58:13.626Z","2.1.1":"2022-07-29T09:30:39.765Z","1.6.2":"2022-07-29T10:26:39.724Z","2.1.2":"2022-07-29T10:27:51.054Z","2.1.3":"2022-07-29T13:27:54.565Z","2.1.4":"2022-07-29T13:32:41.632Z","2.1.5":"2022-07-31T04:50:58.375Z","1.6.3":"2022-07-31T05:01:14.239Z","2.1.6":"2022-07-31T05:06:59.174Z","1.6.4":"2022-08-01T09:38:22.983Z","2.1.7":"2022-08-01T09:40:43.978Z","2.2.0":"2022-08-22T11:45:05.906Z","2.3.0":"2022-09-26T12:25:11.178Z","2.4.0":"2022-10-11T13:09:04.133Z","2.4.1":"2022-12-06T06:08:46.007Z","2.4.2":"2023-08-03T17:02:04.289Z"},"name":"discord-portable-player","dist-tags":{"latest":"2.4.2","dev":"2.0.1-dev.1655967014.db44a57","beta":"2.0.10"},"versions":{"1.3.0":{"name":"discord-portable-player","version":"1.3.0","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"Neks4922"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://discord-portable-player.js.org/","dependencies":{"@discordjs/voice":"^0.8.0","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^2.2.7","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord-api-types":"^0.24.0","discord.js":"^13.7.0","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"gitHead":"50df1dea1213696fa973d8553cc123943ff7c8ab","_id":"discord-portable-player@1.3.0","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-wBXOKyaj/IPoC7FyLhibEp2CvFfjcYj+znoMRYldSTeXY1H6Thz7Pg32VOi3l6R7KiM98X/iydWREG83wJx2cw==","shasum":"13dd6f62348a0a353abf38fcad70bf3cac29dfde","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-1.3.0.tgz","fileCount":20,"unpackedSize":159178,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEB9j+TDDAXjmZ5s1btybTmpOcwd2F2M01kRCJFzy66EAiBjJ7s1quwiC/FR54LAEPqLZkRQuzggV65N3L2DH7jHLA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJilxmsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqGNA/9FScP+b4WehLSffCSLGUWv7LAgR1v6ZxRWQvAt3UKsyXP0XL/\r\nls4e5W29PL7OnGeshtIpw4N0mMP1uLg/6T9GZFkFjqdUQlAYrPLqO4WhOnHT\r\n85GSHxYyEOYHN2Bb6ARP9i9BalaCI+ulCpMMO5RXi7Bdz3h0b8B/j5NbmnC4\r\nq3LqtuwyujZkGsHhj2bOgd6fgg54yEAw+t+4bmR+YlyruYUumojq7PNbuUha\r\n5G8ELAkEIW4AyEDC1hZPzJ5NgjlP5AaIcZTCJkbI8gAFJDQu9WpCgPHnIql5\r\nNNWlAzf+xYo/TQQ++B6hMTWKKOisFLu1PYALNsUWnu79EZDjd0SJoAERFrOX\r\nq8flFZRQ3C/orM+WFYNmPatgS0XY66W+Ic7Rie0MGE45+LAlAVYINUJTpeMn\r\nOpfqN1R/CJ2vLU2vZWbh1RQiOpgEun5JYz2n1wQ/I8EkBJvlKP1McFu3z5dN\r\nCUw7SuDmUe+jjGC/ZUfb7QFJlof8Sgpg2FC8/YiF7Ietw9RIl0tSZ3quj68T\r\nKkBiwdByvyKr1JlYvJ1fnUyk7Thx51VWYIJ3M48Ezb87pvu0f9YD/YmaSK9Y\r\no8K1TsjJ+17iKC/Qn6pKkrFuNil5rGiBsZlkhY9E9F2BfDQVopwsul1H0GvY\r\noil8EP0+4mQKIV8tScvU2JysOy+NayXQvAI=\r\n=HyTF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_1.3.0_1654069676318_0.3925280546599135"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.0.0-dev.f90be39":{"name":"discord-portable-player","version":"2.0.0-dev.f90be39","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.9.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.10","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.1","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord.js":"^14.0.0-dev.1653480262-68d5169","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using **[discord.js](https://discord.js.org)**.\n**⚠️ THIS IS A DEV VERSION OF DISCORD PORTABLE PLAYER AND ITS NOT STABLE. INSTALLING THIS VERSION MIGHT BREAK YOUR CURRENT CODE AS THERE ARE A LOT OF BREAKING CHANGES AND BUGS WHICH ARE YET TO BE FIXED! ⚠️ USE AT YOUR OWN RISK! ⚠️** \n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install **[discord-portable-player](https://npmjs.com/package/discord-portable-player)**\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install **[@discordjs/opus](https://npmjs.com/package/@discordjs/opus)**\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- Official FFMPEG Website: **[https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)**\n\n- Node Module (FFMPEG): **[https://npmjs.com/package/ffmpeg-static](https://npmjs.com/package/ffmpeg-static)**\n\n- Avconv: **[https://libav.org/download](https://libav.org/download)**\n\n# Features\n- Simple & easy to use \n- Beginner friendly\n- Audio filters \n- Lightweight \n- Custom extractors support \n- Multiple sources support \n- Play in multiple servers at the same time \n- Does not inject anything to discord.js or your discord.js client \n- Allows you to have full control over what is going to be streamed \n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes } = require(\"discord-api-types/v10\");\nconst { ApplicationCommandOptionType } = require(\"discord.js\");\n\nconst commands = [{\n    name: \"play\",\n    description: \"Plays a song!\",\n    options: [\n        {\n            name: \"query\",\n            type: ApplicationCommandOptionType.String,\n            description: \"The song you want to play\",\n            required: true\n        }\n    ]\n}]; \n\nconst rest = new REST({ version: \"10\" }).setToken(process.env.token);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationGuildCommands(clientId, guildId),\n      { body: commands },\n    );\n\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Discord.Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildVoiceStates]});\nconst { Player } = require(\"discord-portable-player\");\n\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\n\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.channel.send(`🎶 | Now playing **${track.title}**!`))\n\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\n\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n\n    // /play track:Despacito\n    // will play \"Despacito\" in the voice channel\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channelId) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.me.voice.channelId && interaction.member.voice.channelId !== interaction.guild.me.voice.channelId) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.get(\"query\").value;\n        const queue = player.createQueue(interaction.guild, {\n            metadata: {\n                channel: interaction.channel\n            }\n        });\n        \n        // verify vc connection\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `❌ | Track **${query}** not found!` });\n\n        queue.play(track);\n\n        return await interaction.followUp({ content: `⏱️ | Loading track **${track.title}**!` });\n    }\n});\n\nclient.login(process.env.DISCORD_TOKEN);\n```\n\n## Supported websites\n\nBy default, discord-portable-player supports **YouTube**, **Spotify**, **Apple Music** & **SoundCloud** streams only.\n\n### Optional dependencies\n\nDiscord Portable Player will be providing additional packages soon!\n\n## Advanced\n\n### Use cookies\n\n```js\nconst { Player } = require(\"discord-portable-player\");\n\nconst player = new Player(client, {\n    ytdlOptions: {\n        requestOptions: {\n            headers: {\n                cookie: \"YOUR_YOUTUBE_COOKIE\"\n            }\n        }\n    }\n});\n```\n\n### Use custom proxies\n\n```js\nconst HttpsProxyAgent = require(\"https-proxy-agent\");\nconst { Player } = require(\"discord-portable-player\");\n\n// Remove \"user:pass@\" if you don't need to authenticate to your proxy.\nconst proxy = \"http://user:pass@111.111.111.111:8080\";\nconst agent = HttpsProxyAgent(proxy);\n\nconst player = new Player(client, {\n    ytdlOptions: {\n        requestOptions: { agent }\n    }\n});\n```\n\n> You may also create a simple proxy server and forward requests through it.\n> See **[https://github.com/http-party/node-http-proxy](https://github.com/http-party/node-http-proxy)** for more info.\n\n### Custom stream Engine\n\nDiscord Portable Player by default uses **[node-ytdl-core](https://github.com/fent/node-ytdl-core)** for youtube and some other extractors for other sources.\nIf you need to modify this behavior without touching extractors, you need to use `createStream` functionality of discord player.\nHere's an example on how you can use **[play-dl](https://npmjs.com/package/play-dl)** to download youtube streams instead of using ytdl-core.\n\n```js\nconst playdl = require(\"play-dl\");\n\n// other code\nconst queue = player.createQueue(..., {\n    ...,\n    async onBeforeCreateStream(track, source, _queue) {\n        // only trap youtube source\n        if (source === \"youtube\") {\n            // track here would be youtube track\n            return (await playdl.stream(track.url, { discordPlayerCompatibility : true })).stream;\n            // we must return readable stream or void (returning void means telling discord-player to look for default extractor)\n        }\n    }\n});\n```\n\n`<Queue>.onBeforeCreateStream` is called before actually downloading the stream. It is a different concept from extractors, where you are **just** downloading\nstreams. `source` here will be a video source. Streams from `onBeforeCreateStream` are then piped to `FFmpeg` and finally sent to Discord voice servers.\n","readmeFilename":"README.md","gitHead":"02cfb901ed494f787bf14bda8c9c2c2dd02bfd2b","_id":"discord-portable-player@2.0.0-dev.f90be39","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-3TxNUle5ZbL/lg1vZVNAH9IDq5xW8VfUiiltE6ic6RR6l4B1vl1LGH7ILJ2JvCw//gyNVWMBL97r31UzHz8sRA==","shasum":"5e90a0187cc2d5a9d19137bc90d2a30d181f5556","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.0-dev.f90be39.tgz","fileCount":21,"unpackedSize":173509,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJCws9NEOeEvsByDc4GrOAouQYkNrbuPotA6iSv971sAIhAMYgGPbGBeyoyyjF/B3BnJ0IdYeTbpqeg/WY2QuTUSv+"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJilzkKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmobyQ/9FzjgVsijrqV3QrD3E2j+aZMziOIwgBuembcsJoTlPxVvP8Sm\r\nWWQUhcjN8iHbcEzxYqW3yyfxqYXDQLaGo3Ra/PKtnLEt2sfWZ6uhbuH9Gyuz\r\nA4JMmca8cpLKgZ9OwcqaoGfOJngMq1wp1EN5h+R5NIVThoxCUm3f75Dnd3xw\r\nE8JQYsJ/RzTseVkR32ZRjev74cjl8NulSB0BanmjVzzn605tJFpb4bapyA+j\r\nCtHn7Qs1b5Zs/q0wsz79sn1879EIxnRDlS5uTNN6h1ZXQ2HFjvyn31BNLvqR\r\nVUWL51H8uAfJ4yobHrToG4KyC3Z7lEZgYkv2jNLQGPWmt/5QhUtwHJJEq6VT\r\nFRJ4+WxIFZ0gb3dQT6Zl26iTHR6pGyO6WFIZbmMeduRxVgWqTdyuIPFhR9ID\r\nIzrRriLCfdvYu550PRAtZMnuToMDPvaho3H6Kx4Lp5Zu4OYH7/SapojRtT6j\r\noNc3eeOz2jdCjKQVm2nXgrywtSTqwn9Jvn+06Lj0OAJMaarZ3IIWuNjgGhr8\r\nNaq/NfV7qtTnQVcf2QAjpy8gV3o+i73zTsI0FL4mf8mVaN7JW6x0SK4OXJtR\r\nUyIJMpEImII2fN36zv/W2ZCjy+YXk3lNUuI/qJ43ZZ7Yb6Pl/fJMrfkwUOjp\r\n4Rx8z4UlmWs7UALQ9x4zkQKSbPJEDtWc53U=\r\n=ySJn\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.0-dev.f90be39_1654077706555_0.6016280284344588"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"1.3.1":{"name":"discord-portable-player","version":"1.3.1","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"Neks4922"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://discord-portable-player.js.org/","dependencies":{"@discordjs/voice":"^0.8.0","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^2.2.7","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord-api-types":"^0.24.0","discord.js":"^13.7.0","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"gitHead":"1d32f8e39e66eb5986b235d5d49c9bb38063375a","_id":"discord-portable-player@1.3.1","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-clNv6UIgQwQLeDZprxd11Tc3KjOzHvDX6y7as7Q69De9ICOGRe+dJBkw7dVBT5hUYA6cAipdcWNLZyBCCDkomw==","shasum":"f3e1246488c914c767e7c3777c586b621c388cae","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-1.3.1.tgz","fileCount":20,"unpackedSize":159868,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxQ9JbzNMgPEGdhB9mPlNtlWLxwSREw/z2yp6q9fcXiwIgfLe88bTC+xO4LQKXXAn74kDerljCymjo0CWdcuHDotw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJil4pFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoZhg//WGugjCaWeslEQB9C2GARK/80HbBwV7u5E61MP3DElCRF9YVg\r\np9VD13DMTTjOC7sO8Bb62IS5JV5GutS1hTl4CtalrirWn+Ja0RipxIsg1k+Y\r\nKoTuUFa9iXHkJCEp3yaCxeBvt742JWGvgLpPniduEE0x/i805BZBRLotN69G\r\nj5+N0IjHIqwkVy8lxJMBQcZoR5AzLtZvzbQ3c39Ww/B6heFcNrIxpBbmahim\r\nFaoI3JKahYW6Fpew4+HBgMPvEfYS2g22bKH56QOO/v245zBI/Dv9l+vfHW72\r\ncUQHKsc+crCR4YQt070MzqkPm446Uv3e8WbyZKgNXMA6ihq09PnYhoD/jVhS\r\n2v+K8KojpGoPUbjSc+gtgD3/LzAbyIivgqeSXpdF3ZX5GmggqWhu98P7HrRm\r\nqUhONT70lPyaStAkM16CLz1xRS0pcZfRO5aTUfzA4Na2Y/nE175oErNNhrWE\r\n/psFdaS6jIX6rIN3ufcGydt6tLUELiMC/U1mUqG8N13JBBMUhliE1O0YRpMA\r\nymOp5peYkybAXqH/3oDRN+qgBjsnpLMEzUxk9hzjc9xfeEvyrxTVMeCM5LcA\r\n8sdcD51IZ0lTHeqpZGE0foyu4bM24E8A3WODGHQEJ+72NRyeGHql9Ag0xL3F\r\nv4rRJXow1MMLq1qU8SRZzd4YGv/UhFgRDxM=\r\n=QHNW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_1.3.1_1654098500866_0.8170221036517977"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"1.3.2":{"name":"discord-portable-player","version":"1.3.2","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"Neks4922"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://discord-portable-player.js.org/","dependencies":{"@discordjs/voice":"^0.8.0","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^2.2.7","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord-api-types":"^0.24.0","discord.js":"^13.7.0","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"gitHead":"b44ad2469bb32a83dd833635f6450b99bba5fb06","_id":"discord-portable-player@1.3.2","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-+SgUNtUJNb+u0qy5O0Qc2Gim7CqRed6c4eW8KMu2ELxmKH4nNhfDWG/E1W52usW5LWQf3ijxSTmq672O0ARJ7A==","shasum":"083062550d449a2a7455847a136a6a6c6a121ee3","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-1.3.2.tgz","fileCount":20,"unpackedSize":159077,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOPYqMwNbYeK3o0udt4WteTSoggJl2vLS6SYyzkNPLngIhALR5Ge5O6SL2waBMNZjho5q1+GHGpwP6FuXGD2K3MYeN"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJil5TlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr7TA/+L5n8JSirWIwKNGe4pmJ6fbipHuHS2UhsZUt5NBCzdQc3Rai1\r\nh4OvfY59yK4KgrDscIIta8gtranygoUWg5GFBuqj6+rgjak2htcXah7s+TqV\r\n7aBtS1y06tOtKBKq1aHgeLJxNK7YsPTKQzv0cNnvP7a4CI6MW5d6HBsnb43p\r\n4fWRsKAwUx6Qo65fW+fL0FtMWwGd6dWrbJTRW1caVcn04iQOUZsyh6MDU8E0\r\nYQFz6O3FQYWsit3Gor1nyWrmY49VJ5MsC4DcNxhL/P4eM/F9YSntSiU+u2WE\r\nlMhFBMCQC4MnDDwre+25JRZBc9pcNeebYIFjzDcQ5RDoocGK538JVDIfLm4R\r\n4tFHGvgzpf9T71M002exbEXH5RtagO/Utkj6Nm/vscA5O9PwQG5ezObp7TM0\r\n0sm0cY0e00ZLhmcSQ3IiPcEYFEV8GlnvH6ATx9Oo7IpTOomwBCNUxxLcSx6E\r\nJy1e8ho72CwEuIV9IAxeHOdBJd8aAQLAVV+hzn6pbp8VyjXIkffRqEnatC4V\r\nFc31f38y4muqv1/oFmNTPPawjwMydJa2FuQK2aAohRoJKT0MlrBqFM3xnmjh\r\n8pPbK4TNjWP9obA1snztRG0P06KoEPBuetuySnI8ggJjpCA8o+NQJmM1AufM\r\nV9ZP+CxbA3M9Ufgf1T70QoEfMjZdeheoQVo=\r\n=QFRz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_1.3.2_1654101221590_0.5898097439745349"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"1.3.3":{"name":"discord-portable-player","version":"1.3.3","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"Neks4922"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://discord-portable-player.js.org/","dependencies":{"@discordjs/voice":"^0.8.0","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^2.2.7","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord-api-types":"^0.24.0","discord.js":"^13.7.0","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"gitHead":"57e02d4e6239ea89a8cf8e9a09e9d59b315c25e9","_id":"discord-portable-player@1.3.3","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-S/jMEtpEWE/S4qjZ/Zoh8Ux3eKLheABLLaAAUMNWb6WCbUTuq04DtE1mSISpY40ZX+MMmh8rJ6XaoZbqCBmXSA==","shasum":"103e4ce6d41717f1b4168e92e0b36a184ba78497","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-1.3.3.tgz","fileCount":20,"unpackedSize":159087,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHck09EV3KKYfLtOIGmjDdcPYQHd+1ICIQgJaaGiIHHzAiA4WWrJOMbPneFeVbwGmzn0xCjv/zD57dyTeR3Uw+HHYA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJil5YyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqTng/+PKwigkHUjuJ3hYFvlJdlSGZnQ6eO9O+bs7pGHRwrf66rn7xj\r\n091f+wjVd6dcFWXk5X2CDHZMhEzmi8FoSQKJCgJD5wjCSR9h9QDfGgmbj8u5\r\nddOu6upjbHeLuTb72mdCgB6ofmr60rGA8e1AGYl9ur9xjqUhYQb6imjYCSrx\r\nGXu8baWwg9vB6SvdVfe8VnJTPxWgP+0BspGiKMfxCed1xJ6V2jxv0oL2rLis\r\naIYBshXIdF9LUxMlVvuUSQ0nh1dJsaQZkr+tCZ6GnbDytWNp72L8+RXlEMRk\r\nfYDHHNMtMOmiMEsT6d0B6/Ajw78s0jEBmBkNpHDucevVPVVeRX5okn8UX3PI\r\nbA9ayFaSKLDZmivjZHxpel8bWWcyY4GOTYSQpNyAlUHlsNjfm80F5fUMFF3X\r\nYi+d15eHgeOeLgG/P8TKUi+lt85sMOGXk4xRem/eUw91EasZxUBZNDbChREC\r\nIGzPOcsJ9y6qtc0bEuxU219NJnnUYkMmpQAauDwmAN0qZuZwcWVaZ1dS7jiT\r\nfQmkOpcHqjP9QzkN895gLbytycCkzqoOVPbAqCDkPW+fvDpPteYqjaKyv+mT\r\nzZDSBENGPQptY0zBtR1tGO1afJ5BkWgRYDKbOG+EFRH9cyIiC/knweacRjnE\r\n9N8eP6+f7v9jc51zoN0EtRLY3AcHQD2g8QE=\r\n=OE7l\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_1.3.3_1654101554706_0.6180398795603195"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"1.3.4":{"name":"discord-portable-player","version":"1.3.4","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"Neks4922"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://discord-portable-player.js.org/","dependencies":{"@discordjs/voice":"^0.8.0","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^2.2.7","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord-api-types":"^0.24.0","discord.js":"^13.7.0","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"gitHead":"a1a672a4071a2095c96dc430dba8f4c21e6bc22b","_id":"discord-portable-player@1.3.4","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-I5DZw4vke0bCg+ZS5G/p9YOOwlxmI1neza8jR3b/NF05d1np1i6KdEmQwlwMZ8QMA4J0DPcS4ZaELKA+Cwjaow==","shasum":"f5f5bd881cf7bb29b4a76f66ae0f94e9b8fb5f04","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-1.3.4.tgz","fileCount":20,"unpackedSize":159132,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHwPU8HadmWcmVyiW4Me9gIlu3aI50h5AL5hf3VGCH1LAiEA3X4PD5ORqi3ofCe4dH0U+LNVqfZ/7GJJCOdXCQUrwwI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJil5gVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmocMg/8DO7SiuixfSxM836lyua5aQ3p0D7vBCQTWnFy8zvG33OfZEwb\r\niNn9OFNsJYhTLQJZLhXwX//+cEer8x3TRqCeGYcjxe/hsuZPmmtaO0lMp23w\r\nmyWwPCYcmH10kbenqHon20Slq5RG14iUKyaFKnia/PH8hRmcIEJmaRKpFdI3\r\n+Kib/oR7AMPiV3kqIp/+38NaBCic4ZiqihMR1RA62+tRIwlkYbNB7UFTyzwN\r\nKKg7dCqpC4kzMLidxJOTWdwaaVcGE4EC1/6aBvrT3FJAj4dOZC1x1cOvbYrs\r\nuykebOIHHEt50X64aI7K6FRQZ8TW380GeCVT9MAJz+GZcQABuQY8Ezo4oYGs\r\n0LIDQ2ti7V/JBreIAzbx7iQ8WrtSrB3uTBsSqxME25mzHyJ2kCNVBu5Gop0e\r\n2mt142rVRKx8RxE+1fjo0eXgPfDIMhz3A7EPjyFkqR/dpm0safOBrG38Zd76\r\nTMw8PexGk0uEtNg8pmG/3W3EC1vBtAlL0mryl1n15lrsCpY5ffIKDfOhF+g2\r\nhNjGDSr7UfBypgknahl/FptbwGWQXZDyYdjc58BWSI/Zs4PCy9vehCQiegX3\r\nR3YMF8wRmzatfuymm0ytWuAlmq38TSGfeDFLgJGL6O0AN52ASCBcqRoFmUYH\r\nSHZXOSehLf2wsdgzi2CL2uvLemQlUGL7phg=\r\n=e3o5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_1.3.4_1654102036961_0.6611306503633596"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"1.4.0":{"name":"discord-portable-player","version":"1.4.0","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"Neks4922"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://discord-portable-player.js.org/","dependencies":{"@discordjs/voice":"^0.8.0","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^2.2.7","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord-api-types":"^0.24.0","discord.js":"^13.4.0","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"gitHead":"d0cd5dc24d99abd7d04cc70cfcbf9709b78ea5a8","_id":"discord-portable-player@1.4.0","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-1Pg00RpgNnlfyj/oLWWazg3q4HZdTDELwwN7l8aMlY3bJJSyVJGB9yee3PudY9geWDaIWnwJliRjDuwyUJsq6g==","shasum":"dc9f309cd2ba08f24e9f6ed074b1c2ad692eeb3a","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-1.4.0.tgz","fileCount":20,"unpackedSize":159132,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA036FTt8fr4mmBPiNnkiYogD5hCik+O8aOcIWLwFUKeAiEAlGOzngX4HsuaWM4wYegAIqq4CDFqG8VTxSZ69bDghos="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJioHnuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq9XRAAhj+MYUv1uptHi71KInpF8Wte18IaZDE/RI/RW1/NTVqsScX+\r\ntY0V3QIwDLc1EAJf7TgQeOBP04peAVJVo/DJl2vFintLHllzRwdl5bjoCRu2\r\nmxUHYk1IGnMTTjguH90Q7Cmt5ZLPmdJbrIHiHWxciTQQzQ4c4NsYYf5GMD3Y\r\nUD/gTw2+hmN4cP4XctEXngvc2bi15fxxRVWUKEzmVsfiB+0pvvQZY1RB3cfu\r\nKtLE2MY24yfws1iUh3juc+22z+3fhNm5qeUKM6jBdJq3Mkf+O8+Z4gVYyoKq\r\nHkksyJMpuF/zfdNYsHSwFqPYPgX5C3yVB5Usr3WQGRslkqZ9/QzgFwsHU1MW\r\niR2G2XCfsbIuxtaSZYWYZXmm7nfGXQfshh2SBD8wOGZQ+TUc54r8ti56n0uV\r\nWFmbddq+Fhq1/aThR66YYkbSoPKvdQ30gHyMG5cqzhbsxgQf0/Z3ar7+Hf+O\r\n9vQ16MmPhpZ0h+/UzKW7erxdfJ9CfAnNrOi4Gsm1hnE0IJ5fX1B+PyJ/pCUm\r\nAtnE6jOYm7gWM+Dzc2vPmV+jaHFCkL/7GnLBsAvUwX2tSWs0ukVofjMm3yF5\r\nRpoj3GdED3Q3sFpP5oysiFQmp2V0X4/7c8sGWT2ERqNL7AmEQ1iknE5D79OY\r\n6kapVY67IM1JWxZkl2PPGoNaoEAdiD1wTjU=\r\n=XK3m\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_1.4.0_1654684142276_0.07912494951740179"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"1.4.1":{"name":"discord-portable-player","version":"1.4.1","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"Neks4922"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://discord-portable-player.js.org/","dependencies":{"@discordjs/voice":"^0.8.0","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^2.2.7","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord-api-types":"^0.24.0","discord.js":"^13.4.0","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"gitHead":"bc8dc628be580ea8f71597c5c54fd01e4fb6c130","_id":"discord-portable-player@1.4.1","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-/CpBHU9XnTXH8kgUfmBmbFClnMT6dhQt2oB/lMmfonowO71/0wRHNM90rXkRa2sly3vyWwJAygPiq0qVYF+Iqw==","shasum":"21a523e9ec147f6b0b2cd0bd2b175fa955b82d3f","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-1.4.1.tgz","fileCount":20,"unpackedSize":159217,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA5KtZ3/URJyhpygCCZDKT61QOT74zF30rwlXjjwZvGzAiBTHOg5hAAZRexppbCx8rltbQihgCwNwBmk/QaE2OwRcw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJipea/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoqGA//RFi+Jlj75VYC7sBn++aOY5WoiMTA+PrBulSZKaUQPaT/xGpU\r\nqXNidkKd1kQvAVsialJv/XnwsFmCD6sXvfRALNG56ji0aplZTyoTbN894kFC\r\nxU/fNRPe8krePQrydIJ6OwVV8OpjqIq5ItGp6yWLfrjFhVuHV6NROBKON8iP\r\nksVmk09X+PHSwl2hJhpwnrueEvM/41QAVtJX9mKbbLRSBpQlrTPcuiFUuK2h\r\nsI4Q3QbA9SQPJx10cZLg37Q6o1LcO3OtqGbtJGlcbji9Fmu2wPtRZ3OrTaF2\r\nHeKc4jVBsGu+Mif/h+fll25yDHZD51HHZvF5TQkYifP1uLPZOFSwBTFHhAKF\r\nN+qTFAQhypI/TaDnePVYXV7ysdSyDvJK55zuE6ySOD5YHYal+SL1J2XCpqVx\r\nsSywGD3bEAKXw6TyjKe2aegX8jJXcGRr8ynmzrJo0Gzjy52Nt454Xzl1rdsU\r\nRIHBZ2wX9tWsKWR/yt0SMHbm80YqKhe3StMhPE646ZmIqdYNslcbNtQxuiXM\r\nAC2GeDUMRIqnGuuaOxzEp8S5woVQPWGzKL6Tb63KjobQOf4LVQhHBMWla6LJ\r\npsD4JcpUn7//vwl42x99ay0NAtQfUA9F/ZDwX1jxfpOG1W2F1PEm0zJFyFa3\r\nulWTUombUcJ/LNJr8JWqvd8ZcH45wS4CmfA=\r\n=ob97\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_1.4.1_1655039679108_0.13449312734625085"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.0.0-dev.f181777":{"name":"discord-portable-player","version":"2.0.0-dev.f181777","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.9.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.10","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.1","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord.js":"^14.0.0-dev.1653480262-68d5169","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using **[discord.js](https://discord.js.org)**.\n**⚠️ THIS IS A DEV VERSION OF DISCORD PORTABLE PLAYER AND ITS NOT STABLE. INSTALLING THIS VERSION MIGHT BREAK YOUR CURRENT CODE AS THERE ARE A LOT OF BREAKING CHANGES AND BUGS WHICH ARE YET TO BE FIXED! ⚠️ USE AT YOUR OWN RISK! ⚠️** \n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install **[discord-portable-player](https://npmjs.com/package/discord-portable-player)**\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install **[@discordjs/opus](https://npmjs.com/package/@discordjs/opus)**\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- Official FFMPEG Website: **[https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)**\n\n- Node Module (FFMPEG): **[https://npmjs.com/package/ffmpeg-static](https://npmjs.com/package/ffmpeg-static)**\n\n- Avconv: **[https://libav.org/download](https://libav.org/download)**\n\n# Features\n- Simple & easy to use \n- Beginner friendly\n- Audio filters \n- Lightweight \n- Custom extractors support \n- Multiple sources support \n- Play in multiple servers at the same time \n- Does not inject anything to discord.js or your discord.js client \n- Allows you to have full control over what is going to be streamed \n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes } = require(\"discord-api-types/v10\");\nconst { ApplicationCommandOptionType } = require(\"discord.js\");\n\nconst commands = [{\n    name: \"play\",\n    description: \"Plays a song!\",\n    options: [\n        {\n            name: \"query\",\n            type: ApplicationCommandOptionType.String,\n            description: \"The song you want to play\",\n            required: true\n        }\n    ]\n}]; \n\nconst rest = new REST({ version: \"10\" }).setToken(process.env.token);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationGuildCommands(clientId, guildId),\n      { body: commands },\n    );\n\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Discord.Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildVoiceStates]});\nconst { Player } = require(\"discord-portable-player\");\n\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\n\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.channel.send(`🎶 | Now playing **${track.title}**!`))\n\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\n\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n\n    // /play track:Despacito\n    // will play \"Despacito\" in the voice channel\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channelId) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.me.voice.channelId && interaction.member.voice.channelId !== interaction.guild.me.voice.channelId) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.get(\"query\").value;\n        const queue = player.createQueue(interaction.guild, {\n            metadata: {\n                channel: interaction.channel\n            }\n        });\n        \n        // verify vc connection\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `❌ | Track **${query}** not found!` });\n\n        queue.play(track);\n\n        return await interaction.followUp({ content: `⏱️ | Loading track **${track.title}**!` });\n    }\n});\n\nclient.login(process.env.DISCORD_TOKEN);\n```\n\n## Supported websites\n\nBy default, discord-portable-player supports **YouTube**, **Spotify**, **Apple Music** & **SoundCloud** streams only.\n\n### Optional dependencies\n\nDiscord Portable Player will be providing additional packages soon!\n\n## Advanced\n\n### Use cookies\n\n```js\nconst { Player } = require(\"discord-portable-player\");\n\nconst player = new Player(client, {\n    ytdlOptions: {\n        requestOptions: {\n            headers: {\n                cookie: \"YOUR_YOUTUBE_COOKIE\"\n            }\n        }\n    }\n});\n```\n\n### Use custom proxies\n\n```js\nconst HttpsProxyAgent = require(\"https-proxy-agent\");\nconst { Player } = require(\"discord-portable-player\");\n\n// Remove \"user:pass@\" if you don't need to authenticate to your proxy.\nconst proxy = \"http://user:pass@111.111.111.111:8080\";\nconst agent = HttpsProxyAgent(proxy);\n\nconst player = new Player(client, {\n    ytdlOptions: {\n        requestOptions: { agent }\n    }\n});\n```\n\n> You may also create a simple proxy server and forward requests through it.\n> See **[https://github.com/http-party/node-http-proxy](https://github.com/http-party/node-http-proxy)** for more info.\n\n### Custom stream Engine\n\nDiscord Portable Player by default uses **[node-ytdl-core](https://github.com/fent/node-ytdl-core)** for youtube and some other extractors for other sources.\nIf you need to modify this behavior without touching extractors, you need to use `createStream` functionality of discord player.\nHere's an example on how you can use **[play-dl](https://npmjs.com/package/play-dl)** to download youtube streams instead of using ytdl-core.\n\n```js\nconst playdl = require(\"play-dl\");\n\n// other code\nconst queue = player.createQueue(..., {\n    ...,\n    async onBeforeCreateStream(track, source, _queue) {\n        // only trap youtube source\n        if (source === \"youtube\") {\n            // track here would be youtube track\n            return (await playdl.stream(track.url, { discordPlayerCompatibility : true })).stream;\n            // we must return readable stream or void (returning void means telling discord-player to look for default extractor)\n        }\n    }\n});\n```\n\n`<Queue>.onBeforeCreateStream` is called before actually downloading the stream. It is a different concept from extractors, where you are **just** downloading\nstreams. `source` here will be a video source. Streams from `onBeforeCreateStream` are then piped to `FFmpeg` and finally sent to Discord voice servers.\n","readmeFilename":"README.md","gitHead":"267a2767edc9f183823c7a5fb25b755c1146c316","_id":"discord-portable-player@2.0.0-dev.f181777","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-4cyo5lDKieQ3Ows6NgeyhH/TdY0mZYN3QK7s8xXkp+qoh69hjaLOZPxtJywNNLqLalHUNxn9CJIKqxuqcQIBTA==","shasum":"2a0be97617e16f3869335435ac297360be3e9f61","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.0-dev.f181777.tgz","fileCount":21,"unpackedSize":173509,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFc2KVILgOAEapdxlAJq/+2ox0APDcj+IOIyTMDqUzefAiBSqWgcyu7s2GPXfKd5W1MDeAku5uPdpuZPKdaHuBIGUw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqGuzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoZHw//cpGx2Z7Gf1CY4V8YRwQd4rjGsp9a95l3R3Go0wJahDL0jF6o\r\na3sDKyZm7pZhQ5WWwXBiqiok+JXlimdHoDqplp8Kve+rxpZQyE6Uanjkeprk\r\n2kNAGYitkm6AOmR/TwV8cdLqCk6ZY8fmVDLmEFF4fr8xyTrlQSvX7PG9VxZv\r\nh3auXd4IYFUAYMj7MzUh1gQrge9q2j9x2zkrU5yTd7qQQae/TIkmailIfyw6\r\nUp4ybViwS1PNCiBSlc1N1Hrag3RglrShuEc7T4qHYzmkq490uJh0cOxGFoNr\r\nD8TQGoGKIj7xjEGkbJsxChuNsTr6XA9hsU13Fw+1zRQn0k5EtOAfVONJmxK2\r\nzlcFTqY1erZpkNtarCCNA/OwneyZNYlap40viSJgBj2N40ddW8z4mhZxA4Up\r\nfaZgLYxWQUAKdsZhcLOssgvKQ4WIIE9VXbjc01M2iKMTRc/+ZZpwC+T9+QfU\r\nUZEr416Xck/fdHICNwD4BBCljoKGWDUulyjTUwLBNxQgAp8GQ7Vw6IalpF4i\r\nnkMMYYZfhfHwNWx0USMqgG6uvaH1jDCSrDR1zpACVMB7LOFCnBcNB0Ty2SBo\r\n7lRu/zg+cuBZ0h3K4zPFYeSDm/i5lZ9VpRSaZKO0V4P/2z+nb3w2YxxJB+UY\r\nlRWNB2VDKPDJzwNu19jw2kzM4w064/z3c4w=\r\n=E8gT\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.0-dev.f181777_1655204787090_0.941553032887458"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"2.0.0-dev.93ac698":{"name":"discord-portable-player","version":"2.0.0-dev.93ac698","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.9.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.10","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.1","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord.js":"^14.0.0-dev.1655165434-b4e28a8","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using **[discord.js](https://discord.js.org)**.\n**⚠️ THIS IS A DEV VERSION OF DISCORD PORTABLE PLAYER AND ITS NOT STABLE. INSTALLING THIS VERSION MIGHT BREAK YOUR CURRENT CODE AS THERE ARE A LOT OF BREAKING CHANGES AND BUGS WHICH ARE YET TO BE FIXED! ⚠️ USE AT YOUR OWN RISK! ⚠️** \n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install **[discord-portable-player](https://npmjs.com/package/discord-portable-player)**\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install **[@discordjs/opus](https://npmjs.com/package/@discordjs/opus)**\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- Official FFMPEG Website: **[https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)**\n\n- Node Module (FFMPEG): **[https://npmjs.com/package/ffmpeg-static](https://npmjs.com/package/ffmpeg-static)**\n\n- Avconv: **[https://libav.org/download](https://libav.org/download)**\n\n# Features\n- Simple & easy to use \n- Beginner friendly\n- Audio filters \n- Lightweight \n- Custom extractors support \n- Multiple sources support \n- Play in multiple servers at the same time \n- Does not inject anything to discord.js or your discord.js client \n- Allows you to have full control over what is going to be streamed \n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes } = require(\"discord-api-types/v10\");\nconst { ApplicationCommandOptionType } = require(\"discord.js\");\n\nconst commands = [{\n    name: \"play\",\n    description: \"Plays a song!\",\n    options: [\n        {\n            name: \"query\",\n            type: ApplicationCommandOptionType.String,\n            description: \"The song you want to play\",\n            required: true\n        }\n    ]\n}]; \n\nconst rest = new REST({ version: \"10\" }).setToken(process.env.token);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationGuildCommands(clientId, guildId),\n      { body: commands },\n    );\n\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Discord.Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildVoiceStates]});\nconst { Player } = require(\"discord-portable-player\");\n\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\n\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.channel.send(`🎶 | Now playing **${track.title}**!`))\n\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\n\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n\n    // /play track:Despacito\n    // will play \"Despacito\" in the voice channel\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channelId) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.me.voice.channelId && interaction.member.voice.channelId !== interaction.guild.me.voice.channelId) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.get(\"query\").value;\n        const queue = player.createQueue(interaction.guild, {\n            metadata: {\n                channel: interaction.channel\n            }\n        });\n        \n        // verify vc connection\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `❌ | Track **${query}** not found!` });\n\n        queue.play(track);\n\n        return await interaction.followUp({ content: `⏱️ | Loading track **${track.title}**!` });\n    }\n});\n\nclient.login(process.env.DISCORD_TOKEN);\n```\n\n## Supported websites\n\nBy default, discord-portable-player supports **YouTube**, **Spotify**, **Apple Music** & **SoundCloud** streams only.\n\n### Optional dependencies\n\nDiscord Portable Player will be providing additional packages soon!\n\n## Advanced\n\n### Use cookies\n\n```js\nconst { Player } = require(\"discord-portable-player\");\n\nconst player = new Player(client, {\n    ytdlOptions: {\n        requestOptions: {\n            headers: {\n                cookie: \"YOUR_YOUTUBE_COOKIE\"\n            }\n        }\n    }\n});\n```\n\n### Use custom proxies\n\n```js\nconst HttpsProxyAgent = require(\"https-proxy-agent\");\nconst { Player } = require(\"discord-portable-player\");\n\n// Remove \"user:pass@\" if you don't need to authenticate to your proxy.\nconst proxy = \"http://user:pass@111.111.111.111:8080\";\nconst agent = HttpsProxyAgent(proxy);\n\nconst player = new Player(client, {\n    ytdlOptions: {\n        requestOptions: { agent }\n    }\n});\n```\n\n> You may also create a simple proxy server and forward requests through it.\n> See **[https://github.com/http-party/node-http-proxy](https://github.com/http-party/node-http-proxy)** for more info.\n\n### Custom stream Engine\n\nDiscord Portable Player by default uses **[node-ytdl-core](https://github.com/fent/node-ytdl-core)** for youtube and some other extractors for other sources.\nIf you need to modify this behavior without touching extractors, you need to use `createStream` functionality of discord player.\nHere's an example on how you can use **[play-dl](https://npmjs.com/package/play-dl)** to download youtube streams instead of using ytdl-core.\n\n```js\nconst playdl = require(\"play-dl\");\n\n// other code\nconst queue = player.createQueue(..., {\n    ...,\n    async onBeforeCreateStream(track, source, _queue) {\n        // only trap youtube source\n        if (source === \"youtube\") {\n            // track here would be youtube track\n            return (await playdl.stream(track.url, { discordPlayerCompatibility : true })).stream;\n            // we must return readable stream or void (returning void means telling discord-player to look for default extractor)\n        }\n    }\n});\n```\n\n`<Queue>.onBeforeCreateStream` is called before actually downloading the stream. It is a different concept from extractors, where you are **just** downloading\nstreams. `source` here will be a video source. Streams from `onBeforeCreateStream` are then piped to `FFmpeg` and finally sent to Discord voice servers.\n","readmeFilename":"README.md","gitHead":"cc15256a6294af236cf09f1609263d8298c1efa6","_id":"discord-portable-player@2.0.0-dev.93ac698","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-4bUycqvAU3RW43C3KPCqCplwxzI+28pUbhzc9B2Ov0TTEHCStwO976Z5xt/vfCZNbZimE6yuofdlJigEk0x/Uw==","shasum":"e85d6a431bd805b83c2f5bcee4317a732cc49b07","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.0-dev.93ac698.tgz","fileCount":21,"unpackedSize":173509,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0vcsAehAtQukKuo9y1iP1SSHIzwXaB7VcGffBxUNhpgIhAOz78X1Q+wYJTxyf5ExEp1Nu4HKgO0nCL6z534kq3QL/"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqG46ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/sw/9F868vqEXnHQqTfMWawmpptDzP2OAHTdLjJ+mM2cVYmPvehEc\r\nA1hz4GqgXrd+JeT00eOhPE2PrRYNtIUogsntQ5zLcDKKpnRp6Nnx+QGpauPg\r\n/b0HTDMXP8KYZRIFwg8yFTHVGvYNorJr17AvhypOokXC1+PcD1wolxk71pOc\r\nA2pXFE1uhlXlKpDZUxWL58e3b8wpKAEvg81Yfik+BPZ4gYiVEDogPOoP8F7l\r\nMPbNq8wp82Ic+GJ+8PqSfirA4hzYJJhbd6mOrjfOlr6a9hSgv7HKMxMj9tWy\r\nSBfQRHjzjs/po3VsnPI6H9tixdnfDYPAq98mS+2Hto9KMq+cg09EBfFZn/dU\r\nGIjLq0eM+orVMSRXawhrBC9ViI44IPF9Rj6pbMmbbWSfzWAgCiua1hr3sUK8\r\nN9Kfq1Z3km+g9AX7rJcJIbJCvc6ZTVpRqLYcNR84cuikzTcvVK58xZ7BU+Z3\r\n7aCqZZgQ5+uGzLPcgQhtz9JbuqQcd3h/ya5DYzwDiR164019SKqaj4WroEsB\r\nzvBMxsY4AZlGq5AePZoTqW9NjGxC7UxvF7huJtuU2lggoriYekHH//H1p8E0\r\n2AI6T5+ZEm5kls2l8EIEvF9m2rz4EaOGP2k8KNkdmMiln6RO8E7jcLUkk56L\r\nN1XMXEw1BVvgCDdIFixtOQUQrbuHSwmHSIY=\r\n=jwP2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.0-dev.93ac698_1655205434004_0.17953557258489217"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"2.0.0-dev-dev.1655359784.b1a6e7e":{"name":"discord-portable-player","version":"2.0.0-dev-dev.1655359784.b1a6e7e","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.9.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.10","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.1","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord.js":"^14.0.0-dev.1655165434-b4e28a8","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg-static](https://npmjs.com/package/ffmpeg-static)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\n\nconst commands = [\n\tnew SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for).setRequired(true))\n]\n\t.map(command => command.toJSON());\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\n\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.channel.send(`🎶 | Now playing **${track.title}**!`))\n\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\n\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n\n    // /play track: Marshmello - Together\n\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue(interaction.guild, {\n            metadata: {\n                channel: interaction.channel\n            }\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n\n        queue.play(track);\n\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"b1a6e7e9b37c5e768b81dffdf4ea0be0368b3992","_id":"discord-portable-player@2.0.0-dev-dev.1655359784.b1a6e7e","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-MnKGGqXlT6Zi3IweqdWPe2WjMB9nexZXr87RuuSAYHb1zPjapeUdvmTqOzRB41i1ZbxSpyd89wV0t1O2FQN+6Q==","shasum":"58e98c1ed2ffa3b8fdfa4092e7f7e180b9f9627e","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.0-dev-dev.1655359784.b1a6e7e.tgz","fileCount":21,"unpackedSize":170730,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyeFReaRgkPkBzNGjgFtFV66HKmH9xHQtUocG/zSkcygIhAKw6L+Qdoeo7E3U9XjUH9Z7u7YuXUNcgfNp5swPISSBP"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqskyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqUTA/9E737uhjifj6zvI4Ca+wouiZnTY56T48oYGNLbcecM6asntnt\r\nial6UTMqSnY+Nm9jyNe0sUYvXHKiHqyGTf5Qs2k3E9r5cP0SxpAnLOYqltas\r\nULk+dkGQNkYux7Qq/WD/s7G/0JX+lqP3Mq3Rijwtoqz+ONHBuhn5ivvy5E2z\r\n4xUWeO2B49xWV9zfxDj/ccHHDTwH0+8/FWHKKW28SEsdpKCA2f3s7Tten0ob\r\n2KHmY646YH4y+Nyoi09wTjDEtzF+lpmJo/+ff0eCGjAMP9sMvEoi637UyRqk\r\nVKUIeDOKprgLqYvZOD7QUqQxwyEcK/CAvOu1ef3CbfDakoez1VkE5u+gzA9V\r\nkuUlZlLHp0YLcQJ3ZJxHVFTgMhJFxAlZ15wt1Mv8lgVmSQ0BigBrkMGa+w9L\r\n2+YQP9dtTmdEyofXts2Nl003RH2RtSJBNXDKbCPtEQz+TYxN3YQ7NIRlae3S\r\nlDMzMiuJMJisNsXWWJDhacccz3uD/pv+E6Ij2T0NHoVNqiUg4GOO1OPT5hJc\r\n59IVBo/FYDddq86igz2mBUxA7PAMfXjN5h6wrkC+xbI2ZN78QS079KHePmOL\r\nQzddyIQ+o5J2zKSW8kfJC5wKXLr8/CbaYYip6r5MCFGSbTMJgY76vZLplvuE\r\nkt+M/NL9KMD6dIHxhoUiZYIK/6o+hCj4xrs=\r\n=noWR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.0-dev-dev.1655359784.b1a6e7e_1655359794383_0.46493453645749594"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"2.0.0-dev.1655359971.9b7b3a4":{"name":"discord-portable-player","version":"2.0.0-dev.1655359971.9b7b3a4","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.9.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.10","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.1","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord.js":"^14.0.0-dev.1655165434-b4e28a8","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg-static](https://npmjs.com/package/ffmpeg-static)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\n\nconst commands = [\n\tnew SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for).setRequired(true))\n]\n\t.map(command => command.toJSON());\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\n\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.channel.send(`🎶 | Now playing **${track.title}**!`))\n\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\n\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n\n    // /play track: Marshmello - Together\n\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue(interaction.guild, {\n            metadata: {\n                channel: interaction.channel\n            }\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n\n        queue.play(track);\n\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"9b7b3a46fe371eaf506797a63fe318c5c4543d74","_id":"discord-portable-player@2.0.0-dev.1655359971.9b7b3a4","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-WzeLrw1iVORULnPl1JJTD0xzrUoc2CEWZ/OgcNRt7Y2cNmxU/oiTVpmEaLs0mMXt27zURMQI0CrrMjoBzyGxnA==","shasum":"2f65def7b18f3d6e0a77d3419066b9cf4ba419cb","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.0-dev.1655359971.9b7b3a4.tgz","fileCount":21,"unpackedSize":170726,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxRR+SKGR0r87xbO7jfvvW+veMCqBwk4W647gCBS8sLwIga0Ak0HunzY/lsVBH1GgySMbSb3JctR5ggtwfGXo/W3o="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqsnvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpaJRAAmZ7CtoNC42P6HbFp6HLv+GEogUUz7EYrtCJ7Fg2yBUoQRUsv\r\nyczuDu/RnioR8ko+pbvOouEHBnN55G9c1WviXSs/TLYIRMeowi7ZY6dugWFO\r\nJIPWdwvRkzchvNTVUfL3TqlPlZsMGnAcnzjga8Mp9WhejhEFyuaAWtq+VodQ\r\nBm79r6bA2ekNBrMJDfjUoP5VXh8QFpHIesBR9RGs9V8M/ZklmrcFlQJkeJmU\r\nNOLoBqy94Gc+rXJbqTmH1s5al5o92bBW7iyIRkc7ygrbcPHQGZbK+cA0rznx\r\nZ0+L3VKxjTybME5KTMJtkQ3ljpedZatVxuR6DQXPX0Mm/h21+c+qjsdZvPPQ\r\nJw45bPuXG8FUtvjkZGLpvxZcsLL3eVihOhyi0MpqTBYNXgMw52pIOdy5U0q9\r\nUA3gZTvLOxhmGEcqDoyKCAvppf7f5MwgpbOjeIqDeuCzOD5CYmaNbBd7VvM/\r\nfZvOMy3oCaTA4Y/LIDgYGb/kxMxnTapbDc/zlwWI6vr0BIX3eCLLT+9LBwbB\r\njEuIKhy2lspeRNsUWw7hRTFSMigQlaLiMaQcdNY43tzx66BkUaEvp/j0Z0yB\r\nE9wNVbhLkmC3LMmgF5vvVI0HdMCyjX6vKEg4lH7cQDzIsOuQB092YZqjcrqv\r\nTKpV2DsCqv2jM2u6VSH1hJF/AULBW+mDVqo=\r\n=/ZpV\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.0-dev.1655359971.9b7b3a4_1655359982860_0.8459347753834587"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"2.0.0-dev.1655368677.bfd2c6c":{"name":"discord-portable-player","version":"2.0.0-dev.1655368677.bfd2c6c","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.9.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.10","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.1","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord.js":"^14.0.0-dev.1655165434-b4e28a8","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg-static](https://npmjs.com/package/ffmpeg-static)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\n\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\n\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.channel.send(`🎶 | Now playing **${track.title}**!`))\n\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\n\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n\n    // /play track: Marshmello - Together\n\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue(interaction.guild, {\n            metadata: {\n                channel: interaction.channel\n            }\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n\n        queue.play(track);\n\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"bfd2c6c19bd002b312708d3b86178cdabb8ef886","_id":"discord-portable-player@2.0.0-dev.1655368677.bfd2c6c","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-OynxNAdACJHg9kpfM+kpfOKfX/14h4fGEMkO3XSHDuVxy9BJj+yVgKzoH8cxWivbF0JTgQPRlnY6LIdyDyLnHw==","shasum":"53fb45f2cdc3d88d348da1a6d47a1ba6e93a9fd4","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.0-dev.1655368677.bfd2c6c.tgz","fileCount":21,"unpackedSize":171469,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBDxaY8fFKlBFtHVmkzgnvqON6bJedBdTeRacTSW/e2gIhALhdlq2bAFQaEr1MQUXwpB35i2wfwOQULxrwtkXtrDvf"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiquvwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo2Sg/+J68XSBDvA8QaRtD0u5s6h7wYYxM5WeGjlNZGLLOVWhiopMp7\r\nkBpRjFPBY0KcvEx9u/Q4/S5n4Nb/IO/1OoJth63hWe1uajlNEwiGpLF2icCh\r\ncrfLxIzRRGMLmBhhyTgEBrPIq127Dt9i7QbAIP6/AEZgfz1FyYfUpRTSU1h5\r\nP6NcIcPrFHg6wqIAmZytRKj0KX0ZUVGpBQvW3VHnllurn2Hv/H9JIl8OpyaR\r\nZKktVtP0tqKjCCcpdT4ZUKtv6QSMmcso/DsoVCFz23t/1+P3+WicZUulfV5D\r\nD1VQgzqw8ThRU7M0Ww5+QXchAFMnOdnSgsXHjvaOR9CHAyQggEVx3/9HhVUL\r\nqW4RHKqsiAwKgSzhdCCf5Qp7vIB+6zdurh0P4HPnjuZnLbc/HQyPTDxTS4rR\r\nYFt1xUAKEBDmYYU1FZ4Q6vbaRmLoPjmXoHTw9VJMl2qkfWuswvK6MqEcMiZG\r\nF4cV/worte0kaaIf2Cmtg0mhqZO0Jeq4EedbW1H12RSzsHzgII1M643OwAsV\r\ntcULZPiHL1aDurIQ/r0UKcV5h3unVWwIwB89odr4hmIbKTSwqAf8hmQD27HD\r\nP5KVJXSrTJ5hWYXbtMHVJ8Nhvtq8VWMx0jlHZKlRmbRtW19xz+uWxQyvUxx7\r\nbwy++gOOSU+tBMvXb7VKY4qb+0B74QC02EM=\r\n=wR9y\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.0-dev.1655368677.bfd2c6c_1655368688393_0.4900081429517982"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"2.0.0-dev.1655376057.8c570a7":{"name":"discord-portable-player","version":"2.0.0-dev.1655376057.8c570a7","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.9.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.10","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.1","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord.js":"^14.0.0-dev.1655165434-b4e28a8","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg-static](https://npmjs.com/package/ffmpeg-static)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\n\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\n\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.channel.send(`🎶 | Now playing **${track.title}**!`))\n\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\n\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n\n    // /play track: Marshmello - Together\n\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue(interaction.guild, {\n            metadata: {\n                channel: interaction.channel\n            }\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n\n        queue.play(track);\n\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"8c570a7199a106d7c7b3eabb0decc94382c82d63","_id":"discord-portable-player@2.0.0-dev.1655376057.8c570a7","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-OpBaeBVWo3jZ+HWud5tAmSkByJeDAyUFWRzFWHHZcCdrKKFo59dMLpeVqm29aFOqVwjmflwpEUuACZkGgqMYpQ==","shasum":"04218528f936da66b693139e10d1bd31e02e9c21","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.0-dev.1655376057.8c570a7.tgz","fileCount":21,"unpackedSize":171406,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHO0fGGiGBnGTfQhwpMGAhhEeckYE2ZncEUraNh24bTZAiEAuF+Qo3hvwXFBVs+xxPWRQM9R+ut/WPNofRoE+psSOZI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqwjCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrkdg//Ub/gID86l/qKNV0Su1MaebgZOZO5mmI6xnmrDYqNNeuR8Z62\r\nMjqV2fmRI2RD4ULiQIsgG/GAMK8rYcdcudqPwshlfc/lOcEx2JzWTPJAX4M4\r\nmzeUWGGDHUQ+giELZO+YsSLCeHn77nJh2N93aDbIRKDfKi/Wu/AtcrlBHY8W\r\n4P6uB9esKjToTIqrHiwAumv2GedEF+boPLL089gvUKUJTYkZDCrlug58xyvH\r\nWN8Re1fzAtuSM7H+m3ivMX2aDjAiKPQ9XY6Ob8zJlLEwStcH0GSTzG3kRnRp\r\nzTJ6KKFxduu2+NG3N1mfJ5/zWrBMMWsgkVROynKP2bt0cJkvJ2V7v41fJHBi\r\nrp3bXiPWg8BaQrsglfmzYKYi0R2kaU41z93il5jUOtGw+ddizSTUWHUOCOKs\r\nn9Hx8JRFFczJAoIiL7bVWB8xwIkB4u3AruAG/MvPnHxilBsfjXkn797vM5Dy\r\n4eOF/qpxHrffMjGqEbt/BbafHMwGhOw4OSiobyJ0pHFAg2mMb5DeUoi5EoL2\r\nyA6zz1swPQAu0P/4JsRWtQNU+6rXJ0YjSLJKd3RaAbK2OYPdxv1HDwhn6B+g\r\nFillpZWaUsfM2435aSupFRpoG7xKRURSxsFga9Pi33GwALqxoqa5EXXDUPXx\r\nOGEocD0QFdGENHr0Dy0bHZHn5Yyb5Qfy2JY=\r\n=YLoj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.0-dev.1655376057.8c570a7_1655376065911_0.4545410651353159"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"2.0.0-dev.1655376700.19ff6da":{"name":"discord-portable-player","version":"2.0.0-dev.1655376700.19ff6da","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.9.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.10","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.1","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord.js":"^14.0.0-dev.1655165434-b4e28a8","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg-static](https://npmjs.com/package/ffmpeg-static)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\n\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\n\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.channel.send(`🎶 | Now playing **${track.title}**!`))\n\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\n\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n\n    // /play track: Marshmello - Together\n\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue(interaction.guild, {\n            metadata: {\n                channel: interaction.channel\n            }\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n\n        queue.play(track);\n\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"19ff6daa05c5f9d9ea45d30d01089f4d4cda6928","_id":"discord-portable-player@2.0.0-dev.1655376700.19ff6da","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-Rvi19/J1iC4RbpYY0YtlVv37SZtS5NtVcK4KToRqIRVWH6Y+E88ZSG28YDkydyFys896XqC/4Pcx/WhqAjGzIg==","shasum":"b8b1b4dec290d823eb57e9dec199b16ae3b24505","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.0-dev.1655376700.19ff6da.tgz","fileCount":21,"unpackedSize":171369,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZfcYf6nDFqBsUEpAQATNvGj64nB90T7+6joXxjYxkLQIgApFQQh/UmYSV59ziAHU39Tyhdg2FPftf+jViO0taedg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqwtFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmreeA//a4+NMtjE60OUmKjv1lHCol3PkMRJ6fW/zR3Cm9rHRTSPeJx9\r\n4FMWX1R277jtAFvjFYxQl+Op/yt/eRTstT5KodS0Wk+Zytzdv0m4tDqgAHnd\r\nKEDfRfJxLTbRzr16W4roRU1F+MM14IRsZnpeW7kmdluL7tISbLiOFK+XCwoo\r\nxPZojHVylDuH4h3PqhlgHfsuHWnMIr2N+uB2EMMmqCyUzQTiGcx/SXYst1NP\r\nVDe9m+XXCDyPjy3VJnUFYkTfaLbf3O9iy3fX49XVxYFp9rtDyRR/FkBNpA0u\r\nyxq3b8c3sgeUulkSmM6vgCDXsB/mQBSEP5o/oh/sYjWdSA5i1qIuZAkmP63/\r\nbMXw0EyOO4cIZ8+ElDNDNhNMsCP/4sUjawuT9TB8eP7q59Px9VgFw4aEAWOX\r\nbtrgulpmeuOXEs2TP2lB8Q93MGRnh2K4tjJCHdR10kXVdFeMZgEMK/nJJqnc\r\nVqg+ILfrmHWESvD/SIwV/WBowbILky2S0onNnXlyrygI5Yi9qW0Anoix03bD\r\nUswIJhDwsV8OkGCKdxHu/MN0ZezNMhlzBDLl7Z/l+bljWyJuNRBGdnfQj7iC\r\niaAXeQp6pgXcozTGYr9wC6c6i7mW+yWo9fYxmiu61K5dFnrfGsKXn1fp/z7X\r\nla4lHwFXq9hUYEISsFdccRqIoT4Aoi9DZuM=\r\n=joVC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.0-dev.1655376700.19ff6da_1655376709170_0.11504846674304425"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"2.0.0-dev.1655378962.02c7e62":{"name":"discord-portable-player","version":"2.0.0-dev.1655378962.02c7e62","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.9.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.10","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.1","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord.js":"^14.0.0-dev.1655165434-b4e28a8","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg-static](https://npmjs.com/package/ffmpeg-static)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\n\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\n\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.channel.send(`🎶 | Now playing **${track.title}**!`))\n\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\n\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n\n    // /play track: Marshmello - Together\n\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue(interaction.guild, {\n            metadata: {\n                channel: interaction.channel\n            }\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n\n        queue.play(track);\n\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"02c7e62753687ab07ba20605cd04c244c7715752","_id":"discord-portable-player@2.0.0-dev.1655378962.02c7e62","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-IVi8UG6e0uL3QPV0IDSJxzcRtY9IcV7oa1cw7bbaGBOJHaNGGfevfOyR9bK+Tdi4jhJsie/UVhAdaYHckmqbUA==","shasum":"ab8514c08799739d26bbc0ef1067b1c480f4d257","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.0-dev.1655378962.02c7e62.tgz","fileCount":21,"unpackedSize":171436,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGlfr/KxgWTRs4xlD9RhKUTYhckhO8I2lcIHMZ/C6ONXAiEA1HmZCnTSWOKinQhcXFGcDk7V+ZrBAa4WxUXG0881mqg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqxQbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoiiBAAgA00TssMvkTUfyT9Db4XtC6x1YuVSYY2npCTQP59DmGq/f63\r\n0XUtHHkeNhXoc6RpKxIQbVpV91ObksOJDi/3nLdXptTHtNOXky8WEOo7fWOy\r\nvl8AjtGqsBY0nRl6DOi6/mTZ5jnSMRabU5JSPkmxWojTVrgxLxqq2nt73hfK\r\nWUFl1niKJRe+aoTD2KizNu1bcgM5U3daeBzLkVobkynt7R1H6+aw2Z9hylIJ\r\n0FtK5lEueTiTR+MN8sL5xAj4KjjrIKeK/3C9DUcF4A2hnKx0Sr+fqjiddf7o\r\n2VQJAUfU4R7OT7eb5/jleM1dMaqLSg4Lonahi3+5+M91mKfqxsWzYc29AUWc\r\nvrryICLM4ITi5SlVojTJxNVJCowWe/YSbV99t/PJ4l/203YVfbOuwY/yeoos\r\nvuMPTlCtbjLPhI0Rf4cP+y7e6knezAZFT1PtCK7ndoc1jYZciZMG1BmXY+G1\r\ne7PNf7OsvTOYREb9yLVJG49FJsY9tAQJhTS8SVmGeVgUB/MyauPicUVQ9yEK\r\ncGJvx3uHuJLsoi9GJDuSHOhhkJbLJIkKHe4MXC2ZnP6uh5EBSlRt0KVZ/emm\r\ns0+Z7TppxWkOwrCt21crk6JWk28vaUWDemDbmQvCWe08kHxkwd8IXZYWgWk7\r\nsJuDaycRKMvvuDNRZxCNsg6zds2McNERoJw=\r\n=zy85\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.0-dev.1655378962.02c7e62_1655378970814_0.43378153307060896"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"2.0.0-dev.1655383311.c87475e":{"name":"discord-portable-player","version":"2.0.0-dev.1655383311.c87475e","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.9.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.10","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.1","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord.js":"^14.0.0-dev.1655165434-b4e28a8","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg](https://npmjs.com/package/ffmpeg)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\n\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\n\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.channel.send(`🎶 | Now playing **${track.title}**!`))\n\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\n\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n\n    // /play track: Marshmello - Together\n\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue({\n            metadata: interaction.channel,\n\t    guild: interaction.guild\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n\n        queue.play(track);\n\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"c87475e8cee65347ccb90b7ea895535441f26f88","_id":"discord-portable-player@2.0.0-dev.1655383311.c87475e","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-+fYCpgckr5xLX009c9OqGTf2WFzvXAifs0Qkfyx2vqZ3yZXZbVgFqrW4KpD8PmM+uZsLjzxjlx38Rb1k7UkZHw==","shasum":"12dd75444a95027fbc90436ea4bae53efeca28e4","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.0-dev.1655383311.c87475e.tgz","fileCount":21,"unpackedSize":171393,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBvD+uYCqXw0l475yrk7NqHUHnq58f542F1rr4a17wDiAiEAmJDnjLQb0i19UAIQbvWjEK67HCID5jZMY6NdkmsnfT4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqyUZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpq+A//Sfiesuo83Mi6BL69HIFBhNoufpuvEcLRX7u4GBaFYNC+lSLN\r\n9pt3ov61WNnN4mhlz3h+l1r2sSolqox/vb7/ygr7MsWJcgNuOwWwDRsTgZBf\r\np9k1YRa//+rZcCqZaFd8cg1emYtUaCAL9+oKHSYbNRYwumcDgK7BQdP3QKqi\r\nQZtXjWMNzSDcG78GXk9ZPZnhDq7y42127DZ9VajSyJ4rCkt7bROWigbaBwWU\r\nAVq65qzdEmQBXIQeQGHw7rAbGIWhJloWW8oC7L11c6n1r7cQXtk/nYJjhdK+\r\nMKMgur+WiXKR5w8KI5GnvsM7IY/8DmGaFykR7L7CgrNv/BazaY/AC80BUfa5\r\nllykPAvrrBLr8/B9NOHjAND+FNx3i3Xd1eAz0RciDAuUUbvz+h2TBhLoomam\r\nDOlXwQqHLMKr+wOiuO5jRZmkQz7XBpB+c6kmIU3neHz/mMKYVC5uyw6JWukH\r\nXEeYUDxWEcKBnJgYk9QV7wKIt+6zHYjq+0ze132+65z89UXpCl9qfj4pHPYI\r\nMMGCAgD1nEGA7fXRWroR5NE7SbqB+2TmGQexGei10yvoSiL5u7TSOqg6XSkX\r\na39V86vB6zRKC2Llhz3sRAj8tuE4Wb93J65+A9CcEg6sNT5KBYSmwCl8gk6Y\r\nOG0rmbBU1EQWXaUujJzjLV6b58MmEV18/DM=\r\n=g7yN\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.0-dev.1655383311.c87475e_1655383321191_0.4593202877395348"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"2.0.0-dev.1655446991.fefd9ad":{"name":"discord-portable-player","version":"2.0.0-dev.1655446991.fefd9ad","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.9.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.10","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.1","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord.js":"^14.0.0-dev.1655165434-b4e28a8","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.5.0","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg](https://npmjs.com/package/ffmpeg)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\n\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\n\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.channel.send(`🎶 | Now playing **${track.title}**!`))\n\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\n\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n\n    // /play track: Marshmello - Together\n\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue({\n            metadata: interaction.channel,\n\t    guild: interaction.guild\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n\n        queue.play(track);\n\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"fefd9ad7eb051c0104af806e99e2fc9a98f592e8","_id":"discord-portable-player@2.0.0-dev.1655446991.fefd9ad","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-ut4qOpfFUtoGx8zX8zBELU9RtjgS/0g1TIovq8fh79vGpcmivUlinyW2hNDoG9D84zmRm6JOol5l5id7StHZww==","shasum":"45d5277a9cb805a2c6ab11dcaa450102645f2442","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.0-dev.1655446991.fefd9ad.tgz","fileCount":21,"unpackedSize":171753,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5nTnXHjgLQ645YpQcMnYS4tSd73ToP1a0pzqFvabhRQIgS+UkMVsYXsJqmUtWmJaUeomQEPQYjmSsHcwOXJYF7CY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJirB3YACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrAtw//Zs+1r+zeeic0kQMCm5QKVb9OUE2kmSKrRniONWPZw8b5KNtp\r\noOqx4t78DUNqlO+TFrNgx+qaelp6MIrG70uf95qXgiR4ZLJW0XhzadpgGhZA\r\n2R+wTfH8kmE5Llpv25e6r9e8oYE8pADMYekoqaAimmHbfZTizXHE1blTf+o8\r\nuyU1v4JuqmCNiarE0cbRh4zFHnry80jJlQv9RSsDtzNF3iGv51W2cOUqqDRn\r\n388rHfCRHy54T+5SgOGDbwaAhJ3sYr9yVe58sJOmmD7LGOKapezupciBVzlp\r\nZoy6VBhh7JyaSsvGsuriek+x0oi1E5q/xQISt6LFYlZrvRY4sXs11fR/CuEU\r\nmEXrYwH2U9AbYcEgqBUwEt090o5jkDilWK1j9v99h6gMhZMyALWz6jR+dFLE\r\nnTwCpZ1J/3Fey4gOSwbJCh9Sx1N4CdhFZamN6iVTwPm/SmKe4hN77NakgoVM\r\nAee5eOLa3TX4y1AI6nWWx7Dyywey3mUUIltWpY9YVLk2zU3kqAgRaR0Wytb5\r\n/ElyQENgiW+rX2hsb7un2107lnvRtDLmHkPEEDYR01j68vyPStSZ1c2TJEz9\r\n13WPux/vvR5VLdyqp/C83m9jEO/PA8WEI6EHxYA4xKakVvRTuyx3ti0riuwr\r\nWaAPway1rEmsJH0LfJ41SguWZMipWAokUxU=\r\n=BC7a\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.0-dev.1655446991.fefd9ad_1655447000663_0.22901232528844973"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"2.0.0":{"name":"discord-portable-player","version":"2.0.0","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.11","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"^0.7.0","@favware/rollup-type-bundler":"^1.0.7","@types/node":"^18.0.0","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.0-dev.1655899441-a3799f9","eslint":"^8.18.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"gitHead":"c43e4d51236caf301c19fbe229e54a40b9fe2abf","_id":"discord-portable-player@2.0.0","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-R+906aaleCWRMnAuuwx61cWNBZW5IUJp2ISA8YJFdUImxcKXPF2C1evT4P4uTmTk06gJvN5qadtnpmqARwiaCQ==","shasum":"1b6f451596a4c6839442a9f110e8ea0f68bb9a72","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.0.tgz","fileCount":21,"unpackedSize":171496,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICKQox1LSdez9672relochZ6t/sFDsmidlkTRBJwYkwOAiEA2UQPlo16xzSs0pyEmDu93kdPGHjyNLIYMHaRtl2zy1c="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJis0WJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrcLQ/+NQguJkxterYtbPKveGOQ9AlTKakVi9OAXJjcQb+jtQ5ZF0ge\r\nlfoNZUsA4UsGtO7RckgDyc9X7objPrv1g6MnV0DJnrcgVFGTxwoVVUOxriEG\r\nC6T97b4IpE8z2f9JziePZ220GYRNsb3KIXXiavUDgm/uXbhBzXQrXn3dU5NQ\r\nUTOdWY/DsJK48xCK/Qe0Ax9axBsFoHY4PxccaWh/R3/X3r7dboeAYkofVzb6\r\nHeI4lUCF8raSoEzXuRYmgMzB9u55+KRlZpo07XsGm3jMPCxZ3xBgdM1nE9N4\r\nsDhgUcXkb/TstaYPKwuvRFw2Djlja+lYVEUpDLT4ay172rVZMWlcosejO75m\r\nsD4VPr1Aameb3mY0AzCqPMStJwyHZf2wH8oDOAMcqmQwBZZ1ZPTby4+mlElu\r\nAp+T48LqAnFMAuyIJsm+1WIcB9D16XhH5Otfs0SyoDan6KmHhNlx2u8a6vuJ\r\nFjtR345NRzumZIoyby2NtznWLexJJz/A7fpK7T6E6nbQkj7C3YJ2n3E0T5bB\r\n6O9cC5Dxu6aYH2G+DBPuv2cIBdLZmjqCUGl5swIAzINHZYfKS4sFl0+e/Gp+\r\nRcLfWA81u8fPfzPROKfj6J/bzPWC4EVBis6/6D+0Ma1Bh5Q/+x7/hes2D+xa\r\ngB2127WuYg5VhXNxMKauVpKNKyK+jvtA39s=\r\n=v0+3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.0_1655915913109_0.18568607886664146"},"_hasShrinkwrap":false,"deprecated":"This was a version published by accident, please uninstall!"},"2.0.1-dev.1655917631.61474e6":{"name":"discord-portable-player","version":"2.0.1-dev.1655917631.61474e6","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.11","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"^0.7.0","@favware/rollup-type-bundler":"^1.0.7","@types/node":"^18.0.0","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.0-dev.1655899441-a3799f9","eslint":"^8.18.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg](https://npmjs.com/package/ffmpeg)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\n\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\n\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\n\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n\n    // /play track: Marshmello - Together\n\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue({\n            metadata: interaction.channel,\n\t    guild: interaction.guild\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n\n        queue.play(track);\n\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.send(`🎶 | Now playing **${track.title}**!`))\n\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"61474e6167116841fd74f315d77ecb760023c35a","_id":"discord-portable-player@2.0.1-dev.1655917631.61474e6","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-TZZVn0N47mkZ9UVphxgAfIZz5mZiTELgEx3m0cqc0JDHdSSnoajsvr6VpFqUYH79uxJkUpZmKGnWm+r4k0NtXA==","shasum":"635ac44f94a16d572ae2b624a0a3807d4827ebd7","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.1-dev.1655917631.61474e6.tgz","fileCount":21,"unpackedSize":171882,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAQv3u4uLNKwYWzg8aAiAZtWENuWZQocRYTqlmXObxEkAiArevS7NxJ6ZMtyRZmAqWu/a5yPb9c8QDOI8v5BgDyAqA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJis0xIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmokSg//b6d8zRsd8JAlLJeM0+aMVe2MAiUODWxMNBz0pCw/m9Wo/EUC\r\niGSjzIXB7JznpY6dprK3MpkyppmybQp1sQnS/CmpCiPErh1ghVn+IJoJzKNp\r\n9+zwPBVJVto7nk38vvU5SNCoQxXUH5mP+WUGB4LRTqibFiSkSqTSazrTL7L9\r\nu+XZPcOSKQgP5j3T3N0qbVbdlVJf6uXo7Y8tew2mjjqiQqoC6sr7vhPjPJ+E\r\nHk1a39mZE6r5WAGFcYK5H75GUO/PW5ZkFpHd/H45lajsf6zT2q0juJEAeOe6\r\na/uy458dM8wTwkxaG5PaRI1DH+T3DqdBNtv8M6PnQqGYdaTC6O8aLRQ7WPlK\r\nmXhwemyvRw5kOxt8hEd+NjEh2SE9vKuZ7D+Dh9k3fUvp+Pjwvt27GdYUDuSo\r\n8Yohcbtnb9Bw7Ep1kj1ZEUmlkzdzkF2e9Chk/upimD/e/lB/4218XnQhNZTD\r\nbZfyXIWEObgbvYB/6SXF7O7GQHbwLt1A6XA3fo0BvsCmzzu1bzY828sM1yLj\r\nPjxJYxmwWBqXpcGzEdDiHZ/IDRwvDr6pZM0ny6Z9DM3FNOu+yI4GRPdceGuR\r\n68yaGiegAbnJabK/JHqxoxIbQMU821nlFInwRs6f6LNrPw+3fycBSDBEfMyZ\r\nrlGQNBLcE8Ac52pNl+kYnoS+SiQSeilzLP0=\r\n=J1zC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.1-dev.1655917631.61474e6_1655917640711_0.07593625186442376"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"2.0.1-dev.1655918484.2cdf4ce":{"name":"discord-portable-player","version":"2.0.1-dev.1655918484.2cdf4ce","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.11","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"^0.7.0","@favware/rollup-type-bundler":"^1.0.7","@types/node":"^18.0.0","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.0-dev.1655899441-a3799f9","eslint":"^8.18.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg](https://npmjs.com/package/ffmpeg)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\n\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\n\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\n\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n\n    // /play track: Marshmello - Together\n\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue({\n            metadata: interaction.channel,\n\t    guild: interaction.guild\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n\n        queue.play(track);\n\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.send(`🎶 | Now playing **${track.title}**!`))\n\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"2cdf4cef84fb783c6b54a4b420ea440fc82e87c6","_id":"discord-portable-player@2.0.1-dev.1655918484.2cdf4ce","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-oUHJJOjQPYVDuomNnlz8lSrWf2G82+fATmgEt6U/4BuCjxSEl5iVtEDjslLtgWyAx1tcN1VmpAXUz6i4R5AxEA==","shasum":"5e4d3a9eb896ee75ee89e0f5b581f37b455e04d3","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.1-dev.1655918484.2cdf4ce.tgz","fileCount":21,"unpackedSize":171746,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHmattv4BZ6bHXdqt7VKoQYmeM2soysGEcXQ9PGtaNvAAiBtvdd76DaEETJL0PX/yoHovm2FnEtfa0R0Tn9xiwhVsA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJis0+eACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqYihAAgGe/67rdk0usgiZNFp/GIWKo+0VBhjyaTOv7nboaODfmLFXy\r\nVm8UvMswXBweja3UgL+XBBbgWP+yQ8tr9i7xW9zOx4W0ZlfrKw1xVHeMbRDV\r\nyaY9/I4BD9kSEUUx2OUu8mIqbe5bZQ0j2ffHYK/6tmQ4BxjEXDxrMtDNtO4P\r\np2OepJPTFcYUHIFxAJMpeb42hNqkyeJac4bKNO2ElbXmHZZ3JtNR58T9FMC2\r\nXrDIhclHEDlVddFI6McXwqKIT4HDhLpkax6YpVIuO4ubJbr+m4JwTKaSXEdg\r\n5rCxvzLSbial90fwcBXYwvx+S4PvVVZghtITJRVVU1xm9E3iCwHpjDPH905D\r\nVw6OHKBeyKFQAJXDfAS6zaRuC72NIm+qA6Ev2fV4KULXCzzJsWzz6oxFndnD\r\n31TicwH9RdjPdfcZgYmtXoZtQ3pVi7zHWcsxGCGzP80x6NkGmnv7jYQt62RC\r\ncRJYFCimA8FlczKqsUkomf4jD7jCn2BAsQYDLYSCBRI0gUdnHllzeceutwpw\r\nJKZJ19ehXpqj85TgwaXC8me9a3ZJ8B0kHK4RFYIIqYPhn8Tk568MjKNaywP5\r\nRzuM/ciku1M97BfplPti0nKTMRQwLrqVOdJu8pFlqtUivWL6Z7zHgnN2yx9p\r\n061VKwR98nzTXRe5b2OysjSJXQBCF9SL1Uo=\r\n=rX7e\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.1-dev.1655918484.2cdf4ce_1655918494706_0.050928661293479616"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"2.0.1-dev.1655918498.2cdf4ce":{"name":"discord-portable-player","version":"2.0.1-dev.1655918498.2cdf4ce","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.11","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"^0.7.0","@favware/rollup-type-bundler":"^1.0.7","@types/node":"^18.0.0","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.0-dev.1655899441-a3799f9","eslint":"^8.18.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg](https://npmjs.com/package/ffmpeg)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\n\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\n\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\n\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n\n    // /play track: Marshmello - Together\n\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue({\n            metadata: interaction.channel,\n\t    guild: interaction.guild\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n\n        queue.play(track);\n\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.send(`🎶 | Now playing **${track.title}**!`))\n\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"2cdf4cef84fb783c6b54a4b420ea440fc82e87c6","_id":"discord-portable-player@2.0.1-dev.1655918498.2cdf4ce","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-C6406iS90aEMZFzxYUKLQEXfJuFPyYmhkVdKktq1e/obdeFuFObzIHnCSSKiq5rsL2JLY01FSfaDJAcJbzNTVg==","shasum":"5daa44652a869aa03a9583975bf85cb199dfea11","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.1-dev.1655918498.2cdf4ce.tgz","fileCount":21,"unpackedSize":171746,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBNW3JkWZQfgOqtx5S791BqVA0JyfPYH0B2TiUvPvZU4AiAsVHKUqWBqGEFHAeIyTmNA1XvwCwicWjiAKjndaMsRUg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJis0+rACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmppqw//SFT/MPn8gY8cNuWLjrW7v+/bINLbsaW9OjyFzQ6N6IfG6ZlQ\r\nJ2ez9usj21Tdu6tpJ3nL1i0bWdxNYvwGCKVE/cLQsdYB8X7D2HkI/RdQ/QKL\r\nylkWIGWGaQyIkuDfDYwxlAWDMBLKgOitlQy3HBloxKrF9+/ei/QQiK6YzAtl\r\nQHwaQZRs6GpXVHzJpwWciTa6CZ+bxhepjeY1qH2yaO0JcY7oM3OF8KQKfM4w\r\n2qspWTPOedcnLBmytdafn9/qoR1jMdvm+wvd86CVx8nn07o1QXGPJ070VR4l\r\nmcgXsy7qPAf885AVsI6cYl4DMNDX6viomoO+/4TaGa8NGihBqoqE7S2G6h+P\r\np6XzBWAvz5G2O9o+igIV8Hfll/um+O/IJQDAIJfZNR3RIH5M4kY84YHX0qNv\r\ndNt0+dbdKNiDhMrm9kV1yK8C53D2i6xSj3UJMCNBi/MHXgrbeXFyOVXgaMto\r\n84+/hgUfsd6/3NETw4eJKvu5rxCN6ZSZT2v7AF/2rPWLlkrfHxTBabv3Z2hd\r\n1ZfoOOkMltzEXPhpD0WsLR3YpX83m9NmePAbHISL24zod7+NzdTN6nONahoR\r\nzMKu/VGW6j/1VWYaeyNbRhyYVSstrSL+9lddOUP8EoXM4yF3YXleyS6e4WEv\r\nyu8yA0aM8TDHDd9X3y7jMGHVuqDafxqxd60=\r\n=twAS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.1-dev.1655918498.2cdf4ce_1655918507329_0.9138393710024051"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"2.0.1-dev.1655967014.db44a57":{"name":"discord-portable-player","version":"2.0.1-dev.1655967014.db44a57","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.11","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^18.0.0","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.0-dev.1655942976-7279f9c","eslint":"^8.18.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg](https://npmjs.com/package/ffmpeg)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\n\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\n\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\n\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n\n    // /play track: Marshmello - Together\n\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue({\n            metadata: interaction.channel,\n\t    guild: interaction.guild\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n\n        queue.play(track);\n\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.send(`🎶 | Now playing **${track.title}**!`))\n\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"db44a5759c0bafa55060c2fa15b5dca3f3186fc0","_id":"discord-portable-player@2.0.1-dev.1655967014.db44a57","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-vuiUh3AZMn2BCRvV+oUekUzx02BA6FCM7addNcU+UrPJlNvutnhxyIu9hnPbH669c2K3nSQpEqrZrPn0LP0TVg==","shasum":"98364534efe45af2df3bbd156df7b5ab87ab62e1","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.1-dev.1655967014.db44a57.tgz","fileCount":21,"unpackedSize":171835,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDiOa7UPIivNzVTJq4aCnkqgkNo1StYYt4WtC6eKmmaWAiBnaPd3EGenG8zY+Pdhf7Dj+IDUBW0sg/KgGmfXt3066g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitA0uACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqJlBAAgwsCceiY5G9SStqAU6HrKpme9j9O7mG7UYxE7FBZxRMX4H/6\r\ny0BtdbCNLBSQ1L1F78JTiq3gdSfAnWZeE3dzI02uA05NhPAaAfyo7El3NJQl\r\nldTovK9R/ZVOZRKI6eGo7kdOXapf+/EGv5fsQ77kktWgvb3rL7Kf5ZcKAlOL\r\noex1zdKzWKp2dnV68RY3NiA69G5YVtHEvm3zUWz428p+9Qz0L2I8zM3vWGEb\r\nU8KqEB0Aefab5G4GnIaRVB+4A9wCxRgkydHNHifxmSMOdjLFBQEmKxmxGF1m\r\nTXXZxbSdIFbLacyz36vG/hwd6qoqsPvj37NsDoATPZn15LRBV2V0eG8JiU0L\r\nAdSbhJrCPe0V43JULlUGQb35UiQrWLw+DXj5xPTHUGvJJKzFCD3huXC7IagJ\r\n3tj67u2G+eTxwWRBNHsarCzVJHabU6pkDXIn2xERhR3e2u5kdP3PRLCRknvI\r\nGYqIg7xznd/Owd1pUOfGtV6yKnw2GhkvQiW5cHFLFKwpq6ACXA/D6Zn883/8\r\nfH81ARnQC2+TAKFuWEoRMfH5/Lc8TN3mUcBcnc8Ctypkgfg4ZlMqwj2j/kmV\r\niYnLCJ/i3wsKN1TM2qQQLfhj0UHoqMt/0kquNvK4Ik08BL2Wd4tOthJdZNb3\r\neVHVQPmFXVmDY8xaJ6Wt8z5WtFgG0KZKkfU=\r\n=QbqA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.1-dev.1655967014.db44a57_1655967022600_0.1778508216025958"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"2.0.1":{"name":"discord-portable-player","version":"2.0.1","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.11","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.2","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^18.0.0","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.0-dev.1655942976-7279f9c","eslint":"^8.18.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"gitHead":"089338531ed16a597dfd165e0b3c1db845b908e5","_id":"discord-portable-player@2.0.1","_nodeVersion":"18.4.0","_npmVersion":"8.12.1","dist":{"integrity":"sha512-guB7UNu1YnlrNGIuTGJZoKILZJMYjS/1FOr0YNiE0tg3xAiatqP9kQ0ZDFqp/zeKNXCFLFVtC6hQnMXexa2a6w==","shasum":"50012b75dde7936eb0c7c65aa04c196876bb4ea0","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.1.tgz","fileCount":21,"unpackedSize":171812,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+qbOZQL8s8rGyHWzSyCZyFrHbDqubiHGH5gsVOv90KgIhAL9C0Rw32LF8IRmuSDLO8gpHDRX69rMW/PlRgeM1fLp8"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitbFqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpNjxAAhKapWLE910WZHyGo+OREaeV8+DwUvyXaGmGOL3+je1EZqpCS\r\noAvBlcvuGY7O6OdxWY+pt5Qpj9FI17qy3aO7B0NbAnmxlJQHl+v+u3isE45X\r\n7ei5kbjfb3uFwtFWSvCCUcujMchdTg78rwaUNBjkL4JLYfbdGWOGuWn3mNhd\r\nrR3VlSom34mZxASIsmKvpF2NCR7FpPBqd4/XmzXkGhkm0MvKYcSio/nsX2Ra\r\nONullMBR62gai+P11NIRIh+0u0+fMGoyyfTi/GmEcZEIgMR1JWxYDuTzf3Ix\r\nH6fRgbAF6FJ7ohHvj7CsgGtBQPyh85NS18QK0jwOA59IC3UHjkkrddhg1sBp\r\nLdBPrCMnzEVr8TgvxHdvd5dauo3RSa/S3lCbMBeb7xucCQ+kxhmgXc26OoJr\r\nMBrnSKWrtQ4sbKk4Nf/OA6sI3rDO8MNtLuHznoUnQJ40r1a3vLTHSBrprjhV\r\nRpdI2jqHB0ES6s3OtPVD/szL1Hvwzf6k0SuV1y9jRftELN/JlgS5vh6ljm8j\r\nGQi7wFS5Mc5fzAJybjfDnJFVOCYWPZ3hC7BWcRGsB543DBvXKyWttSpgQPaA\r\nwuWcnwNpD0xf2j0ze0fej7b0FuxlGuRm2Jcs+4evxH4Z7YBa1kZ1lvLgKw0y\r\n0WQOJvimSDd1xzj7oyXRY+pkd7an56duw24=\r\n=zk3b\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.1_1656074602405_0.8401756942959424"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest dev release!"},"2.0.2":{"name":"discord-portable-player","version":"2.0.2","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.0.0","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.0-dev.1656060492-e24970e","eslint":"^8.18.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"gitHead":"2ffa6ddc4a21a0c65f26430fbb9540a4b6995fb1","_id":"discord-portable-player@2.0.2","_nodeVersion":"18.4.0","_npmVersion":"8.12.1","dist":{"integrity":"sha512-8rqxNJ2Z8xRcBry8d3UnpUg23rMnXtHW1oOMEPNMTi/atvIdmnd7jmS2QBkeoxHWxGJS5Z9FHeXVYCZtZzHVsA==","shasum":"f115a06b14be6f8f9f6c6c81b2a23b2d293e4767","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.2.tgz","fileCount":21,"unpackedSize":171812,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEdVTGlf7lDybh270DN3YpsGgv8+cKIl08CU+SKmHjsHAiBxLzQPubQ3z/frbXaGpf9CeIMtzBJoPkNAFrwk9+5o1Q=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiuHrKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqLqBAAga1h+15H0SBiOZBbolveGdQDI8Rsmpsk0D0DLW+X8aELM4aJ\r\nPnrpZUOSHX1JDKckgjOLdo85AnPp6eD1TGnN1rPiWkSJIK+QED+prbzB/y7k\r\nctUdlfAZURk5OsGVjDI08lbyhRKtFZVs+uaSahuZ0IuGZtPcTidQcKK6+A0p\r\nJ4XyP4YGmC3oxhLu6zjkuwhMneGIwpUSdaKzdoYWN6Ahb8yxcKt9wQWWrL1Q\r\nKimsyRF4mvjvVFSkX2mIQxOqNrKkbT/GZ+7XK9qPqu+y0KPBxbwr1DtRGlpK\r\nRSc3R+K62ci3ZStlciJGjkpF4aaxYxt04tYgmpHDriLk2JS14nw7NPQTR+Gq\r\ne4Fw/cCKDLZCtQxwMvBSNr97GnKawGIFz2mjIA83sNZAIx1UZvp3U8ckcw6n\r\npEyUyB7uJ+f3bs4Hh5TyYhufpbkmLmfT8o+dkyj6/eup1L01MiaLHP4/xwE/\r\nuGPZbg6pgzC35nCSuXJSCtS1bv52ldME+x/lVxcWso/F2vIhk/Cz/oJmvB1n\r\n5/Pc0Q/7W3ZzxWa+7fRBkbR1T6Cj6V3bEF+T2+MeTgGA4Hzmmht2SnWwQygE\r\n+nTTJ6Revuf//fuCFkv0GxBzKguyT4bTZNnrph/Aoqzk0h+cPB0rRfGqNkE2\r\n3pN0gMzi0NFkJAUf4jAiIzMIqZqpLQm2h6Y=\r\n=i4di\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.2_1656257226091_0.22762413791514358"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install 2.0.11 for official v14 support!"},"1.5.0":{"name":"discord-portable-player","version":"1.5.0","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"Neks4922"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://discord-portable-player.js.org/","dependencies":{"@discordjs/voice":"^0.10.0","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.2","spotify-url-info":"^2.2.7","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord-api-types":"^0.24.0","discord.js":"^13.6.0","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"gitHead":"d10feadaf565e921b0acb6a1df4254ecbad64ef5","_id":"discord-portable-player@1.5.0","_nodeVersion":"18.4.0","_npmVersion":"8.12.1","dist":{"integrity":"sha512-Cz7DmEjZjYdRVB/Z7o7PGZ1S9Y5Q6pflEm/YJOU9c0Yrknl+XqHerFmTFttNhOy+Ev8WG+lnfENzfHy7bOMuxQ==","shasum":"b498fe73a2e55cd423803f9a5dbe6d44d62761e9","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-1.5.0.tgz","fileCount":20,"unpackedSize":159285,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfNAfo62TmrWKD4lohm1Bu0w6350vNtagWT8BWOoxABgIgFAFzeEu+ArEyDDAnFW4dPN9WxjBKG2LbdNVgkN2Dmto="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiuUxgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqq5Q/6Awt9wccYSJpQN4GD/rMP4c5jqy67cdGbrjprnNpZ8f5txHYL\r\njDDBvbYBmP6cy3zkYSc21Z7jwf64UA068XDd1ieJR3jH9tmSxOk8D8Eg2apI\r\nF5Lr2Qp+pJFVdKTZNDAY9d1XbYfkfOZPvzcYbua5/AgNfcthGw0hQzOY/bEr\r\nT/b0Yk3udUN7CibkLM9zMtD3VEuhCRj/3wm0s6SmutYHfAdbmlvJZELcOw/q\r\nWTuZNVW7SV/s0fWYag+4MVs0tIIUXKS9k0OG36E7PzWxYj29u6u1v77efxOb\r\nIB+W0vp7z9ehFU5MjZ7+MEE+m2OfzYqkdJN8+YtD/8fQFO/EtP6KCECpXRPk\r\nDDIzRMeFhE8aGPCqEqp0X1UHyyVAiUIl2M0vrqzEbl3buQmAacYd8uvtJz9m\r\nuwww0/Te7kFEySquMQaNYWk2kkRindJtQK6cyiL1T8Blhuauy+6bLkRnIHku\r\n+HaDeygaXJ4T01UkOZCm6k5KW+ssbiig0zn9EvDz65uO0A/BW1w1XGfYu7ze\r\nq+tfVY0Vx83cg1A+4eUq6xLN1pszWXW9r/8uTM0D66zRp/3okNpRf+ZPIPY3\r\n6mgp+vRxeYZIh0/b4b0Oyl8tDltB2gApgpCMqJ5LkMyNQ5IyGIGwxsyUAjWz\r\njNfCCMqHgpaLdP+PSj3twFZ1W9gGgFVkseo=\r\n=298s\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_1.5.0_1656310880647_0.6558260357067489"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.0.3":{"name":"discord-portable-player","version":"2.0.3","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.0.0","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.0-dev.1656158629-c4653f9","eslint":"^8.18.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n# Page 1\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg](https://npmjs.com/package/ffmpeg)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n    // /play track: Marshmello - Together\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue({\n            metadata: interaction.channel,\n\t    guild: interaction.guild\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n        queue.play(track);\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.send(`🎶 | Now playing **${track.title}**!`))\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"82e694d7fd0f1d61df4f2d39d4b746369d601146","_id":"discord-portable-player@2.0.3","_nodeVersion":"18.4.0","_npmVersion":"8.12.1","dist":{"integrity":"sha512-Mr4n1cFYpPWnNftWseUb+qLyMC5N9kDi7DvbkotrrnXXTNOsl4AIkwZ2QA+OQiq5TQ94YAjaXxXp98A4ZXrDaQ==","shasum":"9a71d12e553a2b83c20f0813808a6596df0fd478","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.3.tgz","fileCount":21,"unpackedSize":171807,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICz1RJlYnX0IjI89IMpvx88L3qMiXuNuNxbXS51+6rLWAiEArG6vh+lGETAv002pCTyjzuYmVD3XzMvCr08Ob4QKU+M="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJivTy/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmodPw/9HIpKqggjjoNGDdMuOzmeKKEYgcoDEzE72ld8wYd0Wses94aE\r\npuu+6V/G38HSDXAVUv+7AMKzm59+HnZNdCbM+MJjgG+e/EJkbNg9vCwvU3a2\r\n7RoD/m080RlqVEjhYJmBw6Z6EEaS+B5HoAEkqKsvVQAwJsgvI1ErSN9rc3mE\r\nYw41oRP1ROu2Wg0jjCPi76lcVlekVjWwS536mGbDCaMuHjIatc+U1YdIeLK6\r\nFaoSB9Jdpl5x2Pl8tMASMb9m5xnF5TAQTD3BP88TzBwxR5jiFmnlEj772dsc\r\nIRYFIPf+WUm/wv1sTzsGxaprl29K/QRJ0CsJAgfx7iA877Tzyhwo2rDzjqtk\r\nB9x8l+nKK3/XMv3bM4gLfeLOW5wOECEEG2EE6lVElYOzXW2R5Qs+2MdavhHb\r\nPN9/9dvtJKlLvRmxEMRMhhep11qORkgJoy63I4Gw0Ff1JFt2YosGo+04uLGL\r\nhmBt3CUCF+pOL9I9CSJEFURfu30KDOwKY+r5mEm+WlhSG8yR4qfBWtIVaFDd\r\nTxlpmLOR10IHPQ2Uu6sUIinysubVfS6fjeXeVaaAFk3CjggPwSPze0PBeTgG\r\nRA8MuBGqWT+YIxJ3IjknCpaNuwpwKpZ81ZCRub+8YKrXGcEtKALLSiSktS8G\r\nW+Iq93AZJT1ZoL7o5gzWtoClnZ+Arr59Ykg=\r\n=VehW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.3_1656569022791_0.6856758458412828"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install 2.0.11 for official v14 support!"},"2.0.4":{"name":"discord-portable-player","version":"2.0.4","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.0.0","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.0-dev.1656158629-c4653f9","eslint":"^8.18.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n# Page 1\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg](https://npmjs.com/package/ffmpeg)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n    // /play track: Marshmello - Together\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue({\n            metadata: interaction.channel,\n\t    guild: interaction.guild\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n        queue.play(track);\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.send(`🎶 | Now playing **${track.title}**!`))\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"92cabc4ed009837d4f401b380866a0955aeaa7b6","_id":"discord-portable-player@2.0.4","_nodeVersion":"18.4.0","_npmVersion":"8.12.1","dist":{"integrity":"sha512-3PStAxr+5oJHHBM5rQjXE2MRF7Sn/8lrMzcesih03Xc09NIsAoVobYkE1GbOaLtVM1hihoXDBj2qssdJHTgmeQ==","shasum":"468ab8d0b65d714c8fd4e5fcfb2ea1318d35317d","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.4.tgz","fileCount":21,"unpackedSize":171807,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEfSpnDYLkq2SpY3xfed0IPtbBcq66COd500Ts1UvwOyAiAYA6V38UPiZLpT/ZupJJDna5yOSBPqUngIxi/R3ne9PA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiwn51ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrH1w/+MS/g6+sjJhn6VYhpu8bsEUMB8XdiUveyMgx983T1p862wqMg\r\nbQ48NIdwOtiavaH45Z58VyVmT0hFnD5esfFLYikJPuRqaO0n8g2dxinONZdH\r\n5TfNv6H+ZskSTGtmJw+53fGQZcDnRgS6iYCda7eEUz+RkG20vhfGvZLkpmxx\r\n80IEqARb0S2DzpQU+ECNEJJBPwGH3mkyQe7gAZOe8cpSqjjGg16zm1GmCW3X\r\nozxz3Q5hC761h8j+ps4Yap+Wwkr3x/YaKWwStHBYMEPYcl6hLP1y28MhLl6V\r\n3T4sREFsUqXLGjIDhOi2Lf6L0sTc/QamX30bKq83LpQ7ydRDYDf/15lrc9Qq\r\n2ppvPhLMm6xDzn3fomIW5JVZgjwgT5EqzbA7Qp07Y/aVMYZg204W6Hg+1jiT\r\noXafuYyUrRoO4sEqj7lYOleRPli2lNCYCLYUmfgYqMwfwl/MZ/45PtGnBw27\r\nZPtgAm9SeHPIllCCf8QrnIRbYuii/LqVLCs2cZZvJWg1bVODCr0RpR/bOZw7\r\nEehiENodJwH3+Q6GaQwN/RYPRfjnkbWizC+J/75XTrs0eYBsgblQO6mZNwj+\r\n2gO0kCpXKNHna9tt855ESgbS2+YDFijVSDWXSo+FCWM+0CXq2VmgCpTy2gX8\r\ndNK/SOrqUhQkw2b5hYsqhTOHULXicns+jgI=\r\n=Pdue\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.4_1656913525063_0.7744615212714152"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install 2.0.11 for official v14 support!"},"2.0.5":{"name":"discord-portable-player","version":"2.0.5","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.0.0","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.0-dev.1656158629-c4653f9","eslint":"^8.18.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n# Page 1\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg](https://npmjs.com/package/ffmpeg)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n    // /play track: Marshmello - Together\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue({\n            metadata: interaction.channel,\n\t    guild: interaction.guild\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n        queue.play(track);\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.send(`🎶 | Now playing **${track.title}**!`))\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"0da7f1ae99db695f76bcdbe7f5a2c6695531953a","_id":"discord-portable-player@2.0.5","_nodeVersion":"18.4.0","_npmVersion":"8.12.1","dist":{"integrity":"sha512-fRuuqwjCal+BppGKbuaObDpmRwytzsADpD53eIJ0Q9EAR6LC5wWpyIjwnLubj/Fk/edyvchAYct0XXfZF8/+RA==","shasum":"ebe5fbf11e777f90dbb4b73c3b115fb5b7fbd7dd","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.5.tgz","fileCount":21,"unpackedSize":171807,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWR35KuSndD72KzE9Q4wTVR/gNdEjrECfSZtgdofVCwQIgR6BuW4jaN/2cA0LuncOlrf6QabhpbNpHYYyAiVO4wmM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiwo9ZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqDcg//SfDnuMclOI5VGCWdD6SJ9pHDdQLi9qTZRLNcQz6h3ayncOkm\r\nfY+X3+3FR3hHAKgSO+rsn+A/OuSFkXJaW3RdG7thpojDFE/fuw9/PVR5708r\r\nI78/as/lSz9l4X1M4aQyhh+JE91WGYOrCcA+vE0xgZ4PMo950ppWfYKPVYt+\r\nJfJcWSvB+yn381em7DcBXqlu4mrxpttJrYG5G9ZX1AlDYOuvZn6J6R9VjrZx\r\nG0+a+zEHiVWXZGM85yBFy3GDGBJobO/7ps8ulJEzANII944UU4x8N/yHCLFt\r\nZopIHpojwn7dK1SLk3lOjIHSuBxEwGvttN4EFmLa2SomETqHdksKNq4RXgp1\r\n35JV9w/6GWlZ1p3ZEFBtU8HIJ/2+jCZyHhKuubQD11J76cixqIZVeGbCV0Md\r\nFOW8maBbSqAGzo7jA7+5wSY8c9GaGSBR62kiqj4Hffdv8u2eX6qQLLPe4VJT\r\n0LXX7LsVkh2TER+2KSu8q8TstkoQt/OhBxbCqKGcK5Wgy/wHEoo1jkldWQ3a\r\n0xakk4L+KjvUuXZD3lU6ivSwkHtYkv0YT2jNJpxYmi/INtpjMXgAVGkT/GPa\r\nsnWEAEK6jtZc4tUhFkCdVIIIj9XfLFnkZofgcwMb/oubC3+XUpyTDGVPxPbf\r\nSCfEOXdndMR2h3mrDnIMA3QpHG8h0NA1fK4=\r\n=AV6F\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.5_1656917849391_0.7762585192835398"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install 2.0.11 for official v14 support!"},"2.0.6":{"name":"discord-portable-player","version":"2.0.6","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.0.0","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.0-dev.1656158629-c4653f9","eslint":"^8.18.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n# Page 1\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg](https://npmjs.com/package/ffmpeg)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n    // /play track: Marshmello - Together\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue({\n            metadata: interaction.channel,\n\t    guild: interaction.guild\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n        queue.play(track);\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.send(`🎶 | Now playing **${track.title}**!`))\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"7270f0c34a5bb4874a9b367900c6bd680ed0b0cc","_id":"discord-portable-player@2.0.6","_nodeVersion":"18.4.0","_npmVersion":"8.12.1","dist":{"integrity":"sha512-MHuoeXz+jlChxSNCHg550aXi2hXdLBxusCUebh5loOgVTb7O1C1Cxh4pkswiR07Dg/ilI8n0HPEmQiaWhjniJA==","shasum":"093122387adefc6d97145914ffaf015ba358f82a","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.6.tgz","fileCount":21,"unpackedSize":171807,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBDzSBrinRIUrXcyb36pGkSQ27Uu7/C3csxeVacubKmAIhAILfbxo64JxTPni6RhyqSU3mEC01Jiqp/kgwe8pWkcFk"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixCO/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqJHxAAhuZJvXU0KuHSrS8luIuoi289ZFZeliSKtakem5J7Ep89Ue86\r\nekwXRJ2KO1iLskR9O32XT63O4eGOrP0Oj9pWEWtdqZ9vmapKIvKEGHAHEEQR\r\nBUWgXCvZR/0b+bavg5IzIoj/WQi2qh+dNhhDmT69TvnFh4TEJYmRzxToxLeM\r\n0VNeGFOQOxigQ79Jq9ZP5xfERlNXth0P1H8bnwqPHw6Jysm6hon59+ld5adL\r\nTOeNsYpKL4fqCFWmbAaC4zc0RJQBIVn8xF0wikxnz2FYbqL6oUnJ1I3QfD6j\r\nZNVNI6JymHKBLtEgq71L7y3gA1DO9h9CALQDcoPdQ0lGMwGR6XZldwbjSW/k\r\nqDMzcREwafsk0MSglkdO5GgJ+Kf0Rxpeh6vfHMSk9smd7mg4iRbo/Cbp0eu1\r\neiYt8ip4apjM/JHptXCZgiE3RRaxnmUwgjVD5GgNfbA0DXObH7uWbWOvnV+m\r\nUoCVMTbDxZQXd6HOUo/PpaL6vpoxVY7M8MOIrNVJH+cnTHIGzj8/9zK2QiA2\r\nsQ4S/bCcZHmZbhH3dnRQQ5ar9/j6ik8HADKg8LUJwLq374LGoVliblMn4YJv\r\nyGtrKnLeFia2maWARD4HS6nqLhG8bv/8vRBVy9nFSdfeNVLCk78SK6k5aCK8\r\nWyoFHdjcv01zBIjtDg6+nBsLJfejvh3B3VU=\r\n=KKZA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.6_1657021375563_0.00023166411513875218"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install 2.0.11 for official v14 support!"},"2.0.7":{"name":"discord-portable-player","version":"2.0.7","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.0.3","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.0-dev.1656158629-c4653f9","eslint":"^8.18.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n# Page 1\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg](https://npmjs.com/package/ffmpeg)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n    // /play track: Marshmello - Together\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue({\n            metadata: interaction.channel,\n\t    guild: interaction.guild\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n        queue.play(track);\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.send(`🎶 | Now playing **${track.title}**!`))\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"80aecdd6bc986d8f75b90a639c290f3c7167e51f","_id":"discord-portable-player@2.0.7","_nodeVersion":"18.4.0","_npmVersion":"8.12.1","dist":{"integrity":"sha512-IPCl5fg8A0psJEZ2nHk4OpCdhLYLt/o/H4EUKrF/X2TYojzLGRun5EujuzcGWvowVTKb/RMW6NvyHWaUUjfcWw==","shasum":"81344d85c40e445311eaf160788b6695c24f10d7","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.7.tgz","fileCount":21,"unpackedSize":171807,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDkca1DiWy4f1UaU/iCmiiZHFMC5Va8aD2nSyVewIJxXAIhAOp3r7bf5qUt9cKidcPdPMgqkTHYn2zHgxs25WKse4os"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixa3QACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrk0A/8Dgxmssscp9B4Qm4EyHF7squvXKxziKc/HovcIxygeHB+nql0\r\nDURSgFu0/tIZmEJFfk90LKvLfSXtwndv65XeewHHLGQ5Bhg9S8Z6uCjOyykY\r\nDUvfY3icgGi0M/u9m6gV3tEwY39jDDE07K4H5hvXfyoVTOSbU4Fh9bcsKz7N\r\nNA65hBNNt5NCacZM43vTWO2+qWlDz6QAWic6JgC+h7eNgpcAkG2FWvjtNcIT\r\ntqqJPBflwMQCrUNRUWBW5+xJ1ZnMk+7IHZkgvJW8vNJiiEzGilw9uxY6LY/e\r\nL5nn1O1vLVxch3BRX237t6tSQvV+FWhYeZCK6fUxilQ9PeoP/HIiD3MsFtnb\r\n0/kr+l4WCfDMSygw7AACAqoShNjmzmcT1PQ8RcwQ/q2/Wcc0V6/0NfK/E1dj\r\nbdlKlCWE7lao6jaqLxdSHj1VpJw9iYrR29CrGy/AOcN5N/MqefOt4lLIBqwl\r\n02CepuF/nQoWnsYYSBTT81zUtvnigTozmf37u7veh8cj0/yeU2rAhrb78hae\r\nnb2hQPIYtYPg44AgJbuhRU8U1RPV/Ht8F4y7wGrfKknEBvzRUaU+yCRva2KU\r\neT533bapIhAdzrvm2SFyNiYfzWUJOmaTz4YhiFXQPdiDVrzMcGI1Qc0F3OPM\r\ntc6VZ2QiqzEoxkw6sm974prtShrau7XPVKg=\r\n=LxwA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.7_1657122256385_0.4765469324023759"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install 2.0.11 for official v14 support!"},"2.0.8":{"name":"discord-portable-player","version":"2.0.8","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.0.3","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.0-dev.1656158629-c4653f9","eslint":"^8.18.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n# Page 1\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg](https://npmjs.com/package/ffmpeg)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n    // /play track: Marshmello - Together\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue({\n            metadata: interaction.channel,\n\t    guild: interaction.guild\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n        queue.play(track);\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.send(`🎶 | Now playing **${track.title}**!`))\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"a9dd4224bc7a23263667f3816c4e308a289597fb","_id":"discord-portable-player@2.0.8","_nodeVersion":"18.4.0","_npmVersion":"8.12.1","dist":{"integrity":"sha512-gWMsMQbjev+z1C+Wnttx8uoSOD1tUSrCHBJ1FHcilZp4OYkQzKBNOeaAtCHmDoH2d2ojuQPY4nGhT6RCd9Jn1A==","shasum":"7c6b2ddad4eeaee5e7ea6c532334318dd5222e8e","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.8.tgz","fileCount":21,"unpackedSize":171807,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAT5/KECIikkvJ0bpGibb5mB4C4u8rSyRZRhRPivGYggAiEAmHAO0dIBEKaCfK4nvCUwp7RA/bgRS3nf3o/uSYxyH94="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixv/CACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo+2xAAjGfitwBNorQSj3wOzUe4c0gvndnqQivLYh8sJBt1yc6voElb\r\nAnsFByvNZPD7xgyjuuaLQZqM/NuF55BO8D6G9xZ+PsuekQKyhN9KekS5fMsc\r\nRbnGfZhPAH36F3RVB8FRaLLfJjZUPhPEjsjYwDnpM8zi5VvVq/IwK1FPiEfa\r\nkMAoTXuRV+CSYKniT2hGupAbHjLDefFwzbwCYXED7TDg3Hq2pAnmoF8SFNa/\r\nEUB7B47daZihki3RVLKJUddLno85vwNkbmR/Z7dNHeQR+TQuZEhCwZkhZqBk\r\nUR5AfKGo8yhTCj5niiN4+QHJdC8hd0n5hGFIciMf3XL9aVu/RW2rTJKp8X71\r\nP8h+iGig8vD7ZSR0i/u/DA//Z/kzBoQHmA0SGK/Z4v1crSgAckB0+8D3Op5v\r\njEKZ1NOgZPC1cZqnBERUEqdiF/cYdOALA5uEe3f0Q3Ih3RJ8PW9m1ZtATZEf\r\nL5R+yaDGsbD8VWhHrMyx0nE/u7w/M0HvCvLPEn50IN6lE9LDeQDFRy9zfrqg\r\nVY1Hl/rd1PTmVAz+eyGGeQxMaVRsQeNDNEf7qmDZ8V50hXcUNLBs4XcO6Z1b\r\nKQPKSkFmkcOjrodXmWMXz0jeLYpYLiO7JxaJuRyWyBkHrl2ChO0TP0nlq5+6\r\n2DPI8obemFNByhBKDzcHeIjMukuoO0PlHfs=\r\n=PvCQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.8_1657208770329_0.32619911322324957"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install 2.0.11 for official v14 support!"},"2.0.9":{"name":"discord-portable-player","version":"2.0.9","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.0.3","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.0-dev.1656158629-c4653f9","eslint":"^8.18.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n# Page 1\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg](https://npmjs.com/package/ffmpeg)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n    // /play track: Marshmello - Together\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue({\n            metadata: interaction.channel,\n\t    guild: interaction.guild\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n        queue.play(track);\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.send(`🎶 | Now playing **${track.title}**!`))\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"bc2a9df28f7a2d7e49949dbfe630af99acda4d61","_id":"discord-portable-player@2.0.9","_nodeVersion":"18.5.0","_npmVersion":"8.12.1","dist":{"integrity":"sha512-PxwtkyWuxP5+xn4G1U6T4ihXTjEUPMWibVl6MPTfBYmKWrq18BO5aoVomwbI1oF8kaWX+vwyNwA6VUIam/GX0w==","shasum":"7d16061a6f8f4b5f6b5d78f6181cb0b387600e83","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.9.tgz","fileCount":21,"unpackedSize":171807,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmzcfJmeu3wmpSLzjVL3lyLYEmcbmeqBfRajwDedpZfwIhALKEb+PHeWNZUJlK9EVRvxWjtv/x9StnQFHMf2Nd3y2E"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiyIZ8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpouQ//c2iZgEj/kWqKuPm6joRh9idQuoUvjh3h+cYnsXT/Jx9KUFz2\r\nMsxGxZ0MfdF1CVf1Ff9V47Kzmmfaw45+FEZ9Av5i7uhaK/Lxz/W5lXqVroN4\r\nVFD3+MkVbSYa+iRaqqBFWj14LD/GTqOPHgIFmptNidWpalmfSylz2/n9FmRk\r\neWstb7uIqCmA31XeSJu+QIIVsuylLGYwxOLXi/qvI+JONaBQZ33b2Pc+4p+q\r\nTxbGrYJ5FiWG31HoV4kI+LxofUIvonYWFEUTbkOBEbH+F/nxps5S+hlnZfxV\r\nYHdRWVs9SshuBrM/1LJ0wzx4ieiXXlEe1uvqoEA7KLVtQLeytRrXyajeDkhF\r\n/O1X1HuGUOm+HFGUpRw1AELLAXmocjHtG4Ff5lwLRB6h84+QlOU2Fa4RPvob\r\nzyuLgaRSznAyBT7qkqXJbCYEXQv2YogvWHD3Izaq8Il4FTFMCXYcng7m/xbM\r\nlsfNrYi2oY69bC/3Q+g3+Vu1FwwVou1iZ/BJPIRflYCrZypDQlsiWxKOqf6/\r\nq6q1i0xG0OzxQkWnwlNegadtU8OfVh5wWzGuPM7hCide2cWAlOaIqTFPbUPV\r\nwnkJkqTRei+zcAV58mIYBkPSl8thRVSxeOPVXS9oipc15hMqPEXg6aB+Ft9F\r\nGAUCtV9XfNWmX/ES3zN21JKXEdtitU41w6Q=\r\n=SFbo\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.9_1657308796002_0.6907444413979154"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install 2.0.11 for official v14 support!"},"2.0.10":{"name":"discord-portable-player","version":"2.0.10","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.0.3","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.0-dev.1656158629-c4653f9","eslint":"^8.18.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n# Page 1\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![CodeFactor](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/badge/)](https://www.codefactor.io/repository/github/lolollllo/discord-portable-player/overview/)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg](https://npmjs.com/package/ffmpeg)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { REST } = require(\"@discordjs/rest\");\nconst { Routes, SlashCommandBuilder } = require(\"discord.js\");\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: \"10\" }).setToken(token);\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n    console.log(\"Successfully reloaded application [/] commands.\");\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n    // /play track: Marshmello - Together\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue({\n            metadata: interaction.channel,\n\t    guild: interaction.guild\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n        queue.play(track);\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.send(`🎶 | Now playing **${track.title}**!`))\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md","gitHead":"9328f5401f5263fc09ae53b66bba1bc136155268","_id":"discord-portable-player@2.0.10","_nodeVersion":"18.6.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-QvdtfmvtiuzntSf3RyZeiL/s74v72ulxL5bS5YrR+ftVIdfXbLKNJv18QAww9CdUu8Ig9WIk2OXWSSqRt+9OkA==","shasum":"1c0f1f33d9b50ba2047c4e99eec2883c968c36dd","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.10.tgz","fileCount":21,"unpackedSize":171808,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmw76PIN4Ih+PMD1kVbTWtnSMk446Aqb+JaINUmz6ZIwIgbUMFaL8ceonULs37RvdNI50p4Dxn/DyQLQaauK9YOj4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi0pUsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrMVw//fnkhW8lyr+gdNG/R0H2/VQc3uuSS7/u4GL0zj9LPrAHUVy6d\r\nwSwdHWkl58McHDjcrNEyKaT/BFAZ1+a24Q0HGNrcvEb8Jip8tK4e7vVv0LUJ\r\n5rCCNtpsuSc2iBZq+Lg6fwyWa8xX20CZK+LBjDfhUePtertaO0DGYcTD3N/N\r\nFOe7RkVS6/uko9g6jyPLZqgCsHS0702+9BbXadMhMGmEaxTRWemJFis/DseJ\r\nUCImmBde95FDBqsNd6AzodO0pK/ErZFuLvi5TBHwpGuEJKnKhjqT4/m06c6J\r\naw2mLzfZ1h2lCvyj3akuYQhykWyypMbDMhKDW5wUmAdm69Mi8ObycY6wnaBu\r\n60ng6DdMPwa4tNHuXCxCH/0jQQgqCg/5q3RGvkvKDcjbzsCSnQZXLCRqTshF\r\nJbqw6EgENHd+YC4TIEO1OcY0q6DhMlqTDiCK8ALrA53C7R9E9h8kn7/4IoZs\r\nUlFrhfNNwyGH9/6kScm2u9ifbQqgxzZ1xBLwJoZGGvGrgK0KioURLXMpujAD\r\nrSwrqBj7RisNxQp7G8tHAJSmNGizzGHjA9NxWr8td80o+RO62mjWt+ME0tv+\r\njyxDmq9O6N42+hwp1fgboAon8wU2WkNW59GPgv6fi5K7NUkfdNnLXgFhne1S\r\nYnyQEiYrTJrVtkecHa/YMOGUEFihIc50MCg=\r\n=BUwh\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.10_1657967916133_0.3473495569960232"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"1.5.1":{"name":"discord-portable-player","version":"1.5.1","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"Neks4922"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://discord-portable-player.js.org/","dependencies":{"@discordjs/voice":"^0.10.0","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.2","spotify-url-info":"^2.2.7","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.15","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.6","@types/node":"^16.11.10","@types/ws":"^8.2.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","discord-api-types":"^0.36.2","discord.js":"^13.9.0","eslint":"^8.3.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"gitHead":"8fe73088babdca59d26bb2b12602a2c0dac8f50e","_id":"discord-portable-player@1.5.1","_nodeVersion":"18.6.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-e4RPwMaQKzUMno+GUQUZq2PFFM00vTXhpabVuwwgL3u6ipR7marpZBR7EqaxErozQXiaLb/3c/Z40tVWdrghOw==","shasum":"b7a3760cd7521d7e2a1808ea3e8210c10364fa0e","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-1.5.1.tgz","fileCount":20,"unpackedSize":159285,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFo5Kq4PWi/OKDA6Fh5i7rrCUgnVqwMnD4hotiwsqhipAiEAy0qrhyRm/GhExUXZcw3jZvwduM67Z8VykuS4svM1VZc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1FRYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqJ5w/9Hk3Z9As1b5HoF56nUm/wasGGJF1l+PY5xj8B6qXfvt5KH2UW\r\nLqMter6cOyYKF8YbpUkYvl0sNPU0dY9LqPSZgLwyOrujDhVBE2QbUwxjAvU5\r\njwDMiSyMvfhinrOPYrsqiQpw+mU5K9qy1beaL7GETexLZ9FSdOC3qPC0I4cn\r\np+F3IAqpEJMcoSaPV3RHo0pziDuVqJsBdagMSRfMZaOo9h9RIhviF57NzPc+\r\nmmx9nhzvQkEFEXe05mZJU5EXTxcxvXrrvE1GMbWbouUvA1cStEPHqtrxnT97\r\nnQOzhbtUsn1zxe04mgv1WyX2z/TftFez17RxNyOWjBWYUboZxvxVKMTeoyb7\r\nwMIiH7zoPeXDVVCewSBPw1pZ7l96gxY8BZCyjF6azpEetBW8LLXBz+8a0l/e\r\nbD2fulIjsOiJ54YU14u+AYkUoScb6cImBDYCAv1BRSIfh89BT8zh9G+nWFX2\r\nz8dXzZ7EtNmOjMnbh3DonrZlyiDYDfyLPxAKEYKJ8mCNm3xyy2rSaPfRM+GV\r\ni0Gpdi4cvqk2nJOepgLG1cljSPtApFM1FJv4lKRKscL5UnV1FhCS2M12MX8k\r\n6I5lXA9XeR3P73NUtStsOhQogKBetQY0d1qIb8cg7ApV7Rr6tLnhkxulIdbp\r\nodj1TWGoqZnADiRKPkTnj/Il/D5+Zi/IKe8=\r\n=eK5s\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_1.5.1_1658082391980_0.2030708881894876"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.0.11":{"name":"discord-portable-player","version":"2.0.11","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.0.3","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.1","eslint":"^8.20.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"gitHead":"2cc264e1f369fa7e4554642c3116ea87edc2470c","_id":"discord-portable-player@2.0.11","_nodeVersion":"18.6.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-xC1LFsNP+i2RpPPpLuJZ/5fJen+aGh7FR6pS/zOiLXNoponjc57jY7cfZQCGRNT5iAH5PyJt6ZF2zTkqv7mMPg==","shasum":"84ee8bd8ed46b3fbf345d2f7f62a3f6f394df01a","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.11.tgz","fileCount":21,"unpackedSize":171785,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG050d2l/3oTG8jBwJ68zVBKKfvbeRhI5+lg9L/1y830AiEA3nZDT/WFGi9A+CF1pP85SXmV5xgngoACbajXaI6z9LU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1SkvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqxCQ/+LZi4waA74ms5NYC7W7MG4xeS5DazDeCIIm/Hj2PDb/kVD6pr\r\nMqiCG72Ee6m/tLtUyAbItoC+dbGlgaRzzTApdk9xp52A/kopPXZK9aRQ2xhn\r\n3808vU7JZLA3ZIKJ4OT6HBtX0mWpX+j8cHXZa4A3iI1CxSgKu6O5wDTPoBb1\r\nCr3Mx/k7lJW3nZ/VeoaQUm8RJ42C5bpGC75qcXtrGOLZaWJDxcDbXFpjj/cm\r\nW9dTJba6diR0ps2eAiZmPl98tY+piB7Hb31qW4ZOutR2ffes5anv5NuRFoiV\r\nho1MZx6nbpwWocU1tz+SAj+NnNlIgbCFWSFZUk+9fM370E2GPZ5zSsVCYw10\r\nXTPZeuifEPZYu/lF2j5lgPf2ZCsIt2ZiiWAEFIkSNWNmrLG84Jz6woHYfmHw\r\n5rJiBlq4SA62jB6pDbs8WQ2hzG8qAUKso39SCyOLYrqZHC/Y3VeRGImfHfaC\r\n1Zj7nOzCWEUANJEwWqHyC0Z1tXZAks+CHP0UKOwaUvj9AzpciZ1ZpDrRXOWy\r\nl2LuguJS6ZEjupsVa2Hbu9vbSOn+kR6x7+cb85hH9YvMhIo0ut6aVcdbOKEU\r\npSJ8/+H8kc7SWYE1CJ2fT3JaM4EN33+MhhqIxORsEDhIRc9EEWoaFxubfsXS\r\nRw+PKMqM7Yqrz4VFQbcV2YopyRqCeMQsXXw=\r\n=iajW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.11_1658136879004_0.11882816867184154"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.0.12":{"name":"discord-portable-player","version":"2.0.12","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.0.3","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.1","eslint":"^8.20.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"gitHead":"025e1919e7349fe9355a60cbbe7a5a67fda23928","_id":"discord-portable-player@2.0.12","_nodeVersion":"18.6.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-BprHy6mM/+7uNDpvb+PwzuVezRVQWWXyIy9vTdpTs/F4GTc+lCAMcqymaXLYfec6Ywisi+YrrRE2bXkLGB6Sng==","shasum":"a8c0b5fce99dcccf284828a50b69757939841ee0","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.12.tgz","fileCount":21,"unpackedSize":171785,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeEPeGoqwi7fv0iG6bWYCE3jpchdwU0hYXaqkzR12qGwIhAJyORAHerYK2PpQ3HM6hv+KZU3nAU7d6RpKJQuhJHPe2"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1Y+JACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoexw/+IY3lKnB/qOKx9SPKbdl0jaADuSQDZ73qlj/NQX4m0VmRUvPV\r\nQEmoQSNLFUtw/wdehWCyc8HuwyrpIEoJawI1sfB9TIUjwE5d8g5t7UVoMdDP\r\nk7knW5fDu8imJxFMWX2wCFbfGv39WgEFraAD/7YB07NCSQPxS1JMR8TU/JH7\r\nuHEPsosdficWWWEpkNaXAfg4f3L/OHNbX6N16U5MkxBExRakgPrPsFQlBDu3\r\ntSNWoe9arsBI/N2+s6Hw47E9HFxunRKbu6NLwKOg3d2akF1kCfJEQJewawBK\r\nR6ZzEK3DdV3k3Kz1rUuBS0ZVVFtsX7PS5rhY3+31gca3Jj2oxc9YbMe76Q6o\r\neaqfdDlWVJz8RCljEaMxTooJkbkQK1sPOqqYDlu3TDMDoNkhGKt8s3EqZWqm\r\nrZxnmX0dk3vw0H6cDt7Fw7bCe5rWkZp1uCnvbltM4ScInfLor4M6x0NDEfes\r\nXsyzPmb+F3px9FIuMp57m6gWjrJq6GjzPg4CjcE4ormjeY444YOz+xk1B+Uy\r\nW0eZEfMExMDVVmmfr3l1oitiQVEFBT4p9nGDo2dpXOdBiBpOL4Y1hiIY9DUP\r\nUV4Q2Vl+aHgwURp1GlXIzUbk6FvAfBNQpQOCA4pwAOuDI3dETXyerk1W0o3B\r\nXlYkC5Tel/WOWpmHRaJjnjEx+iGZIdgq76A=\r\n=RDkv\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.12_1658163081120_0.06516102741913143"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.0.13":{"name":"discord-portable-player","version":"2.0.13","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.10.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.1.17","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.16.0","@babel/core":"^7.16.0","@babel/preset-env":"^7.16.4","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.0.3","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.29.0","@typescript-eslint/parser":"^5.29.0","discord.js":"^14.0.3","eslint":"^8.20.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.4.0","typescript":"^4.5.2"},"gitHead":"3d74c56b1d74b8884d46c5b9388333c62af3c0b2","_id":"discord-portable-player@2.0.13","_nodeVersion":"18.6.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-RL/s1pdsMC8voRWvfoaN4DNjE96REJBSM6YEmROR6GyNf+IZjqj8OtqAxAB8O63JKPgz93Atvx6tnyRy3o7rHg==","shasum":"0b6b1d468b09f56d602c6cc9cf49e2d2135d0ba4","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.0.13.tgz","fileCount":21,"unpackedSize":171785,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhIJPcGhDUH/mM8g/4eF6ZUnQoae0fqYkii/uaTVE6HgIgJFycZED1SsiBF8Y1c61YncQna3fLQVzfTfiLVFTmA/4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2yiqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq9IQ/+IG253NxZahY/T3+YpeWDDcy3ybZ76v/t9XLztyFINC6MRkjS\r\noMsVs/df5lL+Y8UcComBUdKaih4zAYIBvHW4FCrkC4QqxR8vfkO36rb4XP0y\r\nuO1sjhObDdr/W00WHa2aFwU25sfh+GgLBNjUDnEW96pWy/Bh2M/mSHVPe1F+\r\nY2C9mh9qzn53EFfUoVfDEtNqiRghUyHFZGNxV46vV5EK5CL60bhywhmWPeGI\r\nMoruASKVVc/a8wLYpJm0igBPqDcWuiZNVK8ftP4SEh/tkO+h5xqwcsdv3rfN\r\nqN6WXMCsdYbSxnx1WYWSvm2+BLHrjg95EQEuvV0ydrblOkBUxdBNZ7+ufN/j\r\nuzUuCcINn64Ce4xAqcBGex5Da/5NETZyghXp96MgiCnFNXkyr+++GDMqbNPg\r\n+mW/RZbq7lh1g52WPGAMMtaa3ft4IkWv3a3rTxiSsi/7OsSGMUnQUnCdGdkm\r\nK6g0GcfDADZ1uSBqkvUsPukt2QyCbVPvZ6glxgxboLr9BJAbA5uq9tBdWoHH\r\nV9ai1BbZBTUu0GQaICCz8UoIoKXqS4ck0cFDInwQhikd6lSCfQuXJqSLMee9\r\nb6QGtxwGmCkTP+g7Cv7yaqhkRECvFehe7DBckqA0nGpqEtoRJrOptXJyV1v3\r\n/EnSOvQN2jOYl4iN3pdWJBHWV+zx97RmixQ=\r\n=9ZiC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.0.13_1658529962079_0.8534156281800884"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"1.6.0":{"name":"discord-portable-player","version":"1.6.0","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"Neks4922"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://discord-portable-player.js.org/","dependencies":{"@discordjs/voice":"^0.10.0","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.2","spotify-url-info":"^2.2.7","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.2.0","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.9","@babel/core":"^7.18.9","@babel/preset-env":"^7.18.9","@babel/preset-typescript":"^7.18.6","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.6.1","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.31.0","@typescript-eslint/parser":"^5.31.0","discord-api-types":"^0.36.3","discord.js":"^13.9.1","eslint":"^8.20.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","typescript":"^4.7.4"},"gitHead":"7dd950d8b866cafe95c9a1c4ad95420068aba8a6","_id":"discord-portable-player@1.6.0","_nodeVersion":"18.7.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-ynxfIvWkQFuSSQj3AgsObG2WqUE2EexmMTrZEw72kfeiCkU9aurWcewfWdiJiZZwLyxl+TFN+cHrcvSa1n54gw==","shasum":"9f02619d7312c9c15f2607e2d60a5dbdadc8b7f4","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-1.6.0.tgz","fileCount":20,"unpackedSize":159304,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGSmDr0C0dC8ddwVf4wo+2wOa0kUOLhmp2vGQdOiYoELAiEAjrUMR1FyBsztBHz6DKZI3VS+OhH5sTflkgI4H1phd5Q="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4TfsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqVThAAiMU6/GiOflUB3b6rxNkns0piojyn8/MH9YHSg7ARC2iacdZh\r\nWB1h8lXyW0q269RkUAilblc1jX+m1G4J68QZ7BkMn3IdXujZHGVYnYfH59bU\r\n07jpkQQH5WyQS9c4zs/H6lFZmYJ4p7lkKAHrXQA/XL8J9k9iyff2E6ALrdeG\r\n8VYsI+0dqzEZy7tJJxCNwrMaEd5YkqWbyfEMlL5H4cUqZWY2u1eLVGZD8qCc\r\nSWCZIdyb6mWS7tHQDCjg5fYpYwdwINeRqOaeohY3N2zjzO5nFkIGmQx4NKA+\r\neXxg0nWFZiSW+YxalkpeJ3lZMnt73qUSMyerqqalCANHdsiQB8EZ9mDbHwaz\r\ng74bryN5b5kc45Egb1wkDEuIchndESyQxg2cGXtPvoiy4orTGbzcN+Ahmzp1\r\nP/K1m3pj3yH7+RBskqbdWkVMYGmsVdgr4F86F2wkbslaW/cIrBztV19YVIGG\r\nqgw5Gi93nIfLcwGOv03E7iNCvtq8r8r/JUGWDwQHKyCZm0sjmhxhIRSCxMkG\r\n+vLZAJM/QmUjHwSUKxremuOvcj09GHrl3MypHB2ILniW75UadsEHO2zFcpvv\r\nFSV6t/QXixv6rpZQNoonQEdBDbolioDcxg8HGuCmTql/IZ791K43t2Ms14aO\r\nsVq6uW9+9DJD9QiMJkCJ3af/ew76cYb4FhA=\r\n=MZwO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_1.6.0_1658927083847_0.8318536141405415"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"1.6.1":{"name":"discord-portable-player","version":"1.6.1","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"Neks4922"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://discord-portable-player.js.org/","dependencies":{"@discordjs/voice":"^0.10.0","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.2","spotify-url-info":"^2.2.7","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.2.0","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.9","@babel/core":"^7.18.9","@babel/preset-env":"^7.18.9","@babel/preset-typescript":"^7.18.6","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.6.1","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.31.0","@typescript-eslint/parser":"^5.31.0","discord-api-types":"^0.36.3","discord.js":"^13.9.1","eslint":"^8.20.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","typescript":"^4.7.4"},"gitHead":"be57f4dc47a4043a964c5a8d4379aae70f2e5d97","_id":"discord-portable-player@1.6.1","_nodeVersion":"18.7.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-pACuqUeE1iIjf5u2qYv8JNMlS9DljkaJjjo018BAAX7jMsDVvEn+V7P5dxCg9A9CTqYL/dh3aIVQt9SePlLMjw==","shasum":"63aec3eab89ad08832fd702ceea1036a221a13db","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-1.6.1.tgz","fileCount":20,"unpackedSize":159828,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/yRu9JpECsoNiEE2Y+rh7Rf68EMz/MomIld83h7L+1AIhAIy4I2+j/D6HZ9BBV2T5pcVXW21fl6tvLlQRVER+3d30"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4cYqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoOBw/+NzQZzyJGNNTP6ySpljyH0WSdRBtRf9nB0NqskmPeKVR5OQKe\r\n24/kQvZUUUH+jjDkuNXzc2UVpGt9KHa4dqLi1niYWKHBj/nGVJeYs43KR6g+\r\nva8UW/RMhlHixLGFg06xQ1GWHkUFd9AzlQG77Ap7QGXL+q44qWXOsnC8sHSV\r\nyGJaR9LtsO3aGBZxYMAmNXstfV5GnYopsnd71NrmjzF3wld6w++VAv2pphOE\r\nRMqhLXNs/vFH1/bDbacyYO71MeV/CDIgXpLM9J3BalxiZXKG7jYvmMaWWC4X\r\nnhfAGqZP9+iFaW3OFTgt4bDVXQCwZPsZyzdYA/6/suQjCJPwHGXD4MEOy9XY\r\nMMEi86pv7EF54Cg24FfMTsRJbYtBUH3bFjTx7Yu8GvvW+bgUaYmgmfRD15sZ\r\neFe9EHJsR/1ohFkHL60Ec69yWmIZ1goZNmEl75a1Wrf4I6n2lw2T3bkSmNt6\r\nGX0ps7Pt8WXJGs3OYYNZMSxkGi1dmnzPp7z0XCndzrf+MtxX9Le/keOjn0Cc\r\n45ehXcLGjn/6NorXDrOgSFQ1U4siF7xx/jCQ3nYe4T2bW90oVcTTwRJPj+od\r\n2d9SLZZ7d5m/dQP+oxz4C6NDeAPEf8nWHk1NC93AJ7U4kqnHPCBiqySS3OaN\r\ntC9c5D8PwyPY6YDu9Lh/GQrlcafiKLf83q4=\r\n=5/wU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_1.6.1_1658963498457_0.8085557513437374"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.1.0":{"name":"discord-portable-player","version":"2.1.0","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.11.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.2.0","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.9","@babel/core":"^7.18.9","@babel/preset-env":"^7.18.9","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.6.1","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.31.0","@typescript-eslint/parser":"^5.31.0","discord.js":"^14.0.3","eslint":"^8.20.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","typescript":"^4.7.4"},"gitHead":"229000877ea40fbd92b6a8b652df67d7492fbe77","_id":"discord-portable-player@2.1.0","_nodeVersion":"18.7.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-tQS4QVGkvoXce9k/NrXTTWj7l+N+QgM+oD/Phhw3klHOVCftsviSDCHcM1aYzdcgAQdf/80KEAG2/OOYkBLEog==","shasum":"1382457a9ff00b2fdaac8ebeecde7c422af592b3","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.1.0.tgz","fileCount":21,"unpackedSize":162322,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEbB5+NHJmSTfh3upI4pr+iPCR22PqZY4nzCpLBQJYI9AiBvW5hRHY1aU66rJqW/kqorvEd+jT3uvulwkydg2fHiDQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi46ElACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo5jg//bRwb4d4LbJ2vvFaXsnxQOdyydhZsVNumPa4AfelVXYR5EN/t\r\nnurYJGuJHCUS/7Zb7cRiWgwgQW9yvy5RLcG9CH7PcZYuoUusl+IViw07HR+r\r\netT7Qx8d449/5JwYsJUDAOYA1JQkdO4e1niJzo7CK/s2BPWyeP3q9eJhJ3+a\r\nh2UVnvj0QIwQk8qsdtC4h+Rxe1Osc74XS+tcQcoogu3T7MIFgEkWaJlNU+CK\r\nizRZP3c5MTWoBGaZZlZ2se6A2oHVxap9COIwHJuV+EPGe/vMX52qLuNpJkkD\r\n1Kkn7PB61W8x1begoX2+HkcbO3E6URO5KL2dBSCINvf9Dc4O5KyaSdpZ7CUB\r\nsQoumo0alJdAoWNNNojo3RrTpIcx3QT9Fh2sMBpkX7XXlNl5sTzfg5GmOm6L\r\nl7nd1kLzTXa6X8e0sJYeVJgt/er8Wkov30nfHbMwMCTWZzAURqsITXA+Zzzy\r\nRkFm7sFgUTh8/ISFYCeaYi3E9ZiDRcd0BC/qq5WybXRz6vwqETED0BReHH/0\r\nctlEcsKOHjRm4SH3Tmls+tAtPgXB2CHxuwtIrAwmvAvqCQNW3Cd5/W3Tq4iB\r\nyweaBuwL8yVO4zrm1//vv60kc9uzH2cRKz2ciP2lP+OBzYOs+ZaB50/YJBb6\r\nHllsEqlgLK17TSuT7UL7qLKeZrNAOvl1sls=\r\n=iYjS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.1.0_1659085093480_0.5910575016987905"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.1.1":{"name":"discord-portable-player","version":"2.1.1","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.11.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.2.0","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.9","@babel/core":"^7.18.9","@babel/preset-env":"^7.18.9","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.6.1","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.31.0","@typescript-eslint/parser":"^5.31.0","discord.js":"^14.0.3","eslint":"^8.20.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","typescript":"^4.7.4"},"gitHead":"beb768fa36bf9206a2ccb8b68dd5a23aca86a54c","_id":"discord-portable-player@2.1.1","_nodeVersion":"18.7.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-XUDH0O4nE/IjrtHpqOK1/RLTEkP05ytn7ll0Qip/3x0ZL3kA4zFrSOt8d9t/Nrg9XfGbp3GD9xQ75POoz1ytAQ==","shasum":"594d5766d5ee68890663f205f52a3d31e47f81f4","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.1.1.tgz","fileCount":21,"unpackedSize":162980,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG699Llpmua98W3k5Phl7W5SMD72trQb9JPw5DscjIOCAiEAs9EqaRsIBRiSM3rPSBTi68CthD8HXxKz0oEjn4qJBf4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi46i/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo2Hg//SwAbB10vgBu9qgFgpwDySBF6AX7mOp8kqO8eCkX1iwQsidkc\r\ndRd8Ml4xswM9z6ccinzoASigN3DL8iVQlcofZnuJgGVhgLy8LsKXHsh8LLHj\r\nOwyIqC2TlqHwnQNALjerpGUOJEtyLwouX/zemVLaTppAa9u6EGwgHyWdeXOW\r\ncnWLTf+U+A5MEmnb+RdDnMrViyHBiHYoX0cAvvyMwCncJXpel7On27x7UOup\r\nRjF3oYd3y+FvS/NvK4Fzkfw5TNvRj/ST9KAL/V6UNphAsAmkIV1PXVA1CGVK\r\nk2udi3Qcdhl9np8ReBB09nhTcTlKfmYg/w+q7LpZIIzQtfy0jmXdNAV8AzHH\r\nixPtnXHO1Q32/UGhlnAQgi94S2nyhLWFIGx3qUqyseFG5fmyPxKHZrYN3lx4\r\nBnKTs0NjgvIBh4yd+uo2sTIjcB5YXkPXtrx9eZpgpy8ZWNLjURFZbfuRxnDb\r\nNWAyw6NxqfGIT70GFkrp/FpdejP10x7PSY/zIlmNJWZSw9chtjpuOoJHOzDi\r\nYWJb2PJ0l+YhElMIR6d6JEgnlcxZYagKiV2/V5X6ix9gAnLvu2ZZwyxPBfZH\r\ngkBfS7d+iwtKbvjI4QCcm4lBQhr+/7OnBLn1Bv1t7OZlIEJeB5DLrfM1hp4o\r\nkRsMgzoB/OHkaBHtx6r8Owqk/xU/TDogRk4=\r\n=ZILe\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.1.1_1659087039496_0.5006196904702775"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"1.6.2":{"name":"discord-portable-player","version":"1.6.2","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"Neks4922"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://discord-portable-player.js.org/","dependencies":{"@discordjs/voice":"^0.10.0","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.2","spotify-url-info":"^2.2.7","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.2.0","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.9","@babel/core":"^7.18.9","@babel/preset-env":"^7.18.9","@babel/preset-typescript":"^7.18.6","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.6.1","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.31.0","@typescript-eslint/parser":"^5.31.0","discord-api-types":"^0.36.3","discord.js":"13.9.2","eslint":"^8.20.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","typescript":"^4.7.4"},"gitHead":"887d96327867563a269fe00f56a7683c262fcc13","_id":"discord-portable-player@1.6.2","_nodeVersion":"18.7.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-H3zwKG92SmWZve6VSH2GCEpR1rjYUs8gjQrH1QmsHy1VRxW8VxvScRO9SFgskOJikHKwlx25syOex7uM+t24Gw==","shasum":"8c5cb88f50624a80cfddad4bc06c4c1796adb2e6","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-1.6.2.tgz","fileCount":20,"unpackedSize":159827,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTXHScm5kWN8XMMTFl1TCis9lr8sbZ1T4BAE0Bgn1IhAIhAJaYN0RnbDRcJgM3tO1SrJ5UQgoTqvMtNc0Q4g2JJrMQ"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi47XfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo5Sw//Y6t2cnyU+wMdfBNVEFg3TNFwz6fBx8SUaTUZidApfR6R8D1+\r\nHDRWLuNwUwx0bpfAQUlu23shRfGJZLSQFdBlaXc5AhepVW0ZofBwTemvqHMb\r\nmkZt4c8vCVKEi8ZY55hUrRK9Dx4UbM3BtwT42W8xQNjV8ZP0cTlg3Wr+Rw87\r\n86roJ0dOrQ6M6ARFLvMONbTU3yRXswWROzoHl8GnmOGrItPvqoCpp9xc8N0T\r\n41v0RUh0b+KotOWM1kRcQohWUMCIvzld8CwpZUStZlQtrhFOFdpni3zBVCwB\r\nEebk/etEdJbZ60WIIew2IKqddMrUC13z6k0i805nwHeu2DGsny+qnFEHthPU\r\n1LaA/188hUu0qPT0o5dOgooO1aSxzi6vEMtRjFCqrL51n6vDmz6JHq5LoT6g\r\nt8jLVb2Li2G01IBtKz0T9LUtZM61dlI+IDaoYw87UjTNtdaA8NlEgjJMdenE\r\nzDjw5degyM4RflLe86KYOm2d88Hvg4kGzqY3v6iclwgbVb0rQTxnKIynFVQx\r\nqOQRvdqGWd+GknvowgiiZL5FQHk0HBNSD39aLaR1DHbEFssIJhWvGNiAinFI\r\nHeHN5BPRm/+o3ufGli5gbwhBm8L1QV5JkDCe9VhUwt+NntRdBTo+I9uwZZKe\r\naCSUi40dzmSNZsB8dfK4feTcDz3ljKsNOIg=\r\n=U42A\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_1.6.2_1659090399530_0.7425267177447159"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.1.2":{"name":"discord-portable-player","version":"2.1.2","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.11.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.2.0","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.9","@babel/core":"^7.18.9","@babel/preset-env":"^7.18.9","@babel/preset-typescript":"^7.16.0","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.6.1","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.31.0","@typescript-eslint/parser":"^5.31.0","discord.js":"^14.1.0","eslint":"^8.20.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","typescript":"^4.7.4"},"gitHead":"1408317de013c925e90318340a00a2290b53bf9e","_id":"discord-portable-player@2.1.2","_nodeVersion":"18.7.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-NKiKK+g70Ep77Idx3eqZ8jwP6UEZC5ZB/mtdrVprpg2izv+dTYY1fyDwiyn/d91rPS3JbVwQ0SuX4lARRab6Sg==","shasum":"e85a6e819f499b9ae729e7c8ecb8ebae45cb63c0","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.1.2.tgz","fileCount":21,"unpackedSize":162971,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTOslHG6g9+s58E8t2qg/g8PCRvTZwuMoaNp3JL2XAZAIgENbKqugTNUHNo9ycXDeR6shTuQO+x8ITEEyChRknkVc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi47YnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp91g//XeofTXqr9NS7N96hWuI5nughltbvUQb3Z3qXee+zi9oF04hx\r\n26RNfByGV4TlzTWWLHAYFeEJPKZvxEfX4TihlMdCI58xNnifqexq7hG4XLZ6\r\nCI5WALLajoi+UtkTrwNuI8ysI44w0rPIecXZaDFg7wM8Ux+MFdNwIFTxvKu5\r\n12/vGdElMytWAJLFW5s0Ka1BlMmEdyYGdTEr+deC1BfDySQuzGPtCnHaermx\r\nQIzkDWzuJThu2Ue1HwpzyyxVjWloSJHcM2C+pnNBG+0TVfz1d9Lj3ZXOPI0Z\r\nvsorag9k1KppUPcI5//qi1YvUXK8AWfXcrUYMVrPS9mKvbQ8nbNZHfw8TeJy\r\nYtpbIiU8bu79ZqI8q2jzbjRLb++1qWDIiIyFtZkwyvd60baswQfnIyJ/IhME\r\np08iDfn9iapsTixNzj3CVEJVai7kUMkoaQI4PHC+Gf555yWELDjMMSmZ5zpj\r\nI4JfWW7VQEv7GFnM5gUA3ZaKy5OmeTsX4zgbD96iB+DGTYnXZGf6mY/MPAs/\r\nzMocdUT8nRnTGNo/e6HTgkoUaTUu4gEwaHFKt6v/d4OAqPSQ8V1wB8U6L33U\r\nGn6gt/fV1qGmGx/kD8xpvIB+e/EpccMvmxnf1kRpawAb9txpIbnU7EncbZKo\r\nmrz3xd/e1WURFmZt2lmYXnxqSN7oGBJA9tQ=\r\n=I0Wt\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.1.2_1659090470831_0.2760923313608943"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.1.3":{"name":"discord-portable-player","version":"2.1.3","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.11.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.2.0","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.9","@babel/core":"^7.18.9","@babel/preset-env":"^7.18.9","@babel/preset-typescript":"^7.18.6","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.6.2","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.31.0","@typescript-eslint/parser":"^5.31.0","discord.js":"^14.1.1","eslint":"^8.20.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","tslib":"^2.4.0","typescript":"^4.7.4"},"gitHead":"ef3026f7228f68a767d7b37abd65d98ddf905363","_id":"discord-portable-player@2.1.3","_nodeVersion":"18.7.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-9VVqaEFp5VVWcyXhue2N8I+jWRfVaspbmmkoWDUO1eaKn9hPWNVTHz6VWux0Orphz6XJ0Iu/xnANsFWm5GVRSA==","shasum":"e78dcaf264d8f5063525331c20696103c95c64ff","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.1.3.tgz","fileCount":21,"unpackedSize":162955,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyZ4zyOsp9+E/6KkL1m2rDWSy7IIxOLjawTChtKWJYTwIgSaKIcq1VCl8yKkofGn4dbmvIzLadQyfa6BF8xL8SEQU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4+BaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmraTBAAigRqt6YbBBqpvRTpBIB4MgnLAMOaJlLFwGBBEoODw5SEFYd/\r\n+BTwCMTRCO/3f0OAoXrWO7M263GgXJaWCNs5VC9JRYB4+wuQwqvRnYYxPOOv\r\nm1UJMUR1zyNttQk13NMG3g1sG5u/vpBDUv4qNTG36HqH/s/cE81NmGjO6GfS\r\nzkvmwDx67x34Ta4lc2tNY8LnPWk3/xzIy+DcaSpY0OBLKOSjhHLqEfl0IvK2\r\n+zJvTY3vByRyBoZ2HKAZRe4ZWjoNGZGA2AyFJzmawhUCCpSTdDBRGDGcQrm8\r\nOJSgPgEK0nw2SXY5SJG3UkYEd1QFblkPuDebB9vx1HqAK/e47YZQS7nuLGMS\r\n9eb0CGy/vy2NtSjF5RIZQ4rFucQ+wum0v455CGXcGiOroOjXt2VqzaiQv6qW\r\nS4TKqCnhF5oWqPImR6yocMnDniPKtI5wafM3p5MniR+QWizDrLZitInMZUiW\r\nu7ko2XLNd5ruWb3Ab5NlQ+nzMztqCj23w5kLCbAIJ645idmNDL/yS6Pcnd6V\r\nncaPFan6C9yQBqoY3fo7sECWzePArstzPj6z6Wojync/ODA6bTi+JH8dSdTF\r\noESaG9iGzidmF6DJxgEvdgsQK9F32q+3HGTgevxW5ahfnTomrLg64iRx6NQ3\r\nkGfiK9PdbQYjFSSbMEK7OqXXex3cEVAFyMQ=\r\n=95Aq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.1.3_1659101274269_0.6171843161155832"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.1.4":{"name":"discord-portable-player","version":"2.1.4","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.11.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.2.0","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.9","@babel/core":"^7.18.9","@babel/preset-env":"^7.18.9","@babel/preset-typescript":"^7.18.6","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.6.2","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.31.0","@typescript-eslint/parser":"^5.31.0","discord.js":"^14.1.1","eslint":"^8.20.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","tslib":"^2.4.0","typescript":"^4.7.4"},"gitHead":"1612dbde036aac722d23a26ab3fedd1a278bd88d","_id":"discord-portable-player@2.1.4","_nodeVersion":"18.7.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-oNEopRFk1H3ySIpdWKt+KN13FANoMQ6KuotTCk1XLCXRFel7ghCnOf6ZCvAm1V4DG6UA8XABpd8s+xHtp6vfyQ==","shasum":"f7f001b582a9d48d4ad94158c376564350331335","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.1.4.tgz","fileCount":21,"unpackedSize":162955,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFqduNAb0vpH/6g0CvAsmQw/5Xa4F/N1yxYOMmE1eoAeAiEAnb73PyRrrEgo5UYzGqLb7Cz0K49ozM9uSzIiiCFwkrU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4+F5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoFMQ//eNpn3wxcB6A1XckVXAzXAE7rwEIhqrT/DtHhV+26+04kYcgf\r\nY3xDQzOndakpNTR1zgwa7dIyVi8RmorH1K3eMsJTMWttVG+PwPhwbJZrlrd5\r\nig+0jssJFaMAu/qr5esrtC9UUh2Yo6b/Bxkux031M09qfdAsahrXcdnfjjkV\r\njKhoIxcMIYV2OWusroiVNfI6pYdckwLw8kYd+Pk7AGZCqp84eY/1ru6FDmkT\r\n3L8UMReOpiUwRr/LuJe7xiHmbZ1IQDSArLB9dki9fmjU8Y9Bm6Q/jHQRQqC2\r\nVptAfTUOy6zRHIKymxDIuPIJbNtLamiNCT8C6x4ZFuwML+zHiqOfk+hsz5Ba\r\nI3lQO66FmSOGRKtTRLmTVpBMuFIMQGMpmPGfKDZe+Gm4CFrCMNtsAQ7WQsS4\r\nokAai7LyKT4EozlT93gFZAc02JkRtnqTXgT+hsZWLE2/zwdOtA6XspxGBFv5\r\nfBYp/H7mFQasVON/ThwID9tpTv0u2K1Fvu3W9I1jvnZEIGAehtfhw3jC0Zqx\r\nUxy3Tn+YLVY0a9TUkGI8+1W8Qd3uWfHSnA9cZ/3N7QoAEFQOW6bKmzwtQdbh\r\niB9E3OB/FwFajGeudIJMTizx9wBvmIM4E8JGRP5kGJYLQYdTdCExdci5++TB\r\ngqW0SLJ41jC3PUGiigjB7s0tk/8+i4roUgk=\r\n=9vef\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.1.4_1659101561460_0.7885557535600534"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.1.5":{"name":"discord-portable-player","version":"2.1.5","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.11.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.3.0","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.9","@babel/core":"^7.18.9","@babel/preset-env":"^7.18.9","@babel/preset-typescript":"^7.18.6","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.10","@types/node":"^18.6.3","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.31.0","@typescript-eslint/parser":"^5.31.0","discord.js":"^14.1.2","eslint":"^8.20.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","tslib":"^2.4.0","typescript":"^4.7.4"},"gitHead":"400065ad9916a651abd13c98c48aeb3099cd0c7f","_id":"discord-portable-player@2.1.5","_nodeVersion":"18.7.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-hH88WoXewGJYMpEMDEdRTHeMPt7HWOMJ7+gNvzhbiSI5u4y6AYUhps3pQKNGRfwiDR6HwYKRygy1yXHoB1BaZA==","shasum":"609a31155e543beb9d2d4396db831340b56383da","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.1.5.tgz","fileCount":21,"unpackedSize":162956,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEDpyl7jVUgMhTLMBclNRSA8AsjMdnt1CghqkVV0Eiw3AiBHLZlP33UysTDHnufzwnjHTzOpafSsFnNElOZHisPWqQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5goyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrYvA/8C1O5paND4K+nnKWOFB4erG+2MVpEri1tHq+JEr7Z9v1ehTij\r\niF9f/XmobVXFGdX4rpgr/GHSiJgPCd05Gq+XaVxGSfDgOZalX8BdXUIEC59x\r\n3nBo2hewz3O6ymQiElH0osq/shhB8Wep4e5S6v/iGnIEW25shScpLo9G5K1k\r\nikql9SYlU4equdj7elpgs80O2Xu1Dwa66AakxJQw+vzJ2OEzPltbofgazMLZ\r\nxkyuV3u4XIrmIoi8njmrt0L3643DRd9AZMyf7QRGydJ9GZ5wR23a78eSsKik\r\n/XvDbRSywkfNRTGwxfOR83IHuX9x/hadsWfR1QOwMVRDQC3cAadEmnbUmnS+\r\nlTebIXFlv1Tva3DyEIaj9c9kHW5Xlc+MUh4pTP2NrWeDqpBNE4SpCTlzaxdU\r\nn76lx710vent1o59m8ZXyHgz6iuw4qlwFd3clJHCyXv2gvPm91KTQM5aLr5z\r\nT3QXUU80m9unUPzN868opRIIXMBqqJWoH/AkY25M+5ZVMazmtKwCCmPHaNgE\r\n/dJSW3g3har8rOnfUrsN3BLabzKLi6/FuBHXB22OeD/fe6Vjtv67W0ig9lVf\r\nMt5KNXiqdTSj7vpFtM/T/1PxDhLNJDD1THkXossuad47m1WvaO5xhUlId/XW\r\nYZ2X4AsYKw0OKY20+QBNAHIlIFGFJZN4rSk=\r\n=ccS3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.1.5_1659243058173_0.15465079335706244"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"1.6.3":{"name":"discord-portable-player","version":"1.6.3","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"Neks4922"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://discord-portable-player.js.org/","dependencies":{"@discordjs/voice":"^0.10.0","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.2","spotify-url-info":"^2.2.7","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.2.0","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.9","@babel/core":"^7.18.9","@babel/preset-env":"^7.18.9","@babel/preset-typescript":"^7.18.6","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.6.1","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.31.0","@typescript-eslint/parser":"^5.31.0","discord-api-types":"^0.36.3","discord.js":"13.9.2","eslint":"^8.20.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","typescript":"^4.7.4"},"gitHead":"7fb1e489a1f460dc45bcea098207926c6e79ce93","_id":"discord-portable-player@1.6.3","_nodeVersion":"18.7.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-sRe1UT5p97fI6fV7+pXSucaCStWZC0ihSVOdF6RTNZUCfAE0BxkEfFFEETtzVX7fLpJ4yMdUaQccW3o7jTjnjw==","shasum":"206413950c3a43d4602875933eb147bdd1042090","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-1.6.3.tgz","fileCount":20,"unpackedSize":159856,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5VA1g6fyKwGbv5ZG4fqdp91bf1B48uutjf+HpO+52uAIgFPrrA+ezJODcCaUt3HXoaqMILq0QUvlMQl/9YtLY1Ik="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5gyaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqjjBAAk27CoijonzIukyXFs2N6fyw/DU7jP7oQRxxNcPz6ZJIulo2Y\r\nJtQO28buzj2n4kykAaRC1cjv0dg+QDuiYaH79wyYTVXVJf15YyEEI42wQw70\r\nCbNxCPW8cChU1eGzQ6arAJ9WN3C1xnKD3rfaWD7OTj+wjEbS/JmBzMXQgxDy\r\nx4ztMI2hMI6xsB5GLGy1PQrA26QCjWg6x+PbluOsoBcqmX1nShqa53lITStj\r\nCQoUNLu/oqDKulH2yV2Uwt1TEnExyElob34W9L5H0qPZEm6S7lXtl8F+qfcU\r\n8WDWjY1j4jk1sq3zQOVR+udJkuzwOYc2T+7klF2r4JlrvSJOriAaxANinwKb\r\nrz6icUnd8VyVEHlx+zXS9Q6MmCvZlijZDw+Tk4DLoIRHHFkjuXEUI2k7YbUn\r\nhmiNd3eaARAItDsjA5AbQRSLlMi/BS6Ky/U+egiD1fRBRDHzZVBStUXfMDVm\r\nmt/i1QXDtK9SMozX5MVxZCk4i8KelaNXtKJO1UT2Fi2aUgfMxAapjKTezp5T\r\n4/wSBysBqAU4RV3Mt+RwqBZ4r+tCRquenr0mM3mB+ky8NYedU/0k7Rfw25zT\r\nB2d5n8hXae9dKupuTfMcBXgIo8jxxHpUU8HsJzbaVgBBdukRZad5/2PsmIaN\r\nIr7PXSlwpky8LFR2uYHjGJE+3u8Q7vpEdGs=\r\n=3Erq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_1.6.3_1659243674073_0.6111080465155223"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.1.6":{"name":"discord-portable-player","version":"2.1.6","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.11.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.3.0","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.9","@babel/core":"^7.18.9","@babel/preset-env":"^7.18.9","@babel/preset-typescript":"^7.18.6","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.10","@types/node":"^18.6.3","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.31.0","@typescript-eslint/parser":"^5.31.0","discord.js":"^14.1.2","eslint":"^8.20.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","tslib":"^2.4.0","typescript":"^4.7.4"},"gitHead":"3659a78fc8f002e4508433267621f1cdada78854","_id":"discord-portable-player@2.1.6","_nodeVersion":"18.7.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-niv6qFDIzZQhfohmnY3f885QDsR2ePqIroUImd8oIGsfa3GYz1k06WWSJKXuEyZG/DD+i7EW4n5/qZZ4qz2FWg==","shasum":"2f19d707995432a06b742b60c1e32b9f19dfd9fc","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.1.6.tgz","fileCount":21,"unpackedSize":162985,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDN6WwqSGE9w3xL9BUeC3n7CvZZ4tthuemvBDddsBtPbgIhAM6Q/znNMHhkTk/RRODG2UXTG26lHce7X26Rr6NiBmCw"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5g3zACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrTfg/6AmVNBG2gx5RHxK4CePJkv+svHF9yh6o2AID0FtVveNx9tJWM\r\nlyni3d39ivnmkEA1udwS/l/NA1AYpbdXyE8/hqYQudxFr+XJ+gp3mscFXcM8\r\nLebFLA8jgmtjHDp6216Glsq2pG7KEmB+aqU8NGeHq5E4h/DK9JyPl/DyAHln\r\nxTnm9jEqyvr5Qx5500hqmZjXEkocs2KpJYEZoA3kb4RHGNdvz20bNXIpC5Wu\r\nB+pIcRUVkc7jfGe1t72cDMmwHFjdUvkKrQJOrHKQMwN+XT56I1zfMQNuyGPX\r\njQfJ2HF1a53sJ/tYPD1Km9q8UrTLdClcOhBnCmPhuczBzz8dcARiQm4rZSdN\r\nPxbpEDVJWh+bHCBB8rD73gRvJpeSRo6z2wmzZQ2hT1mpZ8pKAf/DmXg4VgUq\r\n86LfxkLAf17qKmrLmzGJNNp+3m27cc5hXNsOxsbGgv9df0FGIdAvjBWbl1FU\r\nPXAUOaxCZma0my6Ec4NsDPuLkekPkOPHdC1jhOfIHovYFeQOPA4p4Oa3X+0t\r\nbqp/kKqNXMwQ0xa4omoU2qskBwYBF1lpj8DaeAMQTW7+g+xRIQkOD4oVXb4o\r\nQswX1hFslDi2fQoSWu0Ltzrr9aJp6TZpkTMZnmY6XYKtcGumvckRRomCEk5t\r\nN1IPJKpIRUeJNib/Z5Kw0D1rXO192s0SGsA=\r\n=C8XY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.1.6_1659244018949_0.14205360169236791"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"1.6.4":{"name":"discord-portable-player","version":"1.6.4","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./src/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"Neks4922"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://discord-portable-player.js.org/","dependencies":{"@discordjs/voice":"^0.10.0","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.2","spotify-url-info":"^2.2.7","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.2.0","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.9","@babel/core":"^7.18.9","@babel/preset-env":"^7.18.9","@babel/preset-typescript":"^7.18.6","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.9","@types/node":"^18.6.1","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.31.0","@typescript-eslint/parser":"^5.31.0","discord-api-types":"^0.36.3","discord.js":"13.9.2","eslint":"^8.20.0","gen-esm-wrapper":"^1.1.3","husky":"^7.0.4","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","typescript":"^4.7.4"},"gitHead":"89b58af396b98f8fee89df816d19d3ee323c681f","_id":"discord-portable-player@1.6.4","_nodeVersion":"18.7.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-Tgyeyi0UPuHLjDUlOv3Ryc8OXyzer85sSE/a7F0zN7rWtAZlhCP2HbhSANGqWKpOiiR7MdWbF38ZoFoNtikSEg==","shasum":"65589464915564a34786391ce632d929431b1d22","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-1.6.4.tgz","fileCount":20,"unpackedSize":159900,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH5ipvPwT/+6pfMNnV9hu9ULE3b71CBg1VZZYJniu6+iAiEAgqerC4FQkWl3QDjUCAlEY0eoMd5zovlxZjrCMZag9PE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi558PACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrXHA/6Al2YF7/xx54j8LuhAQFTcKhpHp752m7umYzLbzjRmjqAIXw3\r\nVFzC3tzB3PMB0sq/kDYGWzxWpOGJcEdEx8e2vdVqDOIeNEiGKlpXsQX/3xGo\r\nnyCEJjIwbuKdYo1CAGubyNiuzqAN+PUWo4UU++o/W7x8yVzjcpdgAjGB/p/l\r\nvyIoq9jy25ujO155mwNSClDJWDQuOBwuz22gbtjGW55e2JPrk+i+SDcinRrJ\r\n0vD3Mwnpsytt7noDOVlgBEC4M+hOcC5GmXAu9dDh0DHiHbXI6+u1i0Wxn2HS\r\nrZs5IQ47w6hxEL6+KFBrpOKvjpwbzzk6olKVGVFV7jVEODF0u5mTDPElPuhh\r\nWZWUx7GiOG00xOr9ngCua4cOQY5D2E/Qt8mL9xibjAIbxAfGYfNOLN+wuTzL\r\nEPaxloilysmgR/QMXYgKyu+CZKLb6VNf4g89jqbX2XBI9Ni+bi0vyvqMIKvn\r\nqswgdxlephA4KiZtLelS+FtIwmUmM7Ljc5TnvPfXfElOWUMr9nB3Id5fLbym\r\nV/DN1y6Pq2qagHcc/O/vDGEqWstZnpv3d7HA9DvnEWG94JtGfIBy4Vifko4G\r\nBrh8gzfo3c6G1UT2REfkkjLiXl56JgZO5OA5AWAYrGHnGaXg8JQOLMy14vq4\r\n41l/LT9Zr1VSz9tYd13LrJQaUPI7ppYLNXc=\r\n=E7cU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_1.6.4_1659346702723_0.14179990875917925"},"_hasShrinkwrap":false},"2.1.7":{"name":"discord-portable-player","version":"2.1.7","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.11.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.2","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.3.0","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.9","@babel/core":"^7.18.9","@babel/preset-env":"^7.18.9","@babel/preset-typescript":"^7.18.6","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.10","@types/node":"^18.6.3","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.31.0","@typescript-eslint/parser":"^5.31.0","discord.js":"^14.1.2","eslint":"^8.21.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","tslib":"^2.4.0","typescript":"^4.7.4"},"gitHead":"df80019d3bd8f84ecca56b95ea0930decee84962","_id":"discord-portable-player@2.1.7","_nodeVersion":"18.7.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-3b0f2ZpdaaoBJLyye7JBNfmP0gwZ4ZqAdoiY34iXcQjlvp9oqaqutp0P4+I65FYdqP+QBDeucMLEu0C5Bvmrew==","shasum":"a6decaaf1e5f86a3266158cb6de23a0068ec8b15","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.1.7.tgz","fileCount":21,"unpackedSize":163029,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBZiWhkKDP+MDYX6HGoD16Bh+9xcCbaFk6laKPWC5nq6AiEA/ZlsCdCfuTKqqvIjffZDy7RgOkpwYwp0u7NYO1l+990="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi55+cACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrHEg//fMncqszcwWkROjWdsbAzBMGndHJhwOObBMrUFK7+QTIb8GlI\r\nm91otHAILoHiGQvjYDPAxVeLpkPWLEQvMz9p6iKz6RSE+FHPzaFbYcK93FqY\r\n5kHT7gFoiIGBsHhRJVun40IdGfP7E1LB9SMidPyIBvCd1f0lwqt7Ec71VcUR\r\nUFYuQGEzylMAI2BnH3yqtGMMqiG5VumU6Ztr9A3bK+3rXLeanR+JDAXu3GtN\r\nviVyBGSzse7vVP4YxW5IsHVbMgIwzMxu8iFC5hQyoVVGJ8tW9i4YRAqMM21k\r\nN+TmBE9BPVqSACnJ5F86kV93AhrXZI9xpx6p1WyvU7oQWQ7k4c2LygfPoDXc\r\n+ZMPZvPGZXyFGrVOUpgkwcnVxPbcmNJWkxKB9Re8PiRCWnrijxlXnCr7JK1F\r\nkqfOTuRffaVWWlqxT2oPFENwj2pelXOPNPYpjcNS9BC8UNcDAWoQYm13IItv\r\nBI6XE06bv7Mq9YqEy2J0vzC6XlQi6c0DqCRSH6vs5Yr/M+z+ywFw4vyl9+oU\r\nkWeqFl1puMGb/RpA2MxrEH3UjXJ+s85Z+npfrwkeL8CZGeSK0Jrd0nNGzyoo\r\nRczyPY3ozI4/jeXVpwlxMrwGp611CKNqTDFPNt5SGGBy7aHA33X1OODB6nF3\r\nNsvqEVa+ONYh5dlcs19EQ1yo7aQi0gleeSg=\r\n=CQ5D\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.1.7_1659346843771_0.03760119791656957"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.2.0":{"name":"discord-portable-player","version":"2.2.0","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.11.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.4","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.3.1","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.10","@babel/core":"^7.18.10","@babel/preset-env":"^7.18.10","@babel/preset-typescript":"^7.18.6","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.11","@types/node":"^18.7.9","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.33.1","@typescript-eslint/parser":"^5.33.1","discord.js":"^14.3.0","eslint":"^8.22.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","tslib":"^2.4.0","typescript":"^4.7.4"},"gitHead":"fffda2637a9f82384a51be3f5d9c3bf7a07ead97","_id":"discord-portable-player@2.2.0","_nodeVersion":"18.7.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-bMUQUAS1Nm3GFJpgtY3jr0K/SJTpeT2yADIt6og1CwRI7JjDjUxL2pBXGjQK/05/ktG3VYJjiuMQzRH0XFj8qg==","shasum":"a809ef1fd1052e1b5448295ed97648cf03692eee","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.2.0.tgz","fileCount":21,"unpackedSize":163033,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC0t4dCqpI2aZ4Lgqd5XdkOJrd/GU7XI1UMLr38c6jTgAiB9cwGvfpSFmc4YRrBWwNbCfz0Zko8UlZnEDU7cGmPR4A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjA2xBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqh+Q//avFHLKnmr2xjQ+HOZ4WU6q3Vg1OfyeTwjl2GJA6YHRWwjY4E\r\nhCxGZl4U57Vkpkuw3csdsivq+MJCqzX+TnIZiyFYPPFIPEw0f61duv0AQAOB\r\nynLo9mR0lmV/yOqHTznaetCSv6XEePi6M4pe/4O/cnCUqU9EcLwfKLXbUOJ+\r\ns/VeYq9OXg4tMNMPmmm9PFnFPatiWrT5sLrOgDVXx+PvbBpFU2R1W8NEA8f9\r\nBBRd/oMVFrLHH3uEVE2Q26U5kwM9KJ7rnRmtd5TwFOR+AxkGlMt1Nknr77f9\r\nmDfe6SZkDU9WfLaMCsyrDvVi5BWfnrkXGUZJFIBZAQeln6lP3NKh9Vs1/GnM\r\nLbFLZHM++QJBMY8KPBLN/YMAptM26OLD8pHEltY4ilHUx4FRDPncpsHhrTdz\r\nWJBQHaS+GV0bYikQ/BQNW13HCeZN4GH+sOq/VIle/0q2WqjT+0BHGBD4inpZ\r\nbn23kKfHwMJe+WeeHxujec6BHNz1/b4fOZoiXCObiJXJs4hpU9ikdVOvKyhq\r\nOJBmF8J8iJwiq35G1vqfRZQzS34dsrOZHKZDpTHLLOSDwX5vED/LDhQgSKHA\r\nWXn3ehbmrinEAKQDvHGGbjNW6sHYVj1BCrE1AlR1sL9A5MfweGl7iCEa4qov\r\nLyB1F3DTNbpTkZXm4nkaQ2yYqxQwNSFAty4=\r\n=L6jE\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.2.0_1661168705701_0.5776627280552951"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.3.0":{"name":"discord-portable-player","version":"2.3.0","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.11.0","axios":"^0.27.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.4","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.3.1","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.10","@babel/core":"^7.18.10","@babel/preset-env":"^7.18.10","@babel/preset-typescript":"^7.18.6","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.11","@types/node":"^18.7.9","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.33.1","@typescript-eslint/parser":"^5.33.1","discord.js":"^14.3.0","eslint":"^8.22.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","tslib":"^2.4.0","typescript":"^4.7.4"},"gitHead":"5a69d2228d682bb3534f01171e2c91831a161bef","_id":"discord-portable-player@2.3.0","_nodeVersion":"18.9.1","_npmVersion":"8.19.1","dist":{"integrity":"sha512-kev9bH+cTwNwvnsx7xLfY18hVq2o0WfzZVftVk/XrRFO6M0ASqis6X8hy09D2tGcpVJt6TsbEZP4a11jwvh1WQ==","shasum":"37de4f64b59ffd4bd9256b42c1ec0ce8275c7e64","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.3.0.tgz","fileCount":21,"unpackedSize":163033,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRygHQ02HX5YUvBpbMUc/mh7eZrv7tzQ7j3YX1xMOwCgIhAOTOBirYtMq9UfocgTZBh2TgzFG9kcl9vzxhYGv7TFwM"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMZonACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmolPRAAm5YHA0pjrj+b/Lcr6oE+SEqAPbcdafaZ2jkzAY88SMZPozOV\r\nqZXUkpNuLEPCup/9YE27L0vZLQaG/K4tv3dqDKZqVLD4g6UmBzivBrpEk1V+\r\ndlb1PMEWthQFluUfJ+pyt5D8q4vRwy78l8n/PunLLTpZC7W1mblsTqL1vMLQ\r\ngYzQs7iuHIr97F62BNFWFqaJ8FROBOb4Pd4g+l77qCR9x3tqKZK9AJahWMCT\r\nKz4RIUk1Vfgppt7XIyhCWXOdgOngDwdN8iN3E4fmq8EITV3Z0C2BfzTxv/4W\r\n+VZyZKRdyl5yEG9IuskdIN+QEQvNnrbZjAMgyqYG1My9wphksZ8C0bsJIZYf\r\n3PHTe5DoHcf0CH9OuiwLtIJPHZ/8Xwc4n+TRIQiE2bMbL1ZmOWK6wbFG26BD\r\nJahqdV5kRrgwSUCJFAO5HVJi1FYMCYRyUWEfr0f4veJXoUPg86+Zp8Yyv6Gq\r\no286XsVIooFh5YNFBkqdTrZHgU2GgH0Mam3n20mTDUAUsmK8wtK/sefHkqOg\r\n0QnC6uMmgd8hRurUAtPLJwFLNwA9Dtm2DFnLLukqcda+myMKteB9ajpKtTuQ\r\naDUBgif+vLa8IqwKUE/GahVWmyLsYJm4DpP7QuEyj9rHjXMEJVa7wVfd6eHt\r\ni0VtKoJbwAuGJnLbYyfN7ZeF3HTVHLFFro0=\r\n=AYX2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.3.0_1664195110938_0.5753269990321495"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.4.0":{"name":"discord-portable-player","version":"2.4.0","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.11.0","axios":"^1.1.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.4","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.3.1","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.10","@babel/core":"^7.18.10","@babel/preset-env":"^7.18.10","@babel/preset-typescript":"^7.18.6","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^1.0.11","@types/node":"^18.7.9","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.33.1","@typescript-eslint/parser":"^5.33.1","discord.js":"^14.3.0","eslint":"^8.22.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","tslib":"^2.4.0","typescript":"^4.7.4"},"gitHead":"cc7fe860c87ecc8b51428e2e26e6e27fc01093c0","_id":"discord-portable-player@2.4.0","_nodeVersion":"18.10.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-o4HSX4ZCDJ0aWLemm2zSwfEn2iB7i0Q0f0GUaU/y8T4IPY+qeNwr1ONZ8vOjqPudI3PDtYI2HxdMc4SrbE9JFQ==","shasum":"d3a734a9e464b29597377282291deb3db9058c8b","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.4.0.tgz","fileCount":21,"unpackedSize":163032,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDma239R6kUD3Z4NAYoi4eNaiMAGqfsDl2apIcS2QhXgIhAMe1kCnLVadnFije/q7hE7LzWw4ftcIsOCcFCFU8/zsG"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjRWrwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp4GQ//frAXT4St2P+/a0+CUseiDTLWWsaVRH47vAJfpU96GUI7frit\r\ny1CA25aRLBZs4cFDwI/u7L/nKbY/io1kwUA9Zamu2jbshlYSjVeg8d5Dgdsj\r\nI4Zn/kmT3vHuYO17G4S/xA23wT5qYevpWAZwph+UkDHoLg7dbysr5zTa6f2l\r\nryVuxpgiZBDUNXWlvYXJ9RLU9MiF6Rlhzctz8etG1Tf7xWfDtbbh0hXil9dI\r\nxiCMeVk5Rpwa98ec0svKnGm6LtZqt0c2oYI44ffZ13RIpyJMp1uutF2W2REi\r\nQwiF+q5QdVFApM88VqzdqWshh88uKgPggbX1tw8vuTl6tUXioBFgsRX1qvvv\r\n+WPehR3IQ4OgXbsvajb3gcZaeGixjKdc22/L8LVYfPEa7ugTEPytZzYYcMDP\r\nRWjTC5TRR2rjaapYi05pRferZFvyv9IZKCIv1rTZVpNbMoJQXgbpCjOmIdY0\r\n4Fxmoeg65ze/VxscA84kubuy/2Ggx3P83H6vHsYtOe6MuNoyDfAnPXFy1nJ1\r\nsZ+48eWRNXvOL2xC+8TSgOcoQ1nOQt+m47HTfG6UD+ZGp1SXBJXE+ssJaxEg\r\nbnUZJtcvBAs0Y7Op3Ivyj27FJrnq98J3TTXRqwCDuU74gDORcJ8+Z7rOPEY0\r\nk8e/Bk8kiTj8VYxrFF9TdMvWEl0bgk9yWDQ=\r\n=e52G\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.4.0_1665493743960_0.03227241405291603"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.4.1":{"name":"discord-portable-player","version":"2.4.1","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.11.0","axios":"^1.1.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.4","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.3.1","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.10","@babel/core":"^7.18.10","@babel/preset-env":"^7.18.10","@babel/preset-typescript":"^7.18.6","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^2.0.0","@types/node":"^18.7.9","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.33.1","@typescript-eslint/parser":"^5.33.1","discord.js":"^14.3.0","eslint":"^8.22.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","tslib":"^2.4.0","typescript":"^4.7.4"},"gitHead":"f9da8b2da1d2708855039b5980b53726546b983d","_id":"discord-portable-player@2.4.1","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-SImIBjxAWwO0wMEh0NXCfm9u3RXgUt3A2X0t7Ve4f0ePMPBkMwq1aBeEqdZYAhhxvQS3XTuH6hQujO8Dfq1VuQ==","shasum":"1227ed8922b12fc4343e33ee6c961299e2c2e080","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.4.1.tgz","fileCount":21,"unpackedSize":163015,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCa8FHaQCMdNoW1fl0/twVWxkzLAHpqebCXygs8PaYwsQIhALukdYhkgujeIRtyIQlzbmYzDfQB+ZEU6Fzr73O45MH5"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjtxuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrD6RAAjilscD2Z1rH3fWTvTnyYko12vF6fl+EhINhfy4vbwspvhfJV\r\nVRip3I1VLsrFijir7POq8Rwcws2hoR0jOjXu/2LhxSDcmZQDRTfqxcEf9cyk\r\nB5LiHFtxmzK6/PpV2sk6YN/uf39c5+uGBdbg6sym/qKt+lSkUI1JdEAg6f7u\r\nOm/nPBpgSyz0/oUlGSGA+Rct/8HHasAqE9ePVXP/HW4mjBdK17gGHhM/t45A\r\nbcNKG3n8+4z0NsQaetu5ENFvLfDKfpqBauofGCEDuCk40dOlDOexHHvWOH8g\r\nOvNMAOn7o1iLcO9Z14CjqF1Wc/PKpeX0kwIoQhUyh53fv5aO5yTNPaHWm7vO\r\nFd3RPjCvoMrx/+XAXn28XsrsvrAVSi3neawky3gRkmwH5sXV2wtxSo3ZfmH6\r\nbLmpp3p/T5u2JtPBBeCg2N0ZdBn6dvIQifiXREh975k2t+2Op7dKnef4aFN+\r\nO8vsblqH6lE7/wnVcvdGvtdalL2W6PLh1cY+md6/emolMsyqPkfZYUYfxaU5\r\ny/v9LEmrJFcnJsHzQCrGJyyKd+lR16HeQh/fgV0n6a2Y59SMZKWbqyKiWJi8\r\nAt4a4z6LY0w7014Z4t5bPWFJuY5sKdygxwc+iZo4kEdYEi5d9YbB6z6GkHmP\r\n6PDBgqOmSHxpob+Rq6P7ELfqWHuti5JlCl8=\r\n=a3Vi\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.4.1_1670306925802_0.23216145273873767"},"_hasShrinkwrap":false,"deprecated":"No longer supported. Install the latest release!"},"2.4.2":{"name":"discord-portable-player","version":"2.4.2","description":"Easy to use, framework to facilitate music commands using discord.js","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs"},"./smoothVolume":"./dist/smoothVolume.js","./packages/*":"./dist/*","./dist/*":"./dist/*"},"scripts":{"dev":"cd example/test && ts-node index.ts","build":"rimraf dist && tsc && npm run build:esm","build:check":"tsc --noEmit --incremental false","prepublishOnly":"rollup-type-bundler -e stream","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","format":"prettier --write \"src/**/*.ts\" \"example/**/*.ts\"","docs":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml --output docs/docs.json","docs:test":"docgen --jsdoc jsdoc.json --source src/*.ts src/**/*.ts --custom docs/index.yml","lint":"eslint src --ext .ts","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix"},"funding":"https://github.com/lolollllo/discord-portable-player?sponsor=1","contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"author":{"name":"lolollllo"},"license":"MIT","bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"homepage":"https://lolollllo.github.io/discord-portable-player/","dependencies":{"@discordjs/voice":"^0.11.0","axios":"^1.1.2","cheerio":"^1.0.0-rc.12","cross-fetch":"^3.1.5","discord-ytdl-core":"^5.0.4","libsodium-wrappers":"^0.7.10","soundcloud-scraper":"^5.0.3","spotify-url-info":"^3.1.4","tiny-typed-emitter":"^2.1.0","youtube-sr":"^4.3.1","ytdl-core":"^4.11.0"},"devDependencies":{"@babel/cli":"^7.18.10","@babel/core":"^7.18.10","@babel/preset-env":"^7.18.10","@babel/preset-typescript":"^7.18.6","@devsnowflake/docgen":"github:devsnowflake/docgen#ts-patch","@discord-player/extractor":"^3.0.2","@discordjs/opus":"github:discordjs/opus","@favware/rollup-type-bundler":"^2.0.0","@types/node":"^18.7.9","@types/ws":"^8.5.3","@typescript-eslint/eslint-plugin":"^5.33.1","@typescript-eslint/parser":"^5.33.1","discord.js":"^14.3.0","eslint":"^8.22.0","gen-esm-wrapper":"^1.1.3","husky":"^8.0.1","jsdoc-babel":"^0.5.0","prettier":"^2.7.1","rimraf":"^3.0.2","ts-node":"^10.9.1","tslib":"^2.4.0","typescript":"^4.7.4"},"gitHead":"e150a7ff0fa13951304ff5dcc6835d111a516ba7","_id":"discord-portable-player@2.4.2","_nodeVersion":"18.17.0","_npmVersion":"9.6.7","dist":{"integrity":"sha512-cdT0bYkjvCqu4Sk3p7ExEFMRo4bV2czG/Jo1OEA+WWW+GkeYNYI5Fu0XWikCGmxQYAPjyTw53X6Y1FAx3j/Erg==","shasum":"024ba16d5fdf2a5a2c17b4846351b988e3364789","tarball":"https://registry.npmjs.org/discord-portable-player/-/discord-portable-player-2.4.2.tgz","fileCount":21,"unpackedSize":163015,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCU0zLKXR1wElbuMSVgVBMR2pecF4XgaJa6VTfmX8bNqQIgLI/t5M3AkGr7P/D2q/IYQ0MD+k7to9GdD1WXaqQI9ds="}]},"_npmUser":{"name":"neks4922","email":"zerrain2@gmail.com"},"directories":{},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/discord-portable-player_2.4.2_1691082124059_0.7288915279514014"},"_hasShrinkwrap":false}},"maintainers":[{"name":"neks4922","email":"zerrain2@gmail.com"}],"description":"Easy to use, framework to facilitate music commands using discord.js","homepage":"https://lolollllo.github.io/discord-portable-player/","keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdl-core","ytdl","lavalink","api"],"repository":{"type":"git","url":"git+https://github.com/lolollllo/discord-portable-player.git"},"contributors":[{"name":"Nex","email":"nex@shittystuffwedo.tk"}],"author":{"name":"lolollllo"},"bugs":{"url":"https://github.com/lolollllo/discord-portable-player/issues"},"license":"MIT","readme":"# Discord Portable Player\nComplete framework to facilitate music commands using [discord.js](https://discord.js.org).\n\n[![downloadsBadge](https://img.shields.io/npm/dt/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![versionBadge](https://img.shields.io/npm/v/discord-portable-player?style=for-the-badge)](https://npmjs.com/discord-portable-player)\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)\n\n## Installation\n\n### Install [discord-portable-player](https://npmjs.com/package/discord-portable-player)\n\n```sh\n$ npm install --save discord-portable-player\n```\n\n### Install [@discordjs/opus](https://npmjs.com/package/@discordjs/opus)\n\n```sh\n$ npm install --save @discordjs/opus\n```\n\n### Install FFmpeg or Avconv\n- FFMPEG Website: [https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)\n- FFMPEG: [https://npmjs.com/package/ffmpeg](https://npmjs.com/package/ffmpeg)\n- Avconv: [https://libav.org/download](https://libav.org/download)\n\n# Features\nA simple & easy to use, beginner friendly package with amazing features such as Audio filters, Custom extractor support & many more!\n\n**[Documentation](https://discord-portable-player.js.org)**\n\n## Getting Started\n\nFirst of all, you will need to register slash commands:\n\n```js\nconst { token, clientId } = require('./config.json');\nconst { Routes, REST, SlashCommandBuilder } = require('discord.js');\n\nconst commands = [\n    new SlashCommandBuilder().setName('play').setDescription('play a song').addStringOption(option => option.setName('query').setDescription('The query to search for').setRequired(true))\n].map(command => command.toJSON());\n\t\n    \nconst rest = new REST({ version: '10' }).setToken(token);\n(async () => {\n  try {\n    console.log('Started refreshing application [/] commands.');\n    await rest.put(\n      Routes.applicationCommands(clientId),\n      { body: commands },\n    );\n    console.log('Successfully reloaded application [/] commands.');\n  } catch (error) {\n    console.error(error);\n  }\n})();\n```\n\nNow you can implement your bot's logic:\n\n```js\nconst { Client, GatewayIntentBits } = require(\"discord.js\");\nconst client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates]});\nconst { token } = require('./config.json');\nconst { Player } = require(\"discord-portable-player\");\n// Create a new Player (you don't need any API Key)\nconst player = new Player(client);\nclient.once(\"ready\", () => {\n    console.log(\"I'm ready !\");\n});\nclient.on(\"interactionCreate\", async (interaction) => {\n    if (!interaction.isChatInputCommand()) return;\n    // /play track: Marshmello - Together\n    if (interaction.commandName === \"play\") {\n        if (!interaction.member.voice.channel) return await interaction.reply({ content: \"You are not in a voice channel!\", ephemeral: true });\n        if (interaction.guild.members.me.voice.channel && interaction.member.voice.channel !== interaction.guild.members.me.voice.channel) return await interaction.reply({ content: \"You are not in my voice channel!\", ephemeral: true });\n        const query = interaction.options.getString(\"query\")\n        const queue = player.createGuildQueue({\n            metadata: interaction.channel,\n\t    guild: interaction.guild\n        });\n        \n        // Verifies the voice channel\n        try {\n            if (!queue.connection) await queue.connect(interaction.member.voice.channel);\n        } catch {\n            queue.destroy();\n            return await interaction.reply({ content: \"Could not join your voice channel!\", ephemeral: true });\n        }\n        await interaction.deferReply();\n        const track = await player.search(query, {\n            requestedBy: interaction.user\n        }).then(x => x.tracks[0]);\n        if (!track) return await interaction.followUp({ content: `**${query}** not found!` });\n        queue.play(track);\n        return await interaction.followUp({ content: `Loading track **${track.title}**!` });\n    }\n});\n// add the trackStart event so when a song will be played this message will be sent\nplayer.on(\"trackStart\", (queue, track) => queue.metadata.send(`🎶 | Now playing **${track.title}**!`))\nclient.login(token);\n```\n\n## Supported Sources\n\nBy default, discord-portable-player supports:\n- [YouTube](https://www.youtube.com/)\n- [Spotify](http://spotify.com)\n- [Apple Music](https://www.apple.com/apple-music/)\n- [SoundCloud](https://soundcloud.com/)\n","readmeFilename":"README.md"}