{"_id":"@bleah/discord-player","_rev":"110-a90a03165cd73fc5c5f0543584b4e0c2","name":"@bleah/discord-player","dist-tags":{"latest":"6.9.10"},"versions":{"6.1.0":{"name":"@bleah/discord-player","version":"6.1.0","keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","@ybd-project/ytdl-core","ytdl","lavalink","api"],"author":{"name":"bLeaH"},"license":"MIT","_id":"@bleah/discord-player@6.1.0","maintainers":[{"name":"dfxphoenix","email":"waltercurelea@yahoo.com"}],"homepage":"https://github.com/bleahbot/discord-player#readme","bugs":{"url":"https://github.com/bleahbot/discord-player/issues"},"dist":{"shasum":"3fdf768fe51c2fb6ca6f0eed6c41e00caa75cb07","tarball":"https://registry.npmjs.org/@bleah/discord-player/-/discord-player-6.1.0.tgz","fileCount":38,"integrity":"sha512-SZ2Hz8FXFFW3SXiBlk0usdAuY+dCpRH6y3BM92/dwp2e93kvbjQ43o5jQRcEiWTzAm1r/RtCA2D0loPtV2aNaQ==","signatures":[{"sig":"MEYCIQCTxZ90/b6zJBBQ8u1nhzE2mVmNurWCyleFIH/CwxSXngIhALU65ly/VMNx5EeQNZqnYxtpV6tdA7Eb1rvjBYITxrSM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":179601},"main":"dist/index.js","types":"./dist\\index.d.ts","module":"dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"},"./src/*":"./dist/*","./dist/*":"./dist/*","./smoothVolume":"./dist/smoothVolume.js"},"gitHead":"2bffd3460c81abdd627533c495ebc3c085ad03b6","scripts":{"lint":"eslint src --ext .ts","build":"rimraf dist && tsc && npm run build:esm","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","build:check":"tsc --noEmit --incremental false"},"_npmUser":{"name":"dfxphoenix","email":"waltercurelea@yahoo.com"},"repository":{"url":"git+https://github.com/bleahbot/discord-player.git","type":"git"},"_npmVersion":"10.8.2","description":"This is a fork of discord-player module","directories":{},"_nodeVersion":"20.17.0","dependencies":{"youtube-sr":"^4.3.4","prism-media":"^1.3.5","@discordjs/voice":"^0.16.0","spotify-url-info":"^3.2.17","isomorphic-unfetch":"^4.0.2","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.3","tiny-typed-emitter":"^2.1.0","@ybd-project/ytdl-core":"^5.1.9-2"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.4","eslint":"^8.3.0","rimraf":"^3.0.2","ts-node":"^10.9.1","@types/ws":"^8.5.3","@babel/cli":"^7.16.0","discord.js":"^13.17.1","typescript":"^4.7.4","@babel/core":"^7.16.0","@types/node":"^18.6.3","@discordjs/opus":"^0.9.0","gen-esm-wrapper":"^1.1.3","@babel/preset-env":"^7.16.4","discord-api-types":"^0.36.0","@babel/preset-typescript":"^7.16.0","@typescript-eslint/parser":"^5.4.0","@typescript-eslint/eslint-plugin":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/discord-player_6.1.0_1727904160988_0.17816381596537312","host":"s3://npm-registry-packages"}},"6.2.4":{"name":"@bleah/discord-player","version":"6.2.4","keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","@distube/ytdl-core","ytdl","lavalink","api"],"author":{"name":"bLeaH"},"license":"MIT","_id":"@bleah/discord-player@6.2.4","maintainers":[{"name":"dfxphoenix","email":"waltercurelea@yahoo.com"}],"homepage":"https://github.com/bleahbot/discord-player#readme","bugs":{"url":"https://github.com/bleahbot/discord-player/issues"},"dist":{"shasum":"91d642fbe5fcee3e1157ab9d4a224334f48fbe0a","tarball":"https://registry.npmjs.org/@bleah/discord-player/-/discord-player-6.2.4.tgz","fileCount":38,"integrity":"sha512-WMZzXBTXBTg5sQncwR0ETZeWED/ogi+WGeTOS1pMEpotqE28J9WqWXIYGSbVZgAWbdoz0R+XrgY4Lx6W8PTqQg==","signatures":[{"sig":"MEUCIQCHXUKPBuZJTlfRUJrSTM32OgpKzzTdgEJmWewOvwUvlgIgc1WnKFXfk/CQ7z41y/fz4B7FshODp7PMu4b4YXp7Cb4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177963},"main":"dist/index.js","types":"./dist\\index.d.ts","module":"dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"},"./src/*":"./dist/*","./dist/*":"./dist/*","./smoothVolume":"./dist/smoothVolume.js"},"gitHead":"11837cd0a80db95d58364a223ddfd0c5aa084c16","scripts":{"lint":"eslint src --ext .ts","build":"rimraf dist && tsc && npm run build:esm","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","build:check":"tsc --noEmit --incremental false"},"_npmUser":{"name":"dfxphoenix","email":"waltercurelea@yahoo.com"},"repository":{"url":"git+https://github.com/bleahbot/discord-player.git","type":"git"},"_npmVersion":"10.8.2","description":"This is a fork of discord-player module","directories":{},"_nodeVersion":"20.17.0","dependencies":{"youtube-sr":"^4.3.4","prism-media":"^1.3.5","@discordjs/voice":"^0.16.0","spotify-url-info":"^3.2.17","@distube/ytdl-core":"^4.16.0","isomorphic-unfetch":"^4.0.2","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.3","tiny-typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.4","eslint":"^8.3.0","rimraf":"^3.0.2","ts-node":"^10.9.1","@types/ws":"^8.5.3","@babel/cli":"^7.16.0","discord.js":"^13.17.1","typescript":"^4.7.4","@babel/core":"^7.16.0","@types/node":"^18.6.3","@discordjs/opus":"^0.9.0","gen-esm-wrapper":"^1.1.3","@babel/preset-env":"^7.16.4","discord-api-types":"^0.36.0","@babel/preset-typescript":"^7.16.0","@typescript-eslint/parser":"^5.4.0","@typescript-eslint/eslint-plugin":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/discord-player_6.2.4_1738939357419_0.6508983260373253","host":"s3://npm-registry-packages-npm-production"}},"6.2.8":{"name":"@bleah/discord-player","version":"6.2.8","keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","@bleah/ytdl-core","ytdl","lavalink","api"],"author":{"name":"bLeaH"},"license":"MIT","_id":"@bleah/discord-player@6.2.8","maintainers":[{"name":"dfxphoenix","email":"waltercurelea@yahoo.com"}],"homepage":"https://github.com/bleahbot/discord-player#readme","bugs":{"url":"https://github.com/bleahbot/discord-player/issues"},"dist":{"shasum":"5ee432389d6ab055bd7492dcc3e96dfdc62894b2","tarball":"https://registry.npmjs.org/@bleah/discord-player/-/discord-player-6.2.8.tgz","fileCount":38,"integrity":"sha512-a58ozlUZ41cFE5rpbRmwFS5y28miuJaahtH6ZM39v8Y9AxYIokIPwD1Nf6BLrb5am0gsEI5wsXaAH+5hg3TVlw==","signatures":[{"sig":"MEUCIC28Cihbntrpz7/ui7W3hoKKydaQ0Z7+siOUVlw9G0+iAiEAszy+e+PmDWPQ8rXxkrBalgJPw8Is5lQXhaW13vDX2xA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177938},"main":"dist/index.js","types":"./dist\\index.d.ts","module":"dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"},"./src/*":"./dist/*","./dist/*":"./dist/*","./smoothVolume":"./dist/smoothVolume.js"},"gitHead":"62951f53a70f0a5b0f77b4270798a525e743bd41","scripts":{"lint":"eslint src --ext .ts","build":"rimraf dist && tsc && npm run build:esm","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","build:check":"tsc --noEmit --incremental false"},"_npmUser":{"name":"dfxphoenix","email":"waltercurelea@yahoo.com"},"repository":{"url":"git+https://github.com/bleahbot/discord-player.git","type":"git"},"_npmVersion":"10.8.2","description":"This is a fork of discord-player module","directories":{},"_nodeVersion":"20.17.0","dependencies":{"youtube-sr":"^4.3.4","prism-media":"^1.3.5","@discordjs/opus":"^0.10.0","@bleah/ytdl-core":"^4.18.2","@discordjs/voice":"^0.16.0","spotify-url-info":"^3.2.17","isomorphic-unfetch":"^4.0.2","libsodium-wrappers":"^0.7.9","soundcloud-scraper":"^5.0.3","tiny-typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.4","eslint":"^8.3.0","rimraf":"^3.0.2","ts-node":"^10.9.1","@types/ws":"^8.5.3","@babel/cli":"^7.16.0","discord.js":"^13.17.1","typescript":"^4.7.4","@babel/core":"^7.16.0","@types/node":"^18.6.3","gen-esm-wrapper":"^1.1.3","@babel/preset-env":"^7.16.4","discord-api-types":"^0.36.0","@babel/preset-typescript":"^7.16.0","@typescript-eslint/parser":"^5.4.0","@typescript-eslint/eslint-plugin":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/discord-player_6.2.8_1758905670405_0.6217963565931399","host":"s3://npm-registry-packages-npm-production"}},"6.9.4":{"name":"@bleah/discord-player","version":"6.9.4","keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdlp-nodejs","ytdl","lavalink","api"],"author":{"name":"bLeaH"},"license":"MIT","_id":"@bleah/discord-player@6.9.4","maintainers":[{"name":"dfxphoenix","email":"waltercurelea@yahoo.com"}],"homepage":"https://github.com/bleahbot/discord-player#readme","bugs":{"url":"https://github.com/bleahbot/discord-player/issues"},"dist":{"shasum":"25b09f18674adf731eb5d38f1f46c93f1c2984f8","tarball":"https://registry.npmjs.org/@bleah/discord-player/-/discord-player-6.9.4.tgz","fileCount":40,"integrity":"sha512-S6zcLy2EjQInmw0QczY7KYXKBpb2eFlKgN3RM+eKwEIZvg8NYj7AhbUbqs5zyfmZhNfJopeacovxr1hJ8ympuQ==","signatures":[{"sig":"MEUCIHaP/XJjwrwWV+RB+H749A57NbQWwp2RY4ayq4aK25bAAiEAsqB5a9FbT4xdVkpVsOq66V56SKc2MgAbeQHVxR+vC8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":237205},"main":"dist/index.js","types":"./dist\\index.d.ts","module":"dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"},"./src/*":"./dist/*","./dist/*":"./dist/*","./smoothVolume":"./dist/smoothVolume.js"},"gitHead":"3576904954486204298ac308b7297970fa0ccbea","scripts":{"lint":"eslint src --ext .ts","build":"rimraf dist && tsc && npm run build:esm","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","test-ytdlp":"npm run build && node test-ytdlp.js","build:check":"tsc --noEmit --incremental false"},"_npmUser":{"name":"dfxphoenix","email":"waltercurelea@yahoo.com"},"repository":{"url":"git+https://github.com/bleahbot/discord-player.git","type":"git"},"_npmVersion":"10.8.2","description":"This is a fork of discord-player module","directories":{},"_nodeVersion":"20.17.0","dependencies":{"youtube-sr":"^4.3.12","prism-media":"^1.3.5","ytdlp-nodejs":"^2.3.5","soundcloud.ts":"^0.7.1","@discordjs/voice":"^0.18.0","spotify-url-info":"^3.2.18","isomorphic-unfetch":"^4.0.2","libsodium-wrappers":"^0.7.9","tiny-typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.4","eslint":"^8.3.0","rimraf":"^3.0.2","ts-node":"^10.9.1","@types/ws":"^8.5.3","@babel/cli":"^7.16.0","discord.js":"^13.17.1","typescript":"^4.7.4","@babel/core":"^7.16.0","@types/node":"^18.6.3","ffmpeg-static":"^5.2.0","gen-esm-wrapper":"^1.1.3","@babel/preset-env":"^7.16.4","discord-api-types":"^0.36.0","@babel/preset-typescript":"^7.16.0","@typescript-eslint/parser":"^5.4.0","@typescript-eslint/eslint-plugin":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/discord-player_6.9.4_1765731756346_0.5832577984495748","host":"s3://npm-registry-packages-npm-production"}},"6.9.6":{"name":"@bleah/discord-player","version":"6.9.6","keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdlp-nodejs","ytdl","lavalink","api"],"author":{"name":"bLeaH"},"license":"MIT","_id":"@bleah/discord-player@6.9.6","maintainers":[{"name":"dfxphoenix","email":"waltercurelea@yahoo.com"}],"homepage":"https://github.com/bleahbot/discord-player#readme","bugs":{"url":"https://github.com/bleahbot/discord-player/issues"},"dist":{"shasum":"6cf57becec7829cd45c26cb2b7377d8e114f82ce","tarball":"https://registry.npmjs.org/@bleah/discord-player/-/discord-player-6.9.6.tgz","fileCount":42,"integrity":"sha512-/O3h1SWCm+snzdn8yy/8Erdz/WwAisxPnt4Rkk5m8XCRcWzJqGcL2J+NdqPr5ckjYRALPVTwz15ovW1GavlHhQ==","signatures":[{"sig":"MEUCIDTwmT/76G4QScIN+N4Pgu8qThfDQbTVcbdRDr42EbV/AiEApIpL4qN+SbXkmEFOp//wFsqEI0SRII9P/I4fOo4pkd4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":268473},"main":"dist/index.js","types":"./dist\\index.d.ts","module":"dist/index.mjs","engines":{"node":">=22.0.0"},"exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"},"./src/*":"./dist/*","./dist/*":"./dist/*","./smoothVolume":"./dist/smoothVolume.js"},"gitHead":"652c76010560790d1724703814fbfa326d3014a8","scripts":{"lint":"eslint src --ext .ts","build":"rimraf dist && tsc && npm run build:esm","prepare":"husky install","lint:fix":"eslint src --ext .ts --fix","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","test-ytdlp":"npm run build && node test-ytdlp.js","build:check":"tsc --noEmit --incremental false"},"_npmUser":{"name":"dfxphoenix","email":"waltercurelea@yahoo.com"},"repository":{"url":"git+https://github.com/bleahbot/discord-player.git","type":"git"},"_npmVersion":"10.8.2","description":"This is a fork of discord-player module","directories":{},"_nodeVersion":"20.20.2","dependencies":{"prism-media":"^1.3.5","youtubei.js":"^18.0.0","ytdlp-nodejs":"^3.4.5","soundcloud.ts":"^0.7.1","@snazzah/davey":"^0.1.10","@discordjs/voice":"^0.19.1-dev.1772755842-41439d3a4","spotify-url-info":"^3.2.18","isomorphic-unfetch":"^4.0.2","libsodium-wrappers":"^0.7.9","tiny-typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.4","eslint":"^8.3.0","rimraf":"^3.0.2","ts-node":"^10.9.1","@types/ws":"^8.5.3","@babel/cli":"^7.16.0","discord.js":"^13.17.1","typescript":"^4.7.4","@babel/core":"^7.16.0","@types/node":"^18.6.3","ffmpeg-static":"^5.2.0","gen-esm-wrapper":"^1.1.3","@babel/preset-env":"^7.16.4","discord-api-types":"^0.36.0","@babel/preset-typescript":"^7.16.0","@typescript-eslint/parser":"^5.4.0","@typescript-eslint/eslint-plugin":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/discord-player_6.9.6_1787017596064_0.7970294124720285","host":"s3://npm-registry-packages-npm-production"}},"6.9.10":{"_id":"@bleah/discord-player@6.9.10","bugs":{"url":"https://github.com/bleahbot/discord-player/issues"},"dist":{"shasum":"6d96acdb7a405c9e744290ecbe62067f3a1ea022","tarball":"https://registry.npmjs.org/@bleah/discord-player/-/discord-player-6.9.10.tgz","fileCount":42,"integrity":"sha512-wje72WTXxxfyZanHyv7/7JQPgUo8NulvsxdzGLG+plS5jmSHUbvNUo7y99d2UqtFIbXfqY43IWZjckIrWzwQYw==","signatures":[{"sig":"MEYCIQDMQOOYlVDmmi15xereBCneTGa6a/uzL0D9ZM/WcvAhzAIhAKNZc+8CaFR5C9WuBNQ4Fr0Sy7ZuzprXvp/YeZbwtjWY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHzEQk5JZFwGkRphyjo+BjzWShg//X/caODVxSAG/BjTAiBByzfFhTGZutazUopE9E2h7PzLeia8uDaBiOwueLRT8A=="}],"unpackedSize":275537},"main":"dist/index.js","name":"@bleah/discord-player","_from":"file:output\\releases\\bleah-discord-player-6.9.10.tgz","types":"./dist\\index.d.ts","author":{"name":"bLeaH"},"module":"dist/index.mjs","engines":{"node":">=22.0.0"},"exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"},"./src/*":"./dist/*","./dist/*":"./dist/*","./smoothVolume":"./dist/smoothVolume.js"},"license":"MIT","scripts":{"lint":"eslint src tests --ext .ts,.js","test":"npm run build && node --test \"tests/*.test.js\"","build":"rimraf dist && tsc && npm run build:esm","prepare":"husky install","lint:fix":"eslint src tests --ext .ts,.js --fix","build:esm":"gen-esm-wrapper ./dist/index.js ./dist/index.mjs","test-ytdlp":"npm run build && node test-ytdlp.js","build:check":"tsc --noEmit --incremental false"},"version":"6.9.10","_npmUser":{"name":"dfxphoenix","email":"waltercurelea@yahoo.com"},"homepage":"https://github.com/bleahbot/discord-player#readme","keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdlp-nodejs","ytdl","lavalink","api"],"_resolved":"D:\\Sourcecodes\\NodeJS\\discord-player\\output\\releases\\bleah-discord-player-6.9.10.tgz","_integrity":"sha512-wje72WTXxxfyZanHyv7/7JQPgUo8NulvsxdzGLG+plS5jmSHUbvNUo7y99d2UqtFIbXfqY43IWZjckIrWzwQYw==","repository":{"url":"git+https://github.com/bleahbot/discord-player.git","type":"git"},"_npmVersion":"10.8.2","description":"This is a fork of discord-player module","directories":{},"maintainers":[{"name":"dfxphoenix","email":"waltercurelea@yahoo.com"}],"_nodeVersion":"24.19.0","dependencies":{"prism-media":"^1.3.5","youtubei.js":"^18.0.0","ytdlp-nodejs":"^3.4.5","soundcloud.ts":"^0.7.1","@snazzah/davey":"^0.1.10","@discordjs/voice":"^0.19.1-dev.1772755842-41439d3a4","spotify-url-info":"^3.2.18","isomorphic-unfetch":"^4.0.2","libsodium-wrappers":"^0.7.9","tiny-typed-emitter":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^7.0.4","eslint":"^8.3.0","rimraf":"^3.0.2","ts-node":"^10.9.1","@types/ws":"^8.5.3","@babel/cli":"^7.16.0","discord.js":"^13.17.1","typescript":"^4.7.4","@babel/core":"^7.16.0","@types/node":"^18.6.3","ffmpeg-static":"^5.2.0","gen-esm-wrapper":"^1.1.3","@babel/preset-env":"^7.16.4","discord-api-types":"^0.36.0","@babel/preset-typescript":"^7.16.0","@typescript-eslint/parser":"^5.4.0","@typescript-eslint/eslint-plugin":"^5.4.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/discord-player_6.9.10_1789883063571_0.7923354375709843"}}},"time":{"created":"2024-08-27T01:11:35.550Z","modified":"2026-09-20T05:44:23.801Z","5.2.2":"2023-05-24T22:12:57.109Z","5.2.4":"2023-05-24T22:27:19.984Z","5.2.6":"2023-05-27T18:01:13.112Z","5.2.8":"2023-09-26T04:58:57.913Z","5.4.0":"2023-09-26T05:48:18.395Z","5.4.2":"2023-09-26T07:14:13.192Z","5.4.6":"2023-09-26T10:58:34.972Z","5.4.8":"2023-09-26T11:04:59.405Z","5.5.2":"2023-09-26T11:26:35.499Z","5.5.4":"2023-09-26T15:25:43.373Z","5.5.6":"2023-09-26T15:28:26.556Z","5.5.8":"2023-09-27T13:34:05.799Z","5.8.4":"2024-08-26T21:04:49.020Z","5.8.6":"2024-08-26T21:46:19.329Z","5.8.8":"2024-08-27T01:11:35.837Z","5.9.2":"2024-08-27T10:26:55.096Z","5.9.4":"2024-09-30T17:21:39.317Z","5.9.6":"2024-10-02T12:43:00.232Z","5.9.8":"2024-10-02T14:01:54.345Z","6.0.0":"2024-10-02T17:56:17.735Z","6.0.2":"2024-10-02T20:26:41.704Z","6.0.4":"2024-10-02T20:31:44.601Z","6.0.8":"2024-10-02T21:01:20.700Z","6.1.0":"2024-10-02T21:22:41.228Z","6.2.0":"2025-02-06T18:15:53.998Z","6.2.4":"2025-02-07T14:42:37.614Z","6.2.8":"2025-09-26T16:54:30.635Z","6.4.2":"2025-10-03T05:55:23.325Z","6.4.6":"2025-10-03T06:00:08.549Z","6.4.8":"2025-10-03T06:12:51.132Z","6.5.2":"2025-10-03T06:14:58.459Z","6.5.4":"2025-10-16T20:18:24.149Z","6.5.8":"2025-10-16T22:59:51.301Z","6.6.2":"2025-10-16T23:04:06.699Z","6.6.4":"2025-10-17T00:27:53.106Z","6.6.8":"2025-10-17T03:43:24.731Z","6.6.9":"2025-10-17T04:41:51.596Z","6.8.2":"2025-10-17T04:48:34.283Z","6.8.4":"2025-10-23T22:26:35.828Z","6.8.6":"2025-10-23T23:31:08.035Z","6.8.8":"2025-10-24T03:38:18.132Z","6.8.9":"2025-10-24T05:48:23.577Z","6.9.0":"2025-12-14T08:27:53.923Z","6.9.1":"2025-12-14T08:32:52.033Z","6.9.2":"2025-12-14T15:07:02.852Z","6.9.4":"2025-12-14T17:02:36.567Z","6.9.5":"2026-03-06T06:36:55.507Z","6.9.8":"2026-03-08T10:05:54.167Z","6.9.9":"2026-03-08T10:36:44.873Z","6.7.2":"2026-03-08T10:42:07.408Z","6.7.4":"2026-08-17T23:45:33.069Z","6.7.6":"2026-08-18T01:25:45.379Z","6.9.6":"2026-08-18T01:46:36.199Z","6.9.10":"2026-09-20T05:44:23.646Z"},"bugs":{"url":"https://github.com/bleahbot/discord-player/issues"},"author":{"name":"bLeaH"},"license":"MIT","homepage":"https://github.com/bleahbot/discord-player#readme","keywords":["music","player","bot","framework","discord","volume","queue","youtube","discord.js","musicbot","discord-music-player","discord-music","music-player","youtube-dl","ytdlp-nodejs","ytdl","lavalink","api"],"repository":{"url":"git+https://github.com/bleahbot/discord-player.git","type":"git"},"description":"This is a fork of discord-player module","maintainers":[{"name":"dfxphoenix","email":"waltercurelea@yahoo.com"}],"readme":"# Discord Player\nThis is a fork of discord-player module\n\nComplete framework to facilitate music commands using **[discord.js](https://discord.js.org)**.\n\n## Installation\n> ⚠️ Discord Player requires Discord.js 13.x. Please ensure that you have a compatible version by running npm list discord.js in your terminal.\n\n### Install **[@bleah/discord-player](https://npmjs.com/package/@bleah/discord-player)**\n\n```sh\n$ npm install --save @bleah/discord-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- or `opusscript`\n```sh\n$ npm install --save opusscript\n```\n\n### Install FFmpeg\n- FFMPEG Binary: **[https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)**\n- FFMPEG Node Module: **[https://npmjs.com/package/ffmpeg-static](https://npmjs.com/package/ffmpeg-static)**\n\n### Install YT-DLP (optional)\n- YT-DLP Binary: **[https://github.com/yt-dlp/yt-dlp](https://github.com/yt-dlp/yt-dlp)**\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-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/v9\");\n\nconst commands = [{\n    name: \"play\",\n    description: \"Plays a song!\",\n    options: [\n        {\n            name: \"query\",\n            type: \"STRING\",\n            description: \"The song you want to play\",\n            required: true\n        }\n    ]\n}]; \n\nconst rest = new REST({ version: \"9\" }).setToken(process.env.DISCORD_TOKEN);\n\n(async () => {\n  try {\n    console.log(\"Started refreshing application [/] commands.\");\n\n    await rest.put(\n      Routes.applicationGuildCommands(CLIENT_ID, GUILD_ID),\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, Intents } = require(\"discord.js\");\nconst client = new Discord.Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_VOICE_STATES] });\nconst { Player } = require(\"@bleah/discord-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.isCommand()) 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.members.me.voice.channelId && interaction.member.voice.channelId !== interaction.guild.members.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\nAn explicit example:\n\n```js\nimport { Client, Intents } from \"discord.js\";\nimport { Player, PlayerOptions } from \"@bleah/discord-player\";\n\nconst client = new Client({\n  intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_VOICE_STATES]\n});\n\n/**\n * Player configuration example\n */\nconst player = new Player(client, {\n  // -----------------------------\n  // Voice / lifecycle behavior\n  // -----------------------------\n  /** Leave the voice channel automatically when the queue finishes. */\n  leaveOnEnd: true,\n\n  /** Wait (ms) after the queue ends before leaving (lets users enqueue quickly). */\n  leaveOnEndCooldown: 1500,\n\n  /** Leave when queue.stop() is called. */\n  leaveOnStop: true,\n\n  /** Leave if the voice channel becomes empty. */\n  leaveOnEmpty: true,\n\n  /** Wait (ms) before leaving on empty, in case users rejoin. */\n  leaveOnEmptyCooldown: 30000,\n\n  /** Self-deafen the bot to avoid feedback and reduce CPU usage. */\n  autoSelfDeaf: true,\n\n  // -----------------------------\n  // Playback & UX\n  // -----------------------------\n  /** Initial playback volume (0–100). */\n  initialVolume: 100,\n\n  /** Delay (ms) before starting playback to allow buffer to fill. */\n  bufferingTimeout: 3000,\n\n  /**\n   * If true, when a Spotify track has no direct stream,\n   * the player tries to find a YouTube equivalent.\n   */\n  spotifyBridge: true,\n\n  /** Disable software volume control (keeps raw audio level). */\n  disableVolume: false,\n\n  /**\n   * Smooth volume transitions (0..1). Small values (0.05–0.1)\n   * add a short fade instead of an instant jump. 0/undefined disables it.\n   */\n  volumeSmoothness: 0.08,\n\n  // -----------------------------\n  // yt-dlp network / auth hints\n  // -----------------------------\n  /**\n   * Network/auth hints forwarded to the yt-dlp bridge and (where possible) FFmpeg.\n   * Use only what you need. Cookies sources are mutually exclusive.\n   */\n  ytdlpAgent: {\n    /**\n     * Global proxy (http/https/socks). Example: \"http://user:pass@host:8080\"\n     * Leave undefined if you don't need a proxy.\n     */\n    proxyUri: undefined,\n\n    /**\n     * Pull cookies from a local browser profile ('chrome' | 'brave' | 'firefox' | 'edge').\n     * Helpful for age-gated or region-locked content.\n     */\n    cookiesFromBrowser: undefined,\n\n    /** Path to Netscape cookies.txt (used by yt-dlp --cookies). */\n    cookiesFile: undefined,\n\n    /** Path to cookies.json (array). Will be auto-converted to cookies.txt. */\n    cookiesJsonPath: undefined,\n\n    /**\n     * Raw 'Cookie' header (takes priority over 'cookies' when building request headers).\n     * If no other cookie sources are provided (browser/file/json),\n     * it will also be used to generate a temporary cookies.txt file (fallback)\n     * and is passed as an HTTP header.\n     */\n    cookiesHeader: undefined,\n\n    /**\n     * Cookies - supported in two main modes:\n     *\n     * (A) SIMPLE PAIRS / HEADER-LIKE  \n     *   - string: \"SID=xxx; HSID=yyy\"  \n     *   - object: { SID: \"xxx\", HSID: \"yyy\" }  \n     *   - array: [{ name: \"SID\", value: \"xxx\" }, ...]  \n     *   Behavior: a 'Cookie:' header is always forwarded to yt-dlp/FFmpeg, and a temporary\n     *   synthetic cookies.txt (with expires=0) is auto-generated to help bypass age-restricted videos.\n     *   These sessions are short-lived (hours to a few days) since no 'expires' or domain/path metadata is preserved.\n     *\n     * (B) FULL COOKIE ARRAY (persistent; preserves domain/path/secure/expires metadata)  \n     *   - array: [{ name, value, domain, path, secure, expires }, ...]  \n     *   Behavior: converted into a Netscape cookies.txt file preserving all attributes\n     *   (equivalent to what yt-dlp expects from '--cookies'). These sessions persist according\n     *   to each cookie’s own 'expires' timestamp — often days, weeks, or months.\n     *\n     * NOTES:\n     *  - JSON strings like \"[{...}]\" or \"{...}\" are NOT supported — use a real JS array instead.\n     *  - If 'cookiesFromBrowser', 'cookiesFile', or 'cookiesJsonPath' are provided, they take priority.\n     *  - A plain object like '{ SID: \"...\", HSID: \"...\" }' is treated as a simple map → mode (A).\n     *  - Priority (highest -> lowest):\n     *      cookiesFromBrowser > cookiesFile > cookiesJsonPath > full array > header/simple pairs\n     */\n    cookies: undefined,\n\n    /** If true, do not set a browser-like default User-Agent.\n     * Defaults to 'false'.\n     */\n    noUA: false,\n\n    /** Force IPv4 in yt-dlp requests (can help with some networks/ISPs).\n     * Defaults to 'false'.\n     */\n    forceIPv4: false,\n\n    /**\n     * If 'true', attempt to auto-detect a local browser profile (Chrome/Brave/Edge/Firefox)\n     * and instruct yt-dlp to use its cookies (equivalent to '--cookies-from-browser').\n     * - Useful to reuse an existing signed-in session without manually exporting cookies.\n     * - If detection fails or the option is 'false', no browser profile will be used.\n     * Defaults to 'true'.\n     */\n    autoCookiesFromBrowser: true\n  },\n\n  // -----------------------------\n  // Advanced hook (optional)\n  // -----------------------------\n  /**\n   * Runs before a stream is created. If you return a Readable,\n   * the player uses it instead of the default pipeline.\n   */\n  onBeforeCreateStream: async (track, source, queue) => undefined\n});\n\nclient.login(process.env.DISCORD_TOKEN);\n```\n\n## Supported websites\n\nBy default, @bleah/discord-player supports **YouTube**, **Spotify**, **SoundCloud** and **Attachment Links** streams only.\n\n### Optional dependencies\n\nDiscord Player provides an **Extractor API** that enables you to use your custom stream extractor with it.\n\n## Examples of bots made with Discord Player\n\nThese bots are made by the community, they can help you build your own!\n\n* **[Tau](https://github.com/dfxphoenix/Tau)** by [dFxPhoeniX](https://github.com/dfxphoenix)\n\n## Advanced\n\n### Smooth Volume\n\nDiscord Player will by default try to implement this. If smooth volume does not work, you need to add this line at the top of your main file:\n\n```js\n// CJS\nrequire(\"@bleah/discord-player/smoothVolume\");\n\n// ESM\nimport \"@bleah/discord-player/smoothVolume\"\n```\n\n> ⚠️ Make sure that line is situated at the **TOP** of your **main** file.\n\n### Use cookies\n\n```js\nconst player = new Player(client, {\n    ytdlpAgent: {\n        cookies: [\n          {\n            domain: \".youtube.com\",\n            expirationDate: 1234567890,\n            hostOnly: false,\n            httpOnly: true,\n            name: \"LOGIN_INFO\",\n            path: \"/\",\n            sameSite: \"no_restriction\",\n            secure: true,\n            session: false,\n            value: \"---xxx---\",\n          },\n          \"...\",\n        ]\n    }\n});\n```\n\n### Use custom proxy\n\n```js\nconst player = new Player(client, {\n    ytdlpAgent: {\n        proxyUri: 'http://user:password@127.0.0.1:80'\n    }\n});\n```\n\n### Use custom proxy with cookies\n\n```js\nconst player = new Player(client, {\n    ytdlpAgent: {\n        proxyUri: 'http://user:password@127.0.0.1:80',\n        cookies: [\n          {\n            domain: \".youtube.com\",\n            expirationDate: 1234567890,\n            hostOnly: false,\n            httpOnly: true,\n            name: \"LOGIN_INFO\",\n            path: \"/\",\n            sameSite: \"no_restriction\",\n            secure: true,\n            session: false,\n            value: \"---xxx---\",\n          },\n          \"...\",\n        ]\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#### How to get cookies\n\n- Install [Get cookies.txt LOCALLY](https://github.com/kairi003/Get-cookies.txt-LOCALLY) extension for your browser.\n- Go to [YouTube](https://www.youtube.com/).\n- Log in to your account. (You should use a new account for this purpose)\n- Change the export format to JSON.\n- Click on the extension icon and click \"Copy\" button.\n- Your cookie will be added to your clipboard and paste it into your code.\n\n### Custom stream Engine\n\nDiscord Player by default uses **[ytdlp-nodejs](https://github.com/iqbal-rashed/ytdlp-nodejs)** 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 ytdlp-nodejs.\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 @bleah/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"}