distube 4.0.0-dev.2 → 4.0.0-dev.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.d.ts +604 -8
- package/dist/index.js +2437 -22
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2375 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +72 -45
- package/dist/DisTube.d.ts +0 -54
- package/dist/DisTube.d.ts.map +0 -1
- package/dist/DisTube.js +0 -279
- package/dist/DisTube.js.map +0 -1
- package/dist/constant.d.ts +0 -27
- package/dist/constant.d.ts.map +0 -1
- package/dist/constant.js +0 -47
- package/dist/constant.js.map +0 -1
- package/dist/core/DisTubeBase.d.ts +0 -14
- package/dist/core/DisTubeBase.d.ts.map +0 -1
- package/dist/core/DisTubeBase.js +0 -31
- package/dist/core/DisTubeBase.js.map +0 -1
- package/dist/core/DisTubeHandler.d.ts +0 -27
- package/dist/core/DisTubeHandler.d.ts.map +0 -1
- package/dist/core/DisTubeHandler.js +0 -230
- package/dist/core/DisTubeHandler.js.map +0 -1
- package/dist/core/DisTubeOptions.d.ts +0 -23
- package/dist/core/DisTubeOptions.d.ts.map +0 -1
- package/dist/core/DisTubeOptions.js +0 -90
- package/dist/core/DisTubeOptions.js.map +0 -1
- package/dist/core/DisTubeStream.d.ts +0 -19
- package/dist/core/DisTubeStream.d.ts.map +0 -1
- package/dist/core/DisTubeStream.js +0 -72
- package/dist/core/DisTubeStream.js.map +0 -1
- package/dist/core/index.d.ts +0 -7
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -19
- package/dist/core/index.js.map +0 -1
- package/dist/core/manager/BaseManager.d.ts +0 -7
- package/dist/core/manager/BaseManager.d.ts.map +0 -1
- package/dist/core/manager/BaseManager.js +0 -16
- package/dist/core/manager/BaseManager.js.map +0 -1
- package/dist/core/manager/FilterManager.d.ts +0 -16
- package/dist/core/manager/FilterManager.d.ts.map +0 -1
- package/dist/core/manager/FilterManager.js +0 -88
- package/dist/core/manager/FilterManager.js.map +0 -1
- package/dist/core/manager/GuildIdManager.d.ts +0 -9
- package/dist/core/manager/GuildIdManager.d.ts.map +0 -1
- package/dist/core/manager/GuildIdManager.js +0 -25
- package/dist/core/manager/GuildIdManager.js.map +0 -1
- package/dist/core/manager/QueueManager.d.ts +0 -11
- package/dist/core/manager/QueueManager.d.ts.map +0 -1
- package/dist/core/manager/QueueManager.js +0 -172
- package/dist/core/manager/QueueManager.js.map +0 -1
- package/dist/core/manager/index.d.ts +0 -5
- package/dist/core/manager/index.d.ts.map +0 -1
- package/dist/core/manager/index.js +0 -17
- package/dist/core/manager/index.js.map +0 -1
- package/dist/core/voice/DisTubeVoice.d.ts +0 -32
- package/dist/core/voice/DisTubeVoice.d.ts.map +0 -1
- package/dist/core/voice/DisTubeVoice.js +0 -190
- package/dist/core/voice/DisTubeVoice.js.map +0 -1
- package/dist/core/voice/DisTubeVoiceManager.d.ts +0 -10
- package/dist/core/voice/DisTubeVoiceManager.d.ts.map +0 -1
- package/dist/core/voice/DisTubeVoiceManager.js +0 -36
- package/dist/core/voice/DisTubeVoiceManager.js.map +0 -1
- package/dist/core/voice/index.d.ts +0 -3
- package/dist/core/voice/index.d.ts.map +0 -1
- package/dist/core/voice/index.js +0 -15
- package/dist/core/voice/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/plugin/http.d.ts +0 -10
- package/dist/plugin/http.d.ts.map +0 -1
- package/dist/plugin/http.js +0 -18
- package/dist/plugin/http.js.map +0 -1
- package/dist/plugin/https.d.ts +0 -19
- package/dist/plugin/https.d.ts.map +0 -1
- package/dist/plugin/https.js +0 -47
- package/dist/plugin/https.js.map +0 -1
- package/dist/plugin/index.d.ts +0 -3
- package/dist/plugin/index.d.ts.map +0 -1
- package/dist/plugin/index.js +0 -15
- package/dist/plugin/index.js.map +0 -1
- package/dist/struct/CustomPlugin.d.ts +0 -10
- package/dist/struct/CustomPlugin.d.ts.map +0 -1
- package/dist/struct/CustomPlugin.js +0 -16
- package/dist/struct/CustomPlugin.js.map +0 -1
- package/dist/struct/DisTubeError.d.ts +0 -55
- package/dist/struct/DisTubeError.d.ts.map +0 -1
- package/dist/struct/DisTubeError.js +0 -64
- package/dist/struct/DisTubeError.js.map +0 -1
- package/dist/struct/ExtractorPlugin.d.ts +0 -13
- package/dist/struct/ExtractorPlugin.d.ts.map +0 -1
- package/dist/struct/ExtractorPlugin.js +0 -16
- package/dist/struct/ExtractorPlugin.js.map +0 -1
- package/dist/struct/Playlist.d.ts +0 -25
- package/dist/struct/Playlist.d.ts.map +0 -1
- package/dist/struct/Playlist.js +0 -77
- package/dist/struct/Playlist.js.map +0 -1
- package/dist/struct/Plugin.d.ts +0 -17
- package/dist/struct/Plugin.d.ts.map +0 -1
- package/dist/struct/Plugin.js +0 -37
- package/dist/struct/Plugin.js.map +0 -1
- package/dist/struct/Queue.d.ts +0 -49
- package/dist/struct/Queue.d.ts.map +0 -1
- package/dist/struct/Queue.js +0 -272
- package/dist/struct/Queue.js.map +0 -1
- package/dist/struct/SearchResult.d.ts +0 -19
- package/dist/struct/SearchResult.d.ts.map +0 -1
- package/dist/struct/SearchResult.js +0 -30
- package/dist/struct/SearchResult.js.map +0 -1
- package/dist/struct/Song.d.ts +0 -43
- package/dist/struct/Song.d.ts.map +0 -1
- package/dist/struct/Song.js +0 -138
- package/dist/struct/Song.js.map +0 -1
- package/dist/struct/TaskQueue.d.ts +0 -8
- package/dist/struct/TaskQueue.d.ts.map +0 -1
- package/dist/struct/TaskQueue.js +0 -39
- package/dist/struct/TaskQueue.js.map +0 -1
- package/dist/struct/index.d.ts +0 -10
- package/dist/struct/index.d.ts.map +0 -1
- package/dist/struct/index.js +0 -22
- package/dist/struct/index.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/type.d.ts +0 -104
- package/dist/type.d.ts.map +0 -1
- package/dist/type.js +0 -3
- package/dist/type.js.map +0 -1
- package/dist/util.d.ts +0 -22
- package/dist/util.d.ts.map +0 -1
- package/dist/util.js +0 -189
- package/dist/util.js.map +0 -1
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DisTubeStream = exports.chooseBestVideoFormat = void 0;
|
|
4
|
-
const __1 = require("..");
|
|
5
|
-
const prism_media_1 = require("prism-media");
|
|
6
|
-
const struct_1 = require("../struct");
|
|
7
|
-
const voice_1 = require("@discordjs/voice");
|
|
8
|
-
const chooseBestVideoFormat = (formats, isLive = false) => {
|
|
9
|
-
let filter = (format) => format.hasAudio;
|
|
10
|
-
if (isLive)
|
|
11
|
-
filter = (format) => format.hasAudio && format.isHLS;
|
|
12
|
-
formats = formats
|
|
13
|
-
.filter(filter)
|
|
14
|
-
.sort((a, b) => Number(b.audioBitrate) - Number(a.audioBitrate) || Number(a.bitrate) - Number(b.bitrate));
|
|
15
|
-
return formats.find(format => !format.hasVideo) || formats.sort((a, b) => Number(a.bitrate) - Number(b.bitrate))[0];
|
|
16
|
-
};
|
|
17
|
-
exports.chooseBestVideoFormat = chooseBestVideoFormat;
|
|
18
|
-
class DisTubeStream {
|
|
19
|
-
constructor(url, options) {
|
|
20
|
-
this.url = url;
|
|
21
|
-
this.type = voice_1.StreamType.Raw;
|
|
22
|
-
const args = [
|
|
23
|
-
"-reconnect",
|
|
24
|
-
"1",
|
|
25
|
-
"-reconnect_streamed",
|
|
26
|
-
"1",
|
|
27
|
-
"-reconnect_delay_max",
|
|
28
|
-
"5",
|
|
29
|
-
"-i",
|
|
30
|
-
url,
|
|
31
|
-
"-analyzeduration",
|
|
32
|
-
"0",
|
|
33
|
-
"-loglevel",
|
|
34
|
-
"0",
|
|
35
|
-
"-ar",
|
|
36
|
-
"48000",
|
|
37
|
-
"-ac",
|
|
38
|
-
"2",
|
|
39
|
-
"-f",
|
|
40
|
-
"s16le",
|
|
41
|
-
];
|
|
42
|
-
if (typeof options.seek === "number" && options.seek > 0) {
|
|
43
|
-
args.unshift("-ss", options.seek.toString());
|
|
44
|
-
}
|
|
45
|
-
if (Array.isArray(options.ffmpegArgs)) {
|
|
46
|
-
args.push(...options.ffmpegArgs);
|
|
47
|
-
}
|
|
48
|
-
this.stream = new prism_media_1.FFmpeg({ args, shell: false });
|
|
49
|
-
}
|
|
50
|
-
static YouTube(formats, options = {}) {
|
|
51
|
-
if (!formats || !formats.length)
|
|
52
|
-
throw new struct_1.DisTubeError("UNAVAILABLE_VIDEO");
|
|
53
|
-
if (!options || typeof options !== "object" || Array.isArray(options)) {
|
|
54
|
-
throw new struct_1.DisTubeError("INVALID_TYPE", "object", options, "options");
|
|
55
|
-
}
|
|
56
|
-
const bestFormat = (0, exports.chooseBestVideoFormat)(formats, options.isLive);
|
|
57
|
-
if (!bestFormat)
|
|
58
|
-
throw new struct_1.DisTubeError("UNPLAYABLE_FORMATS");
|
|
59
|
-
return new DisTubeStream(bestFormat.url, options);
|
|
60
|
-
}
|
|
61
|
-
static DirectLink(url, options = {}) {
|
|
62
|
-
if (!options || typeof options !== "object" || Array.isArray(options)) {
|
|
63
|
-
throw new struct_1.DisTubeError("INVALID_TYPE", "object", options, "options");
|
|
64
|
-
}
|
|
65
|
-
if (typeof url !== "string" || !(0, __1.isURL)(url)) {
|
|
66
|
-
throw new struct_1.DisTubeError("INVALID_TYPE", "an URL", url);
|
|
67
|
-
}
|
|
68
|
-
return new DisTubeStream(url, options);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
exports.DisTubeStream = DisTubeStream;
|
|
72
|
-
//# sourceMappingURL=DisTubeStream.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DisTubeStream.js","sourceRoot":"","sources":["../../src/core/DisTubeStream.ts"],"names":[],"mappings":"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","sourcesContent":["import { isURL } from \"..\";\nimport { FFmpeg } from \"prism-media\";\nimport { DisTubeError } from \"../struct\";\nimport { StreamType } from \"@discordjs/voice\";\nimport type ytdl from \"@distube/ytdl-core\";\n\ninterface StreamOptions {\n /**\n * Time to seek in seconds\n */\n seek?: number;\n /**\n * Additional FFmpeg arguments\n */\n ffmpegArgs?: string[];\n /**\n * If the stream url is live\n */\n isLive?: boolean;\n}\n\nexport const chooseBestVideoFormat = (formats: ytdl.videoFormat[], isLive = false) => {\n let filter = (format: ytdl.videoFormat) => format.hasAudio;\n if (isLive) filter = (format: ytdl.videoFormat) => format.hasAudio && format.isHLS;\n formats = formats\n .filter(filter)\n .sort((a, b) => Number(b.audioBitrate) - Number(a.audioBitrate) || Number(a.bitrate) - Number(b.bitrate));\n return formats.find(format => !format.hasVideo) || formats.sort((a, b) => Number(a.bitrate) - Number(b.bitrate))[0];\n};\n\n/**\n * Create a stream to play with {@link DisTubeVoice}\n * @private\n */\nexport class DisTubeStream {\n /**\n * Create a stream from ytdl video formats\n * @param {ytdl.videoFormat[]} formats ytdl video formats\n * @param {StreamOptions} options options\n * @returns {DisTubeStream}\n * @private\n */\n static YouTube(formats: ytdl.videoFormat[] | undefined, options: StreamOptions = {}): DisTubeStream {\n if (!formats || !formats.length) throw new DisTubeError(\"UNAVAILABLE_VIDEO\");\n if (!options || typeof options !== \"object\" || Array.isArray(options)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"object\", options, \"options\");\n }\n const bestFormat = chooseBestVideoFormat(formats, options.isLive);\n if (!bestFormat) throw new DisTubeError(\"UNPLAYABLE_FORMATS\");\n return new DisTubeStream(bestFormat.url, options);\n }\n /**\n * Create a stream from a stream url\n * @param {string} url stream url\n * @param {StreamOptions} options options\n * @returns {DisTubeStream}\n * @private\n */\n static DirectLink(url: string, options: StreamOptions = {}): DisTubeStream {\n if (!options || typeof options !== \"object\" || Array.isArray(options)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"object\", options, \"options\");\n }\n if (typeof url !== \"string\" || !isURL(url)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"an URL\", url);\n }\n return new DisTubeStream(url, options);\n }\n type: StreamType.Raw;\n stream: FFmpeg;\n url: string;\n /**\n * Create a DisTubeStream to play with {@link DisTubeVoice}\n * @param {string} url Stream URL\n * @param {StreamOptions} options Stream options\n * @private\n */\n constructor(url: string, options: StreamOptions) {\n /**\n * Stream URL\n * @type {string}\n */\n this.url = url;\n /**\n * Stream type\n * @type {DiscordVoice.StreamType.Raw}\n */\n this.type = StreamType.Raw;\n const args = [\n \"-reconnect\",\n \"1\",\n \"-reconnect_streamed\",\n \"1\",\n \"-reconnect_delay_max\",\n \"5\",\n \"-i\",\n url,\n \"-analyzeduration\",\n \"0\",\n \"-loglevel\",\n \"0\",\n \"-ar\",\n \"48000\",\n \"-ac\",\n \"2\",\n \"-f\",\n \"s16le\",\n ];\n if (typeof options.seek === \"number\" && options.seek > 0) {\n args.unshift(\"-ss\", options.seek.toString());\n }\n if (Array.isArray(options.ffmpegArgs)) {\n args.push(...options.ffmpegArgs);\n }\n /**\n * FFmpeg stream (Duplex)\n * @type {FFmpeg}\n */\n this.stream = new FFmpeg({ args, shell: false });\n }\n}\n"]}
|
package/dist/core/index.d.ts
DELETED
package/dist/core/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC"}
|
package/dist/core/index.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./DisTubeOptions"), exports);
|
|
14
|
-
__exportStar(require("./DisTubeBase"), exports);
|
|
15
|
-
__exportStar(require("./DisTubeStream"), exports);
|
|
16
|
-
__exportStar(require("./manager"), exports);
|
|
17
|
-
__exportStar(require("./voice"), exports);
|
|
18
|
-
__exportStar(require("./DisTubeHandler"), exports);
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
package/dist/core/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAiC;AACjC,gDAA8B;AAC9B,kDAAgC;AAChC,4CAA0B;AAC1B,0CAAwB;AACxB,mDAAiC","sourcesContent":["export * from \"./DisTubeOptions\";\nexport * from \"./DisTubeBase\";\nexport * from \"./DisTubeStream\";\nexport * from \"./manager\";\nexport * from \"./voice\";\nexport * from \"./DisTubeHandler\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseManager.d.ts","sourceRoot":"","sources":["../../../src/core/manager/BaseManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQxC,8BAAsB,WAAW,CAAC,CAAC,CAAE,SAAQ,WAAW;IAKtD,UAAU,wBAA+B;IAMzC,IAAI,IAAI,WAEP;CACF"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BaseManager = void 0;
|
|
4
|
-
const __1 = require("..");
|
|
5
|
-
const discord_js_1 = require("discord.js");
|
|
6
|
-
class BaseManager extends __1.DisTubeBase {
|
|
7
|
-
constructor() {
|
|
8
|
-
super(...arguments);
|
|
9
|
-
this.collection = new discord_js_1.Collection();
|
|
10
|
-
}
|
|
11
|
-
get size() {
|
|
12
|
-
return this.collection.size;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.BaseManager = BaseManager;
|
|
16
|
-
//# sourceMappingURL=BaseManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseManager.js","sourceRoot":"","sources":["../../../src/core/manager/BaseManager.ts"],"names":[],"mappings":";;;AAAA,0BAAiC;AACjC,2CAAwC;AAQxC,MAAsB,WAAe,SAAQ,eAAW;IAAxD;;QAKE,eAAU,GAAG,IAAI,uBAAU,EAAa,CAAC;IAS3C,CAAC;IAHC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;CACF;AAdD,kCAcC","sourcesContent":["import { DisTubeBase } from \"..\";\nimport { Collection } from \"discord.js\";\n\n/**\n * Manages the collection of a data model.\n * @abstract\n * @private\n * @extends DisTubeBase\n */\nexport abstract class BaseManager<V> extends DisTubeBase {\n /**\n * The collection of items for this manager.\n * @type {Discord.Collection}\n */\n collection = new Collection<string, V>();\n /**\n * The size of the collection.\n * @type {Discord.Collection}\n * @abstract\n */\n get size() {\n return this.collection.size;\n }\n}\n"]}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { BaseManager } from ".";
|
|
2
|
-
import type { DisTube, FilterResolvable, Queue } from "../..";
|
|
3
|
-
export declare class FilterManager extends BaseManager<FilterResolvable> {
|
|
4
|
-
#private;
|
|
5
|
-
queue: Queue;
|
|
6
|
-
constructor(distube: DisTube, queue: Queue);
|
|
7
|
-
add(filterOrFilters: FilterResolvable | FilterResolvable[], override?: boolean): this;
|
|
8
|
-
clear(): this;
|
|
9
|
-
set(filters: FilterResolvable[]): this;
|
|
10
|
-
remove(filterOrFilters: FilterResolvable | FilterResolvable[]): this;
|
|
11
|
-
has(filter: FilterResolvable): boolean;
|
|
12
|
-
get names(): string[];
|
|
13
|
-
get values(): string[];
|
|
14
|
-
toString(): string;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=FilterManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FilterManager.d.ts","sourceRoot":"","sources":["../../../src/core/manager/FilterManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC;AAEhC,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAM9D,qBAAa,aAAc,SAAQ,WAAW,CAAC,gBAAgB,CAAC;;IAC9D,KAAK,EAAE,KAAK,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK;IAmC1C,GAAG,CAAC,eAAe,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,EAAE,QAAQ,UAAQ;IA2B5E,KAAK;IASL,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE;IAe/B,MAAM,CAAC,eAAe,EAAE,gBAAgB,GAAG,gBAAgB,EAAE;IAa7D,GAAG,CAAC,MAAM,EAAE,gBAAgB;IAS5B,IAAI,KAAK,aAER;IAED,IAAI,MAAM,aAET;IAED,QAAQ;CAGT"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
-
};
|
|
7
|
-
var _FilterManager_instances, _FilterManager_validate, _FilterManager_resolveName, _FilterManager_resolveValue, _FilterManager_apply;
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.FilterManager = void 0;
|
|
10
|
-
const _1 = require(".");
|
|
11
|
-
const __1 = require("../..");
|
|
12
|
-
class FilterManager extends _1.BaseManager {
|
|
13
|
-
constructor(distube, queue) {
|
|
14
|
-
super(distube);
|
|
15
|
-
_FilterManager_instances.add(this);
|
|
16
|
-
this.queue = queue;
|
|
17
|
-
}
|
|
18
|
-
add(filterOrFilters, override = false) {
|
|
19
|
-
if (Array.isArray(filterOrFilters)) {
|
|
20
|
-
const resolvedFilters = filterOrFilters.map(f => __classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_validate).call(this, f));
|
|
21
|
-
const newFilters = resolvedFilters
|
|
22
|
-
.reduceRight((unique, o) => {
|
|
23
|
-
if (!unique.some((obj) => obj === o && obj.name === o) &&
|
|
24
|
-
!unique.some((obj) => obj !== o.name && obj.name !== o.name)) {
|
|
25
|
-
if (!this.has(o))
|
|
26
|
-
unique.push(o);
|
|
27
|
-
if (this.has(o) && override) {
|
|
28
|
-
this.remove(o);
|
|
29
|
-
unique.push(o);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return unique;
|
|
33
|
-
}, [])
|
|
34
|
-
.reverse();
|
|
35
|
-
return this.set([...this.collection.values(), ...newFilters]);
|
|
36
|
-
}
|
|
37
|
-
return this.set([...this.collection.values(), filterOrFilters]);
|
|
38
|
-
}
|
|
39
|
-
clear() {
|
|
40
|
-
return this.set([]);
|
|
41
|
-
}
|
|
42
|
-
set(filters) {
|
|
43
|
-
this.collection.clear();
|
|
44
|
-
for (const filter of filters) {
|
|
45
|
-
const resolved = __classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_validate).call(this, filter);
|
|
46
|
-
this.collection.set(__classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_resolveName).call(this, resolved), resolved);
|
|
47
|
-
}
|
|
48
|
-
__classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_apply).call(this);
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
remove(filterOrFilters) {
|
|
52
|
-
const remove = (f) => this.collection.delete(__classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_resolveName).call(this, __classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_validate).call(this, f)));
|
|
53
|
-
if (Array.isArray(filterOrFilters))
|
|
54
|
-
filterOrFilters.map(remove);
|
|
55
|
-
else
|
|
56
|
-
remove(filterOrFilters);
|
|
57
|
-
__classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_apply).call(this);
|
|
58
|
-
return this;
|
|
59
|
-
}
|
|
60
|
-
has(filter) {
|
|
61
|
-
return this.collection.has(__classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_resolveName).call(this, filter));
|
|
62
|
-
}
|
|
63
|
-
get names() {
|
|
64
|
-
return this.collection.map(f => __classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_resolveName).call(this, f));
|
|
65
|
-
}
|
|
66
|
-
get values() {
|
|
67
|
-
return this.collection.map(f => __classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_resolveValue).call(this, f));
|
|
68
|
-
}
|
|
69
|
-
toString() {
|
|
70
|
-
return this.names.toString();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
exports.FilterManager = FilterManager;
|
|
74
|
-
_FilterManager_instances = new WeakSet(), _FilterManager_validate = function _FilterManager_validate(filter) {
|
|
75
|
-
if ((typeof filter === "string" && Object.prototype.hasOwnProperty.call(this.distube.filters, filter)) ||
|
|
76
|
-
(typeof filter === "object" && typeof filter.name === "string" && typeof filter.value === "string")) {
|
|
77
|
-
return filter;
|
|
78
|
-
}
|
|
79
|
-
throw new __1.DisTubeError("INVALID_TYPE", "FilterResolvable", filter, "filter");
|
|
80
|
-
}, _FilterManager_resolveName = function _FilterManager_resolveName(filter) {
|
|
81
|
-
return typeof filter === "string" ? filter : filter.name;
|
|
82
|
-
}, _FilterManager_resolveValue = function _FilterManager_resolveValue(filter) {
|
|
83
|
-
return typeof filter === "string" ? this.distube.filters[filter] : filter.value;
|
|
84
|
-
}, _FilterManager_apply = function _FilterManager_apply() {
|
|
85
|
-
this.queue.beginTime = this.queue.currentTime;
|
|
86
|
-
this.queues.playSong(this.queue);
|
|
87
|
-
};
|
|
88
|
-
//# sourceMappingURL=FilterManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FilterManager.js","sourceRoot":"","sources":["../../../src/core/manager/FilterManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseManager } from \".\";\nimport { DisTubeError } from \"../..\";\nimport type { DisTube, FilterResolvable, Queue } from \"../..\";\n\n/**\n * Manage filters of a playing {@link Queue}\n * @extends {BaseManager}\n */\nexport class FilterManager extends BaseManager<FilterResolvable> {\n queue: Queue;\n constructor(distube: DisTube, queue: Queue) {\n super(distube);\n this.queue = queue;\n }\n\n #validate(filter: FilterResolvable): FilterResolvable {\n if (\n (typeof filter === \"string\" && Object.prototype.hasOwnProperty.call(this.distube.filters, filter)) ||\n (typeof filter === \"object\" && typeof filter.name === \"string\" && typeof filter.value === \"string\")\n ) {\n return filter;\n }\n\n throw new DisTubeError(\"INVALID_TYPE\", \"FilterResolvable\", filter, \"filter\");\n }\n\n #resolveName(filter: FilterResolvable): string {\n return typeof filter === \"string\" ? filter : filter.name;\n }\n\n #resolveValue(filter: FilterResolvable): string {\n return typeof filter === \"string\" ? this.distube.filters[filter] : filter.value;\n }\n\n #apply() {\n this.queue.beginTime = this.queue.currentTime;\n this.queues.playSong(this.queue);\n }\n\n /**\n * Enable a filter or multiple filters to the manager\n * @param {FilterResolvable|FilterResolvable[]} filterOrFilters The filter or filters to enable\n * @param {boolean} [override=false] Wether or not override the applied filter with new filter value\n * @returns {FilterManager}\n */\n add(filterOrFilters: FilterResolvable | FilterResolvable[], override = false) {\n if (Array.isArray(filterOrFilters)) {\n const resolvedFilters = filterOrFilters.map(f => this.#validate(f));\n const newFilters = resolvedFilters\n .reduceRight((unique, o: any) => {\n if (\n !unique.some((obj: any) => obj === o && obj.name === o) &&\n !unique.some((obj: any) => obj !== o.name && obj.name !== o.name)\n ) {\n if (!this.has(o)) unique.push(o);\n if (this.has(o) && override) {\n this.remove(o);\n unique.push(o);\n }\n }\n return unique;\n }, [] as FilterResolvable[])\n .reverse();\n return this.set([...this.collection.values(), ...newFilters]);\n }\n return this.set([...this.collection.values(), filterOrFilters]);\n }\n\n /**\n * Clear enabled filters of the manager\n * @returns {FilterManager}\n */\n clear() {\n return this.set([]);\n }\n\n /**\n * Set the filters applied to the manager\n * @param {FilterResolvable[]} filters The filters to apply\n * @returns {FilterManager}\n */\n set(filters: FilterResolvable[]) {\n this.collection.clear();\n for (const filter of filters) {\n const resolved = this.#validate(filter);\n this.collection.set(this.#resolveName(resolved), resolved);\n }\n this.#apply();\n return this;\n }\n\n /**\n * Disable a filter or multiple filters\n * @param {FilterResolvable|FilterResolvable[]} filterOrFilters The filter or filters to disable\n * @returns {FilterManager}\n */\n remove(filterOrFilters: FilterResolvable | FilterResolvable[]) {\n const remove = (f: FilterResolvable) => this.collection.delete(this.#resolveName(this.#validate(f)));\n if (Array.isArray(filterOrFilters)) filterOrFilters.map(remove);\n else remove(filterOrFilters);\n this.#apply();\n return this;\n }\n\n /**\n * Check whether a filter enabled or not\n * @param {FilterResolvable} filter The filter to check\n * @returns {boolean}\n */\n has(filter: FilterResolvable) {\n return this.collection.has(this.#resolveName(filter));\n }\n\n /**\n * Array of enabled filter name\n * @type {Array<string>}\n * @readonly\n */\n get names() {\n return this.collection.map(f => this.#resolveName(f));\n }\n\n get values() {\n return this.collection.map(f => this.#resolveValue(f));\n }\n\n toString() {\n return this.names.toString();\n }\n}\n"]}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { BaseManager } from ".";
|
|
2
|
-
import type { GuildIdResolvable } from "../..";
|
|
3
|
-
export declare abstract class GuildIdManager<V> extends BaseManager<V> {
|
|
4
|
-
add(idOrInstance: GuildIdResolvable, data: V): this | import("@discordjs/collection").Collection<string, V>;
|
|
5
|
-
get(idOrInstance: GuildIdResolvable): V | undefined;
|
|
6
|
-
remove(idOrInstance: GuildIdResolvable): boolean;
|
|
7
|
-
has(idOrInstance: GuildIdResolvable): boolean;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=GuildIdManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GuildIdManager.d.ts","sourceRoot":"","sources":["../../../src/core/manager/GuildIdManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC;AAEhC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAQ/C,8BAAsB,cAAc,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC5D,GAAG,CAAC,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAM5C,GAAG,CAAC,YAAY,EAAE,iBAAiB,GAAG,CAAC,GAAG,SAAS;IAGnD,MAAM,CAAC,YAAY,EAAE,iBAAiB,GAAG,OAAO;IAGhD,GAAG,CAAC,YAAY,EAAE,iBAAiB,GAAG,OAAO;CAG9C"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GuildIdManager = void 0;
|
|
4
|
-
const _1 = require(".");
|
|
5
|
-
const __1 = require("../..");
|
|
6
|
-
class GuildIdManager extends _1.BaseManager {
|
|
7
|
-
add(idOrInstance, data) {
|
|
8
|
-
const id = (0, __1.resolveGuildId)(idOrInstance);
|
|
9
|
-
const existing = this.get(id);
|
|
10
|
-
if (existing)
|
|
11
|
-
return this;
|
|
12
|
-
return this.collection.set(id, data);
|
|
13
|
-
}
|
|
14
|
-
get(idOrInstance) {
|
|
15
|
-
return this.collection.get((0, __1.resolveGuildId)(idOrInstance));
|
|
16
|
-
}
|
|
17
|
-
remove(idOrInstance) {
|
|
18
|
-
return this.collection.delete((0, __1.resolveGuildId)(idOrInstance));
|
|
19
|
-
}
|
|
20
|
-
has(idOrInstance) {
|
|
21
|
-
return this.collection.has((0, __1.resolveGuildId)(idOrInstance));
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
exports.GuildIdManager = GuildIdManager;
|
|
25
|
-
//# sourceMappingURL=GuildIdManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GuildIdManager.js","sourceRoot":"","sources":["../../../src/core/manager/GuildIdManager.ts"],"names":[],"mappings":";;;AAAA,wBAAgC;AAChC,6BAAuC;AASvC,MAAsB,cAAkB,SAAQ,cAAc;IAC5D,GAAG,CAAC,YAA+B,EAAE,IAAO;QAC1C,MAAM,EAAE,GAAG,IAAA,kBAAc,EAAC,YAAY,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,GAAG,CAAC,YAA+B;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAA,kBAAc,EAAC,YAAY,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,CAAC,YAA+B;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAA,kBAAc,EAAC,YAAY,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,GAAG,CAAC,YAA+B;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAA,kBAAc,EAAC,YAAY,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF;AAhBD,wCAgBC","sourcesContent":["import { BaseManager } from \".\";\nimport { resolveGuildId } from \"../..\";\nimport type { GuildIdResolvable } from \"../..\";\n\n/**\n * Manages the collection of a data model paired with a guild id.\n * @abstract\n * @private\n * @extends BaseManager\n */\nexport abstract class GuildIdManager<V> extends BaseManager<V> {\n add(idOrInstance: GuildIdResolvable, data: V) {\n const id = resolveGuildId(idOrInstance);\n const existing = this.get(id);\n if (existing) return this;\n return this.collection.set(id, data);\n }\n get(idOrInstance: GuildIdResolvable): V | undefined {\n return this.collection.get(resolveGuildId(idOrInstance));\n }\n remove(idOrInstance: GuildIdResolvable): boolean {\n return this.collection.delete(resolveGuildId(idOrInstance));\n }\n has(idOrInstance: GuildIdResolvable): boolean {\n return this.collection.has(resolveGuildId(idOrInstance));\n }\n}\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { GuildIdManager } from ".";
|
|
2
|
-
import { DisTubeStream, Queue } from "../..";
|
|
3
|
-
import type { Song } from "../..";
|
|
4
|
-
import type { GuildTextBasedChannel, VoiceBasedChannel } from "discord.js";
|
|
5
|
-
export declare class QueueManager extends GuildIdManager<Queue> {
|
|
6
|
-
#private;
|
|
7
|
-
create(channel: VoiceBasedChannel, song: Song[] | Song, textChannel?: GuildTextBasedChannel): Promise<Queue | true>;
|
|
8
|
-
createStream(queue: Queue): DisTubeStream;
|
|
9
|
-
playSong(queue: Queue): Promise<boolean>;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=QueueManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QueueManager.d.ts","sourceRoot":"","sources":["../../../src/core/manager/QueueManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC;AACnC,OAAO,EAAgB,aAAa,EAAE,KAAK,EAAc,MAAM,OAAO,CAAC;AACvE,OAAO,KAAK,EAAsB,IAAI,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAM3E,qBAAa,YAAa,SAAQ,cAAc,CAAC,KAAK,CAAC;;IAc/C,MAAM,CACV,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EACnB,WAAW,CAAC,EAAE,qBAAqB,GAClC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAoHxB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa;IAenC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;CA8C/C"}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
-
};
|
|
7
|
-
var _QueueManager_instances, _QueueManager_voiceEventHandler, _QueueManager_handleSongFinish, _QueueManager_handlePlayingError, _QueueManager_emitPlaySong;
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.QueueManager = void 0;
|
|
10
|
-
const _1 = require(".");
|
|
11
|
-
const __1 = require("../..");
|
|
12
|
-
class QueueManager extends _1.GuildIdManager {
|
|
13
|
-
constructor() {
|
|
14
|
-
super(...arguments);
|
|
15
|
-
_QueueManager_instances.add(this);
|
|
16
|
-
}
|
|
17
|
-
async create(channel, song, textChannel) {
|
|
18
|
-
if (this.has(channel.guild.id))
|
|
19
|
-
throw new __1.DisTubeError("QUEUE_EXIST");
|
|
20
|
-
const voice = this.voices.create(channel);
|
|
21
|
-
const queue = new __1.Queue(this.distube, voice, song, textChannel);
|
|
22
|
-
await queue._taskQueue.queuing();
|
|
23
|
-
try {
|
|
24
|
-
await voice.join();
|
|
25
|
-
__classPrivateFieldGet(this, _QueueManager_instances, "m", _QueueManager_voiceEventHandler).call(this, queue);
|
|
26
|
-
this.add(queue.id, queue);
|
|
27
|
-
this.emit("initQueue", queue);
|
|
28
|
-
const err = await this.playSong(queue);
|
|
29
|
-
return err || queue;
|
|
30
|
-
}
|
|
31
|
-
finally {
|
|
32
|
-
queue._taskQueue.resolve();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
createStream(queue) {
|
|
36
|
-
const { duration, formats, isLive, source, streamURL } = queue.songs[0];
|
|
37
|
-
const ffmpegArgs = queue.filters.size ? ["-af", queue.filters.values.join(",")] : undefined;
|
|
38
|
-
const seek = duration ? queue.beginTime : undefined;
|
|
39
|
-
const streamOptions = { ffmpegArgs, seek, isLive };
|
|
40
|
-
if (source === "youtube")
|
|
41
|
-
return __1.DisTubeStream.YouTube(formats, streamOptions);
|
|
42
|
-
return __1.DisTubeStream.DirectLink(streamURL, streamOptions);
|
|
43
|
-
}
|
|
44
|
-
async playSong(queue) {
|
|
45
|
-
if (!queue)
|
|
46
|
-
return true;
|
|
47
|
-
if (!queue.songs.length) {
|
|
48
|
-
queue.stop();
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
if (queue.stopped)
|
|
52
|
-
return false;
|
|
53
|
-
const song = queue.songs[0];
|
|
54
|
-
try {
|
|
55
|
-
const { url, source, formats, streamURL } = song;
|
|
56
|
-
if (source === "youtube" && !formats)
|
|
57
|
-
song._patchYouTube(await this.handler.getYouTubeInfo(url));
|
|
58
|
-
if (source !== "youtube" && !streamURL) {
|
|
59
|
-
for (const plugin of [...this.distube.extractorPlugins, ...this.distube.customPlugins]) {
|
|
60
|
-
if (await plugin.validate(url)) {
|
|
61
|
-
const info = [plugin.getStreamURL(url), plugin.getRelatedSongs(url)];
|
|
62
|
-
const result = await Promise.all(info);
|
|
63
|
-
song.streamURL = result[0];
|
|
64
|
-
song.related = result[1];
|
|
65
|
-
break;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
const stream = this.createStream(queue);
|
|
70
|
-
queue.voice.play(stream);
|
|
71
|
-
song.streamURL = stream.url;
|
|
72
|
-
if (queue.stopped)
|
|
73
|
-
queue.stop();
|
|
74
|
-
else if (queue.paused)
|
|
75
|
-
queue.voice.pause();
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
catch (e) {
|
|
79
|
-
__classPrivateFieldGet(this, _QueueManager_instances, "m", _QueueManager_handlePlayingError).call(this, queue, e);
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
exports.QueueManager = QueueManager;
|
|
85
|
-
_QueueManager_instances = new WeakSet(), _QueueManager_voiceEventHandler = function _QueueManager_voiceEventHandler(queue) {
|
|
86
|
-
queue._listeners = {
|
|
87
|
-
disconnect: error => {
|
|
88
|
-
queue.remove();
|
|
89
|
-
this.emit("disconnect", queue);
|
|
90
|
-
if (error)
|
|
91
|
-
this.emitError(error, queue.textChannel);
|
|
92
|
-
},
|
|
93
|
-
error: error => __classPrivateFieldGet(this, _QueueManager_instances, "m", _QueueManager_handlePlayingError).call(this, queue, error),
|
|
94
|
-
finish: () => __classPrivateFieldGet(this, _QueueManager_instances, "m", _QueueManager_handleSongFinish).call(this, queue),
|
|
95
|
-
};
|
|
96
|
-
for (const event of Object.keys(queue._listeners)) {
|
|
97
|
-
queue.voice.on(event, queue._listeners[event]);
|
|
98
|
-
}
|
|
99
|
-
}, _QueueManager_handleSongFinish = async function _QueueManager_handleSongFinish(queue) {
|
|
100
|
-
this.emit("finishSong", queue, queue.songs[0]);
|
|
101
|
-
await queue._taskQueue.queuing();
|
|
102
|
-
try {
|
|
103
|
-
if (queue.stopped)
|
|
104
|
-
return;
|
|
105
|
-
if (queue.repeatMode === __1.RepeatMode.QUEUE && !queue._prev)
|
|
106
|
-
queue.songs.push(queue.songs[0]);
|
|
107
|
-
if (queue._prev) {
|
|
108
|
-
if (queue.repeatMode === __1.RepeatMode.QUEUE)
|
|
109
|
-
queue.songs.unshift(queue.songs.pop());
|
|
110
|
-
else
|
|
111
|
-
queue.songs.unshift(queue.previousSongs.pop());
|
|
112
|
-
}
|
|
113
|
-
if (queue.songs.length <= 1 && (queue._next || queue.repeatMode === __1.RepeatMode.DISABLED)) {
|
|
114
|
-
if (queue.autoplay) {
|
|
115
|
-
try {
|
|
116
|
-
await queue.addRelatedSong();
|
|
117
|
-
}
|
|
118
|
-
catch {
|
|
119
|
-
this.emit("noRelated", queue);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
if (queue.songs.length <= 1) {
|
|
123
|
-
if (this.options.leaveOnFinish)
|
|
124
|
-
queue.voice.leave();
|
|
125
|
-
if (!queue.autoplay)
|
|
126
|
-
this.emit("finish", queue);
|
|
127
|
-
queue.remove();
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
const emitPlaySong = __classPrivateFieldGet(this, _QueueManager_instances, "m", _QueueManager_emitPlaySong).call(this, queue);
|
|
132
|
-
if (!queue._prev && (queue.repeatMode !== __1.RepeatMode.SONG || queue._next)) {
|
|
133
|
-
const prev = queue.songs.shift();
|
|
134
|
-
delete prev.formats;
|
|
135
|
-
delete prev.streamURL;
|
|
136
|
-
if (this.options.savePreviousSongs)
|
|
137
|
-
queue.previousSongs.push(prev);
|
|
138
|
-
else
|
|
139
|
-
queue.previousSongs.push({ id: prev.id });
|
|
140
|
-
}
|
|
141
|
-
queue._next = queue._prev = false;
|
|
142
|
-
queue.beginTime = 0;
|
|
143
|
-
const err = await this.playSong(queue);
|
|
144
|
-
if (!err && emitPlaySong)
|
|
145
|
-
this.emit("playSong", queue, queue.songs[0]);
|
|
146
|
-
}
|
|
147
|
-
finally {
|
|
148
|
-
queue._taskQueue.resolve();
|
|
149
|
-
}
|
|
150
|
-
}, _QueueManager_handlePlayingError = function _QueueManager_handlePlayingError(queue, error) {
|
|
151
|
-
const song = queue.songs.shift();
|
|
152
|
-
try {
|
|
153
|
-
error.name = "PlayingError";
|
|
154
|
-
error.message = `${error.message}\nId: ${song.id}\nName: ${song.name}`;
|
|
155
|
-
}
|
|
156
|
-
catch { }
|
|
157
|
-
this.emitError(error, queue.textChannel);
|
|
158
|
-
if (queue.songs.length > 0) {
|
|
159
|
-
this.playSong(queue).then(e => {
|
|
160
|
-
if (!e)
|
|
161
|
-
this.emit("playSong", queue, queue.songs[0]);
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
queue.stop();
|
|
166
|
-
}
|
|
167
|
-
}, _QueueManager_emitPlaySong = function _QueueManager_emitPlaySong(queue) {
|
|
168
|
-
return (!this.options.emitNewSongOnly ||
|
|
169
|
-
(queue.repeatMode === __1.RepeatMode.SONG && queue._next) ||
|
|
170
|
-
(queue.repeatMode !== __1.RepeatMode.SONG && queue.songs[0]?.id !== queue.songs[1]?.id));
|
|
171
|
-
};
|
|
172
|
-
//# sourceMappingURL=QueueManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QueueManager.js","sourceRoot":"","sources":["../../../src/core/manager/QueueManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { GuildIdManager } from \".\";\nimport { DisTubeError, DisTubeStream, Queue, RepeatMode } from \"../..\";\nimport type { DisTubeVoiceEvents, Song } from \"../..\";\nimport type { GuildTextBasedChannel, VoiceBasedChannel } from \"discord.js\";\n\n/**\n * Queue manager\n * @extends GuildIdManager\n */\nexport class QueueManager extends GuildIdManager<Queue> {\n /**\n * Collection of {@link Queue}.\n * @name QueueManager#collection\n * @type {Discord.Collection<string, Queue>}\n */\n /**\n * Create a {@link Queue}\n * @private\n * @param {Discord.BaseGuildVoiceChannel} channel A voice channel\n * @param {Song|Song[]} song First song\n * @param {Discord.BaseGuildTextChannel} textChannel Default text channel\n * @returns {Promise<Queue|true>} Returns `true` if encounter an error\n */\n async create(\n channel: VoiceBasedChannel,\n song: Song[] | Song,\n textChannel?: GuildTextBasedChannel,\n ): Promise<Queue | true> {\n if (this.has(channel.guild.id)) throw new DisTubeError(\"QUEUE_EXIST\");\n const voice = this.voices.create(channel);\n const queue = new Queue(this.distube, voice, song, textChannel);\n await queue._taskQueue.queuing();\n try {\n await voice.join();\n this.#voiceEventHandler(queue);\n this.add(queue.id, queue);\n this.emit(\"initQueue\", queue);\n const err = await this.playSong(queue);\n return err || queue;\n } finally {\n queue._taskQueue.resolve();\n }\n }\n /**\n * Get a Queue from this QueueManager.\n * @method get\n * @memberof QueueManager#\n * @param {GuildIdResolvable} guild Resolvable thing from a guild\n * @returns {Queue?}\n */\n /**\n * Listen to DisTubeVoice events and handle the Queue\n * @private\n * @param {Queue} queue Queue\n */\n #voiceEventHandler(queue: Queue) {\n queue._listeners = {\n disconnect: error => {\n queue.remove();\n this.emit(\"disconnect\", queue);\n if (error) this.emitError(error, queue.textChannel);\n },\n error: error => this.#handlePlayingError(queue, error),\n finish: () => this.#handleSongFinish(queue),\n };\n for (const event of Object.keys(queue._listeners) as (keyof DisTubeVoiceEvents)[]) {\n queue.voice.on(event, queue._listeners[event]);\n }\n }\n /**\n * Handle the queue when a Song finish\n * @private\n * @param {Queue} queue queue\n * @returns {Promise<void>}\n */\n async #handleSongFinish(queue: Queue): Promise<void> {\n this.emit(\"finishSong\", queue, queue.songs[0]);\n await queue._taskQueue.queuing();\n try {\n if (queue.stopped) return;\n if (queue.repeatMode === RepeatMode.QUEUE && !queue._prev) queue.songs.push(queue.songs[0]);\n if (queue._prev) {\n if (queue.repeatMode === RepeatMode.QUEUE) queue.songs.unshift(queue.songs.pop() as Song);\n else queue.songs.unshift(queue.previousSongs.pop() as Song);\n }\n if (queue.songs.length <= 1 && (queue._next || queue.repeatMode === RepeatMode.DISABLED)) {\n if (queue.autoplay) {\n try {\n await queue.addRelatedSong();\n } catch {\n this.emit(\"noRelated\", queue);\n }\n }\n if (queue.songs.length <= 1) {\n if (this.options.leaveOnFinish) queue.voice.leave();\n if (!queue.autoplay) this.emit(\"finish\", queue);\n queue.remove();\n return;\n }\n }\n const emitPlaySong = this.#emitPlaySong(queue);\n if (!queue._prev && (queue.repeatMode !== RepeatMode.SONG || queue._next)) {\n const prev = queue.songs.shift() as Song;\n delete prev.formats;\n delete prev.streamURL;\n if (this.options.savePreviousSongs) queue.previousSongs.push(prev);\n else queue.previousSongs.push({ id: prev.id } as Song);\n }\n queue._next = queue._prev = false;\n queue.beginTime = 0;\n const err = await this.playSong(queue);\n if (!err && emitPlaySong) this.emit(\"playSong\", queue, queue.songs[0]);\n } finally {\n queue._taskQueue.resolve();\n }\n }\n /**\n * Handle error while playing\n * @private\n * @param {Queue} queue queue\n * @param {Error} error error\n */\n #handlePlayingError(queue: Queue, error: Error) {\n const song = queue.songs.shift() as Song;\n try {\n error.name = \"PlayingError\";\n error.message = `${error.message}\\nId: ${song.id}\\nName: ${song.name}`;\n } catch {}\n this.emitError(error, queue.textChannel);\n if (queue.songs.length > 0) {\n this.playSong(queue).then(e => {\n if (!e) this.emit(\"playSong\", queue, queue.songs[0]);\n });\n } else {\n queue.stop();\n }\n }\n\n /**\n * Create a ytdl stream\n * @param {Queue} queue Queue\n * @returns {DisTubeStream}\n */\n createStream(queue: Queue): DisTubeStream {\n const { duration, formats, isLive, source, streamURL } = queue.songs[0];\n const ffmpegArgs = queue.filters.size ? [\"-af\", queue.filters.values.join(\",\")] : undefined;\n const seek = duration ? queue.beginTime : undefined;\n const streamOptions = { ffmpegArgs, seek, isLive };\n if (source === \"youtube\") return DisTubeStream.YouTube(formats, streamOptions);\n return DisTubeStream.DirectLink(streamURL as string, streamOptions);\n }\n\n /**\n * Play a song on voice connection\n * @private\n * @param {Queue} queue The guild queue\n * @returns {Promise<boolean>} error?\n */\n async playSong(queue: Queue): Promise<boolean> {\n if (!queue) return true;\n if (!queue.songs.length) {\n queue.stop();\n return true;\n }\n if (queue.stopped) return false;\n const song = queue.songs[0];\n try {\n const { url, source, formats, streamURL } = song;\n if (source === \"youtube\" && !formats) song._patchYouTube(await this.handler.getYouTubeInfo(url));\n if (source !== \"youtube\" && !streamURL) {\n for (const plugin of [...this.distube.extractorPlugins, ...this.distube.customPlugins]) {\n if (await plugin.validate(url)) {\n const info = [plugin.getStreamURL(url), plugin.getRelatedSongs(url)] as const;\n const result = await Promise.all(info);\n song.streamURL = result[0];\n song.related = result[1];\n break;\n }\n }\n }\n const stream = this.createStream(queue);\n queue.voice.play(stream);\n song.streamURL = stream.url;\n if (queue.stopped) queue.stop();\n else if (queue.paused) queue.voice.pause();\n return false;\n } catch (e: any) {\n this.#handlePlayingError(queue, e);\n return true;\n }\n }\n /**\n * Whether or not emit playSong event\n * @param {Queue} queue Queue\n * @private\n * @returns {boolean}\n */\n #emitPlaySong(queue: Queue): boolean {\n return (\n !this.options.emitNewSongOnly ||\n (queue.repeatMode === RepeatMode.SONG && queue._next) ||\n (queue.repeatMode !== RepeatMode.SONG && queue.songs[0]?.id !== queue.songs[1]?.id)\n );\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./BaseManager"), exports);
|
|
14
|
-
__exportStar(require("./GuildIdManager"), exports);
|
|
15
|
-
__exportStar(require("./QueueManager"), exports);
|
|
16
|
-
__exportStar(require("./FilterManager"), exports);
|
|
17
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/manager/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA8B;AAC9B,mDAAiC;AACjC,iDAA+B;AAC/B,kDAAgC","sourcesContent":["export * from \"./BaseManager\";\nexport * from \"./GuildIdManager\";\nexport * from \"./QueueManager\";\nexport * from \"./FilterManager\";\n"]}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { TypedEmitter } from "tiny-typed-emitter";
|
|
2
|
-
import type { DisTubeStream, DisTubeVoiceEvents, DisTubeVoiceManager } from "../..";
|
|
3
|
-
import type { AudioPlayer, AudioResource, VoiceConnection } from "@discordjs/voice";
|
|
4
|
-
import type { Snowflake, VoiceBasedChannel, VoiceState } from "discord.js";
|
|
5
|
-
export declare class DisTubeVoice extends TypedEmitter<DisTubeVoiceEvents> {
|
|
6
|
-
#private;
|
|
7
|
-
readonly id: Snowflake;
|
|
8
|
-
readonly voices: DisTubeVoiceManager;
|
|
9
|
-
readonly audioPlayer: AudioPlayer;
|
|
10
|
-
connection: VoiceConnection;
|
|
11
|
-
audioResource?: AudioResource;
|
|
12
|
-
emittedError: boolean;
|
|
13
|
-
isDisconnected: boolean;
|
|
14
|
-
constructor(voiceManager: DisTubeVoiceManager, channel: VoiceBasedChannel);
|
|
15
|
-
get channel(): VoiceBasedChannel;
|
|
16
|
-
set channel(channel: VoiceBasedChannel);
|
|
17
|
-
join(channel?: VoiceBasedChannel): Promise<DisTubeVoice>;
|
|
18
|
-
leave(error?: Error): void;
|
|
19
|
-
stop(force?: boolean): void;
|
|
20
|
-
play(stream: DisTubeStream): void;
|
|
21
|
-
set volume(volume: number);
|
|
22
|
-
get volume(): number;
|
|
23
|
-
get playbackDuration(): number;
|
|
24
|
-
pause(): void;
|
|
25
|
-
unpause(): void;
|
|
26
|
-
get selfDeaf(): boolean;
|
|
27
|
-
get selfMute(): boolean;
|
|
28
|
-
setSelfDeaf(selfDeaf: boolean): boolean;
|
|
29
|
-
setSelfMute(selfMute: boolean): boolean;
|
|
30
|
-
get voiceState(): VoiceState | undefined;
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=DisTubeVoice.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DisTubeVoice.d.ts","sourceRoot":"","sources":["../../../src/core/voice/DisTubeVoice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAUlD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK3E,qBAAa,YAAa,SAAQ,YAAY,CAAC,kBAAkB,CAAC;;IAChE,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,UAAU,EAAG,eAAe,CAAC;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,EAAG,OAAO,CAAC;IACvB,cAAc,UAAS;gBAGX,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAE,iBAAiB;IAqDzE,IAAI,OAAO,IAGU,iBAAiB,CADrC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,iBAAiB,EAQrC;IAaK,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAoB9D,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK;IAenB,IAAI,CAAC,KAAK,UAAQ;IAQlB,IAAI,CAAC,MAAM,EAAE,aAAa;IAe1B,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EASxB;IACD,IAAI,MAAM,IAVS,MAAM,CAYxB;IAKD,IAAI,gBAAgB,WAEnB;IACD,KAAK;IAGL,OAAO;IAOP,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAKD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAMD,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO;IAcvC,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO;IAavC,IAAI,UAAU,IAAI,UAAU,GAAG,SAAS,CAEvC;CACF"}
|